chrootKomutu çalıştırdığımda bir hata verildi:
failed to run command ‘/bin/bash’: No such file or directory
chrootKomutu çalıştırdığımda bir hata verildi:
failed to run command ‘/bin/bash’: No such file or directory
Yanıtlar:
Bu hata, chroot içinde bir/bin/bash dizin olmadığı anlamına gelir . Çalıştırılabilir dizinin (veya diğer kabuğun) çalıştırılabildiği dizine yönlendirdiğinizden emin olun .bashchroot
Eğer öyleyse, /mnt/somedir/usr/bin/bashyürütchroot /mnt/somedir /usr/bin/bash
/root/.bashrcveya /root/.bash_profileiçindeki bazı başarısız komutlardan / satırlardan kaynaklanıyor olabilir chroot. Bu dosyaları geçici olarak yeniden adlandırabilir misiniz? Ayrıca bashçalıştırılabilir ( chmod +x /chroot/bin/bash) olduğundan emin olabilir misiniz ?
/bin/bashİçinde chrooted bulunan bir dizin vardı ama içinde / lib ve / lib64 yoktu. Chroot'tan gelen mesaj daha açıklayıcı olabilir. msgstr "böyle bir dosya veya dizin" gerçekten "bunu çalıştıramam ..." anlamına geliyor.
/bin/bashelbette libc, ld-linux, libdl vs.'ye bağlıdır, ldd /bin/bashhangi kütüphaneleri gerektirdiğini görmek için kullanabilirsiniz .
1) mount -o bindBu dizinleri chroot altında yapabilirsiniz 2) Veya chrooted env'ye onları bozmamaya güvenmiyorsanız, bu kütüphaneleri chroot'a kopyalayabilirsiniz.
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot$SHELLortam değişkeninizde ayarlanan kabuğu varsayılan olarak başlatmaya çalışır , ancak içerdiği görülmeyen yeni kök dizininizde arar /bin/bash, bu nedenle başlayamaz.
Chroot'a, yeni root içerisinde başka bir program başlatmasını sadece parametre olarak ekleyerek söyleyebilirsiniz:
chroot /your/new/root /bin/foo --options...
Komutun yolunun yeni kökünüzün içinde yorumlandığını unutmayın, bu nedenle bu örnekte çağrılan program aslında/your/new/root/bin/foo
Uzak bir sunucudaki chrooted bir hesaba ssh yapmaya çalışırken de aynı hatayı alıyordum. Benim durumumda, uzak lib64 dizininde bulunan aşağıdaki dosyayı özlüyordum. Sunucu Centos6.9
ld-linux-x86-64.so.2
Aşağıdakileri çalıştırarak düzeltildi:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jaildüzelmedi , ama düzelttikten sonra hem lib hem de lib64'ten bir şeye ihtiyacım vardı ve tam olarak ne olduğunu bulmak için uğraşmadım. (muhtemelen multiarch'ı etkinleştirdiğim için)
Eğer bir çapraz derleme yapıyorsanız, qemu-arm-static'ı (mhf için yapıyorum) / mnt / somedir / usr içine kopyaladığınızda / mnt / somedir / bin / bash komutunu çalıştırabilen qemu simülatörünü kullanmanız gerekir. / bin chroot yapmak mümkün olacak.
Daha fazla bilgi için bunu göz atın: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html