当我运行chroot
命令时,出现错误:
failed to run command ‘/bin/bash’: No such file or directory
当我运行chroot
命令时,出现错误:
failed to run command ‘/bin/bash’: No such file or directory
Answers:
此错误意味着chroot中没有/bin/bash
目录。确保将其指向目录中(或其他Shell的)可执行文件的位置。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
在chrooted目录中,但是里面没有/ lib和/ lib64。chroot发出的消息可能更具描述性。“没有这样的文件或目录”实际上意味着“我无法运行此文件...”。
/bin/bash
当然取决于libc,ld-linux,libdl等,您可以ldd /bin/bash
用来查看它需要哪些库。
1)您可以mount -o bind
在chroot下使用这些目录2)或者,如果您不信任chroot的env不会破坏它们,则可以将这些库复制到chroot,例如:
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot
尝试启动$SHELL
默认情况下在环境变量中设置的外壳程序,但它将在新的根目录(看起来似乎不包含)中查找它/bin/bash
,因此无法启动。
您可以通过简单地将chroot添加为参数来告诉chroot在新的root内部启动另一个程序:
chroot /your/new/root /bin/foo --options...
请注意,命令的路径在新的根目录下解释,因此在此示例中,被调用的程序实际上位于/your/new/root/bin/foo
尝试SSH到远程服务器上的chroot帐户时,出现了相同的错误。就我而言,我在远程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模拟器,一旦将qemu-arm-static(我正在为armhf执行此操作)复制到/ mnt / somedir / usr中,它就可以运行/ mnt / somedir / bin / bash / bin,您将可以执行chroot。
签出更多详细信息:https : //blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html