Коли я запускаю chroot
команду, видається помилка:
failed to run command ‘/bin/bash’: No such file or directory
Коли я запускаю chroot
команду, видається помилка:
failed to run command ‘/bin/bash’: No such file or directory
Відповіді:
Ця помилка означає, що в chroot немає /bin/bash
каталогу . Переконайтесь, що ви вказали його на те, де (або інша оболонка) виконується в каталозі.bash
chroot
Якщо ви /mnt/somedir/usr/bin/bash
тоді виконаєтеchroot /mnt/somedir /usr/bin/bash
/root/.bashrc
або /root/.bash_profile
у вашому chroot
. Чи можете ви тимчасово перейменувати ці файли? Ви також можете переконатися, що bash
виконується ( chmod +x /chroot/bin/bash
)?
Я мав /bin/bash
всередині хронізованого каталогу, але у мене не було / lib та / lib64. Повідомлення від chroot може бути більш описовим. "немає такого файлу чи каталогу" насправді означає "я не можу це запустити ...".
/bin/bash
звичайно залежить від libc, ld-linux, libdl тощо. Ви можете використовувати, ldd /bin/bash
щоб побачити, які бібліотеки йому потрібні.
1) Ви можете використовувати mount -o bind
ці каталоги під chroot 2) Або ви можете скопіювати ці бібліотеки в chroot, якщо ви не довіряєте chrooted env, щоб не пошкодити їх, наприклад:
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot
намагається запустити оболонку, встановлену у вашій $SHELL
змінній оточення за замовчуванням, але вона шукає її у вашому новому кореневому режимі, який, здається, не містить /bin/bash
, тому не може запуститися.
Ви можете сказати chroot запустити іншу програму всередині нового кореня, просто додавши його як параметр:
chroot /your/new/root /bin/foo --options...
Зауважте, що шлях команди інтерпретується всередині вашого нового кореня, тому в цьому прикладі фактично називається програма/your/new/root/bin/foo
Я отримував таку ж помилку, коли намагався передати ssh до облікового запису на віддаленому сервері. У моєму випадку мені було відсутнє наступний файл у віддаленій директорії lib64. Сервер - Centos6.9
ld-linux-x86-64.so.2
Це було виправлено шляхом виконання наступного:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jail
виправлення, мені було потрібно щось і від lib, і від lib64, і я не намагався зрозуміти, що саме. (напевно, тому, що у мене був включений
Якщо ви робите перехресну компіляцію, вам потрібно використовувати симулятор qemu, який може запускати / mnt / somedir / bin / bash, коли ви копіюєте qemu-arm-static (я це роблю для armhf) в / mnt / somedir / usr / бін ви зможете зробити chroot.
Перевірте це, щоб отримати докладнішу інформацію: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html