Я следовал этой инструкции о том, как создать live CD моей текущей установки Ubuntu 14.04. Когда я пытаюсь запустить sudo chroot ${WORK}/rootfs /bin/bash
, где WORK=/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
Я искал в Интернете , но, к сожалению, использование «нет такого файла или каталога» приводит к появлению большого количества постов
edit:
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
Update
Thank Вы все за помощь и предоставленную информацию. К сожалению, я мог выполнить эту задачу. Похоже, что решение должно было создать виртуальный диск (как предложено Джермаром). Сделал это и сделал весь процесс с самого начала. но когда мне пришлось apt-get while chroot, я получал сообщения о том, что он не может подключиться к сайту ppa. пытаясь это исправить с помощью некоторых вещей, найденных в интернете, виртуальная машина перестала работать и теперь вообще не загружается! Я предполагаю, что лучший способ создать live cd из установки Ubuntu на жесткий диск - это на самом деле иметь Ubuntu на жестком диске, а не на какой-либо виртуальной машине.
Еще раз спасибо (не уверен, должен ли я удалить это или нет, но я сохраню это для дальнейшего использования)
errno
коды иногда не очень конкретны. А также возможно означая, что определенный файл под рукой (/bin/bash
) не существует, при выполнении программы "Никакой такой файл или каталог" (ENOENT
) может также означать, что его интерпретатор ELF не существует, или что одна из общих библиотек, в которых он нуждается, не существует. Я подозреваю это /lib
или /lib64
в chroot среде Вы создаете, повреждается так или иначе, возможно, потому что символьные ссылки указывают на неправильные места.
Попробовать 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
). Повторитесь для различных путей к библиотеке под /lib
перечисленный в выводе ldd
пока Вы не находите вещь, это на самом деле отсутствует в контексте chroot.