‘/bin/bash’:没有这样的文件或目录

‘/bin/bash’:没有这样的文件或目录

我一直在关注这些关于如何创建我当前安装的 ubuntu 14.04 的实时 CD 的说明。当我尝试运行sudo chroot ${WORK}/rootfs /bin/bashwhereWORK=/some/dir/that/REALLY/exist

我收到错误,bin/bash 不是文件或目录。我可以 ls /bin 并看到一个名为 bash 的文件,但无法打开它,告诉我它不是文本文件(有道理)。

none@none-ubuntu:/$ sudo chroot ${WORK}/rootfs /bin/bash
chroot: failed to run command ‘/bin/bash’: No such file or directory

bash 文件在那里,因为我可以在 ls 上看到它

none@none-ubuntu:/$ ls /bin
bash                  fgconsole   nc                       sed
bunzip2               fgrep       nc.openbsd               setfacl
...(lot more files here)......

因为我被问及权限问题

none@none-ubuntu:/$ ls -l /bin
total 9880
-rwxr-xr-x 1 root root 1017016 Απρ  24  2014 bash
-rwxr-xr-x 1 root root   31152 Οκτ  21  2013 bunzip2
-rwxr-xr-x 1 root root 1918032 Νοέ  14  2013 busybox

我一直在网上搜索,但不幸的是,使用“没有这样的文件或目录”会出现很多不相关的帖子

编辑:

none@none-ubuntu:/$ ls -l ${WORK}/rootfs/bin
total 9866
-rwxrwx--- 1 root vboxsf 1017016 Απρ  24  2014 bash
-rwxrwx--- 1 root vboxsf   31152 Οκτ  21  2013 bunzip2


 none@none-ubuntu:/$ ldd ${WORK}/rootfs/bin/bash
 linux-vdso.so.1 =>  (0x00007fff183fe000)
 libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f4569d8e000)
 libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4569b8a000)
 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f45697c4000)
 /lib64/ld-linux-x86-64.so.2 (0x00007f4569fce000)

none@none-ubuntu:/$ ls -l ${WORK}/rootfs/lib
total 304
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 apparmor
drwxrwx--- 1 root vboxsf  8192 Ιούλ 23  2014 brltty
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 crda
drwxrwx--- 1 root vboxsf 36864 Ιούλ 23  2014 firmware
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 hdparm
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 ifupdown
drwxrwx--- 1 root vboxsf  4096 Ιούλ 23  2014 init
-rwxrwx--- 1 root vboxsf 71512 Δεκ  24  2013 klibc-P2s_k-gf23VtrGgO2_4pGkQgwMY.so
-rwxrwx--- 1 root vboxsf 27392 Ιαν   9  2014 libip4tc.so.0.1.0
-rwxrwx--- 1 root vboxsf 31520 Ιαν   9  2014 libip6tc.so.0.1.0
-rwxrwx--- 1 root vboxsf  5816 Ιαν   9  2014 libiptc.so.0.0.0
-rwxrwx--- 1 root vboxsf 47712 Ιαν   9  2014 libxtables.so.10.0.0
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 linux-sound-base
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 lsb
drwxrwx--- 1 root vboxsf     0 Απρ  10  2014 modprobe.d
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 modules
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 modules-load.d
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 plymouth
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 recovery-mode
drwxrwx--- 1 root vboxsf     0 Ιούλ 23  2014 resolvconf
drwxrwx--- 1 root vboxsf  4096 Ιούλ 23  2014 systemd
drwxrwx--- 1 root vboxsf  4096 Μάρ  22  2014 terminfo
drwxrwx--- 1 root vboxsf  4096 Ιούν  2 13:10 udev
drwxrwx--- 1 root vboxsf  4096 Ιούλ 23  2014 ufw
drwxrwx--- 1 root vboxsf 28672 Ιούν  7 22:08 x86_64-linux-gnu
drwxrwx--- 1 root vboxsf 24576 Ιούλ 23  2014 xtables

更新

感谢大家提供的帮助和信息。不幸的是,我无法完成这项任务。看来解决方案必须是创建一个虚拟驱动器(如 Germar 所建议的)。这样做并从头开始完成整个过程。但是当我在 chroot 时必须使用 apt-get 时,我收到错误消息,说它无法连接到 ppa 站点。当我尝试使用在互联网上找到的一些东西来修复该问题时,VM 停止工作,现在根本无法启动!我猜从硬盘驱动器上的 ubuntu 安装创建 live cd 的最佳方法是将 ubuntu 实际安装在硬盘驱动器上,而不是在某些 VM 上。

再次感谢(不确定是否应该删除它,但我会保留它以供将来参考)

答案1

errno代码有时并不十分具体。除了可能表示手头的特定文件 ( /bin/bash) 不存在之外,在执行程序时,“没有这样的文件或目录”( ENOENT) 也可能表示其 ELF 解释器不存在,或者其所需的共享库之一不存在。我怀疑您正在构建的 chroot 环境内部/lib/lib64内部以某种方式损坏,可能是因为符号链接指向了错误的位置。

尝试ls -l $WORK/lib64/ld-linux-x86-64.so.2,如果它报告符号链接,则同样尝试该符号链接的目标,除了相对于$WORK(因此,如果ls说链接指向/lib/x86_64-linux-gnu/ld-2.19.so,那么你将运行)。对输出中列出的ls -l $WORK/lib/x86_64-linux-gnu/ld-2.19.so各种库路径重复上述操作,直到找到 chroot 上下文中实际缺少的东西。/libldd

相关内容