[РЕШЕНО]Не входит в chroot
# 4 года, 7 месяцев назад (отредактировано 4 года, 7 месяцев назад)
скопировал /bin/bash файл в /mnt/flashka/bin/bash
Хотел засадить систему на флешку через ‘chroot’, но выдает ошибку
не пойму, в чем проблема? вроде все по вики арча сходится, но результат пичален
# 4 года, 7 месяцев назад (отредактировано 4 года, 7 месяцев назад)
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.».
Если после этого остались вопросы, спрашивай.
этот ваш линакс даже не поддерживает локализацию
В том то и дело, что он пишет что /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
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 запустить другую программу внутри нового корня, просто добавив его в качестве параметра:
Обратите внимание, что путь к команде интерпретируется внутри вашего нового корня, поэтому в этом примере вызываемая программа фактически находится в /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 удалил арч.
Неужели проблема в файлах на системном разделе винды? Если да, то как же их убрать?
Источник