Linux chroot no such file or directory

[РЕШЕНО]Не входит в chroot

# 4 года, 7 месяцев назад (отредактировано 4 года, 7 месяцев назад) имеется арч, i3wm. Смонтировал псевдосистемы командами:
скопировал /bin/bash файл в /mnt/flashka/bin/bash

Хотел засадить систему на флешку через ‘chroot’, но выдает ошибку
не пойму, в чем проблема? вроде все по вики арча сходится, но результат пичален

# 4 года, 7 месяцев назад (отредактировано 4 года, 7 месяцев назад)

ну так и укажи в chroot полный путь

safocl
скопировал /bin/bash файл в /mnt/flashka/bin/bash

Не знаю, где здесь хоть что-то «по вики арча сходится». Не стоит выдергивать из контекста отдельные абзацы и команды. Если делаете по инструкции, делайте все от и до. Читайте и перечитывайте, пока не придет просветление.
Вот, например, известно ли вам, что одного /bin/bash недостаточно, что бы запустить этот самый bash?
Подсказака:

warlock9000
ну так и укажи в chroot полный путь

# 4 года, 7 месяцев назад (отредактировано 4 года, 7 месяцев назад)

kurych
Вот, например, известно ли вам, что одного /bin/bash недостаточно, что бы запустить этот самый bash?

safocl
да енто я уже понял.
в общем уже подсказали чо в пустую папку не особо получится

Все действия с системой, должны идти от понимания смысла команд и происходящих процессов. chroot — это процедура смена уровня корневого каталога. После чрут система в упор не видит каталоги, которые расположены уровнем выше каталога указанного при чрут. Соответсвенно, биндинг виртуальной файловой системы осуществляется для того, чтобы она была доступна для той системы куда происходит чрут.

Вот тут некоторые мысли о чрут в менее путанном виде.

Источник

Не работает chroot

Здравствуйте! Проблема такая: пытаюсь сделать свою загрузочную систему. Использую мануал, расположенный по этой ссылке: http://www.slitaz.org/en/doc/scratchbook/base-system.html

Проблема возникла при выполнении команды: chroot . /bin/ash Ошибка: chroot: failed to run command ‘/bin/bash’: No such file or directory.

Перепробовал множество решений, которые предлагались по результатам поиска в гугле, но без результата. Может кто знает, как решить проблему. Помогите пожалуйста. Заранее спасибо.

ОС: CentOS 6.3 x86_64

Перепробовал множество решений

Читать, а в особенности переводить сообщение которое выводится пробовал?

Может кто знает, как решить проблему.

Воспользуйся любым онлайн переводчиком и переведи: «No such file or directory.».

Читайте также:  How to build windows apps

Если после этого остались вопросы, спрашивай.

этот ваш линакс даже не поддерживает локализацию

В том то и дело, что он пишет что /bin/bash нет, хотя есть в системе.

Вы читали что такое chroot? Если вы вводите

Да. Поэтому я скопировал sh, bash и их либы в папку lib и bin соответственно.

Вот содержания попки rootfs, куда я пытаюсь чирутить:

В bin есть bash? bash случаем не является ссылкой?

Ну и просто так копировать нельзя, ведь бинарник может быть динамическим, а не статическим, если не понятно в чём разница сходите хотя бы на wikipedia.

например /lib*/ld*.so* не скопировал, пытаешься запускать x86_64 на i386 ядре или рвздел смонтирован с noexec

Источник

chroot ругается на отсутствие присутствующего файла

Я чего-то недопонимаю, видимо? Подскажите, что не так.

а sh не линк случаем?

нет, я скопировал

Работает! Сейчас попробовал под strace запустить свою chroot box/bin/bash, чтобы понять, смог ли бы я сам найти проблему, но понятнее не стало:

Спасибо за помощь!

Согласен, но я их и не путал. В выхлопе strace, я так думал, должна быть какая-то информация о том, какие конкретно проблемы возникают, ясно же, что не может быть no such file of directory, если файл есть. Но в выхлопе strace я не увидел ничего, что могло бы подтолкнуть меня к решению, предложенному io

Из текста выше ясно, что execve нетривиальный вызов. Он сам что-то открывает, запускает и т.п. И так как это все происходит за пределами user-кода, то strace показывать не обязан. Однако ничто не мешает воспользоваться последней соломинкой: «если ничего не помогает, таки прочти документацию». Для «man execve», в частности, имеем:

Для «man 8 ld.so» имеем:

Ну и остается понять как же работает ldd. Оставляю как упражнение.

Если ты не способен к самообучению, то просто возьми один из скриптов, которые строят чрут. Они исп. ldd и копируют сам бинарник + все нужные ему библиотеки, а так же минимально необходимый набор файлов /etc

jailer — Builds and maintains chrooted environments

makejail — Automatically create chroot jails for programs

Читайте также:  Windows server 2019 wsus проблемы

schroot — Execute commands in a chroot environment

jailtool — tool to build chroot-jails for daemons

linux-user-chroot — setuid helper for making bind mounts and chrooting

Да, документация — это хорошо. Особенно интересно читать про низкий уровень.

