Коли я запускаю 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каталогу . Переконайтесь, що ви вказали його на те, де (або інша оболонка) виконується в каталозі.bashchroot
Якщо ви /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