Ketika saya menjalankan chroot
perintah kesalahan diberikan:
failed to run command ‘/bin/bash’: No such file or directory
executable
chroot
USER3254789
sumber
sumber
Jawaban:
Kesalahan ini berarti bahwa tidak ada
/bin/bash
direktori di dalam chroot . Pastikan Anda mengarahkannya ke tempatbash
(atau shell lain) yang dapat dieksekusi ada dichroot
direktori.Jika sudah
/mnt/somedir/usr/bin/bash
maka jalankanchroot /mnt/somedir /usr/bin/bash
sumber
/root/.bashrc
atau/root/.bash_profile
dichroot
. Bisakah Anda mengubah nama sementara file-file ini? Anda juga dapat memastikan bahwabash
itu dapat dieksekusi (chmod +x /chroot/bin/bash
)?Saya memiliki
/bin/bash
di dalam direktori chroot, tetapi saya tidak memiliki / lib dan / lib64 di dalamnya. Pesan dari chroot bisa lebih deskriptif. "Tidak ada file atau direktori" yang benar-benar berarti "Saya tidak bisa menjalankan ini ..."./bin/bash
tentu saja tergantung pada libc, ld-linux, libdl dll., Anda dapat menggunakanldd /bin/bash
untuk melihat perpustakaan mana yang dibutuhkan.1) Anda dapat
mount -o bind
direktori ini di bawah chroot 2) Atau Anda dapat menyalin perpustakaan ini ke chroot, jika Anda tidak percaya enro chroot untuk tidak merusaknya, seperti:sumber
chroot
mencoba untuk memulai shell yang diatur dalam$SHELL
variabel lingkungan Anda secara default, tetapi mencari di dir root baru Anda, yang tampaknya tidak mengandung/bin/bash
, sehingga tidak dapat memulai.Anda dapat memberi tahu chroot untuk memulai program lain di dalam root baru dengan hanya menambahkannya sebagai parameter:
Perhatikan bahwa lintasan perintah ditafsirkan di dalam root baru Anda, jadi dalam contoh ini program yang dipanggil sebenarnya di
/your/new/root/bin/foo
sumber
Saya mendapatkan kesalahan yang sama ketika mencoba ssh ke akun chroot di server jauh. Dalam kasus saya, saya kehilangan file berikut di direktori lib64 jarak jauh. Server adalah Centos6.9
Itu diperbaiki dengan mengeksekusi berikut:
sumber
cp -r /lib /lib64 /secure/jail
memperbaikinya, saya butuh sesuatu dari lib dan lib64, dan saya tidak repot-repot mencari tahu apa. (mungkin karena saya mengaktifkan multiarch)Anda perlu menjalankan ldd terhadap bash
ldd $(which bash)
, maka Anda mungkin menemukan ketergantungan yang hilang, misalnya jika Anda tidak memasang / menyalin lib64, untuk 64 sistem, itu akan melalui kesalahan ini.sumber
Jika Anda melakukan kompilasi silang, Anda perlu menggunakan simulator qemu yang dapat menjalankan / mnt / somedir / bin / bash setelah Anda menyalin qemu-arm-static (saya melakukan ini untuk armhf) ke / mnt / somedir / usr / bin Anda dapat melakukan chroot.
Lihat ini untuk lebih jelasnya: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html
sumber