Ваш ответ, кстати, помог мне решить задачу, с которой я изначально этот тред не связывал.

Был сервер с Сentos5 и initrd, который падал в панику при загрузке. Хотелось посмотреть изнутри initrd, что происходит, но вызов /bin/bash, всунутого в перепакованный initrd, ничего не давал. Когда я скопировал в initrd также нужные динамические библиотеки, bash запустился, и я смог понять, что поехали имена md-шных массивов (из-за того, что каким-то образом система стала опредалять кусочки одного массива как кусочки разных), и initrd пытался цеплять не тот массив. Исправил ошибки, всё заработало.

Спасибо ещё раз за просвещение, полезный ресурс. )

Источник

chroot: не удалось запустить команду ‘/ bin / bash’: нет такого файла или каталога

Когда я запускаю chroot команду, выдается ошибка:

Эта ошибка означает, что внутри chroot нет /bin/bash каталога . Убедитесь, что вы указали, где (или другой оболочкой) исполняемый файл находится в каталоге. bash chroot

Если у вас есть, /mnt/somedir/usr/bin/bash то выполните chroot /mnt/somedir /usr/bin/bash

/ DebianArm $ sudo chmod + x rootfs / bin / bash. aspade @ home-ba:

/ DebianArm $ sudo chroot rootfs. chroot: не удалось выполнить команду ‘/ bin / bash’: нет такого файла или каталога

Я имел /bin/bash внутри chrooted каталог, но у меня не было / lib и / lib64 внутри него. Сообщение от chroot может быть более наглядным. «нет такого файла или каталога» действительно означает «я не могу запустить это . ».

/bin/bash зависит, конечно, от libc, ld-linux, libdl и т. д., вы можете использовать, ldd /bin/bash чтобы увидеть, какие библиотеки ему требуются.

1) Вы можете mount -o bind эти каталоги в chroot 2) Или вы можете скопировать эти библиотеки в chroot, если вы не доверяете chrooted env, чтобы не повредить их, вот так:

chroot пытается запустить оболочку, установленную в $SHELL переменной среды по умолчанию, но ищет ее в новом корневом каталоге, который, похоже, не содержит /bin/bash , поэтому не может запуститься.

Вы можете указать chroot запустить другую программу внутри нового корня, просто добавив его в качестве параметра:

Читайте также:  Xerox phaser 3160 драйвер для windows

Обратите внимание, что путь к команде интерпретируется внутри вашего нового корня, поэтому в этом примере вызываемая программа фактически находится в /your/new/root/bin/foo

Источник

[РЕШЕНО] «arch-chroot /mnt» error

# 2 года, 11 месяцев назад (отредактировано 2 года, 11 месяцев назад) Добрый день.
Решил установить себе второй осью арч на xiaomi air.
Столкнулся со следующей проблемой (пункт #9)

1. Проверил режим EFI.
2. Подключился к интернету
3. Провел синхронизацию системных часов
4. Разметил диск с помощью cfdisk.
5. Произвел форматирование и подключение:
#root
mkfs.ext4 /dev/sda5 -L «ARCH»
mount /dev/sda5 /mnt

#boot
mkdir -p /mnt/boot
mount /dev/sda2 /mnt/boot

#swap
mkswap /dev/sda6
swapon /dev/sda6

6.Обновил пакеты
pacman -Syy
7.Установил базовую систему и пакет для будущего использования AUR.
pacstrap /mnt base base-devel
8. Генерирую fstab
genfstab -L -p -P /mnt >> /mnt/etc/fstab

(. )9. Пытаюсь перейти в систему
arch-chroot /mnt
и-и-и.. «chroot: failed to run command /bin/bash: No such file or directory»

Собственно, в первый раз установка завершилась некорректно (умерла батарея).
Возможно, проблема в этом.

Читал подобные темы — в них люди пропускали те или иные пункты установки, что решалось банальным следованием инструкции.
Аналогично пробовал листать маны по расформатированию (особых успехов не принесло).

Собственно, прошу помощи в решении проблемы или указании на возможные причины моих ошибок.

UPD:
pacstrap /mnt/ base base-devel скачивает все пакеты, проверяет, после чего выдает ошибку.
error: failed to commit transaction (conflicting files)
amd-ucode: /mnt/boot/amd-ucode.img exists in filesystem.
linux: /mnt/boot/vmlinuz-linux exists in filesystem

P.S. Ставлю Арч вместе с виндой (диск разбивал), в качестве boot — sda2 указывал раздел системный, общий с виндой.
Так понимаю, где-то там остались не удаленные файлы.
Есть ли рекомендации, как попасть в EFI System винды, под который отдельно выделено 100 мб и вычистить файлы с первой неудачной установки?
P.P.S. Устанавливал бут менеджер в первый «неудачный» раз:
pacman -S efibootmgr iw wpa_supplicant dialog
bootctl install
pacman -S intel-ucode
nano /boot/loader/entries/arch.conf
и в нем отредкатировал на
«title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/sda5 rw»

После неудачной установки и попыток новой первым делом в последовательности запуска системы efibootmgr удалил арч.
Неужели проблема в файлах на системном разделе винды? Если да, то как же их убрать?

Источник

Оцените статью