chroot
Komutu çalıştırdığımda bir hata verildi:
failed to run command ‘/bin/bash’: No such file or directory
chroot
Komutu ç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 .bash
chroot
Eğer öyleyse, /mnt/somedir/usr/bin/bash
yürütchroot /mnt/somedir /usr/bin/bash
/root/.bashrc
veya /root/.bash_profile
iç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/bash
elbette libc, ld-linux, libdl vs.'ye bağlıdır, ldd /bin/bash
hangi kütüphaneleri gerektirdiğini görmek için kullanabilirsiniz .
1) mount -o bind
Bu 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
$SHELL
ortam 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/jail
dü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