Я следовал инструкциям этого урока HOWTO: Очистить и переустановить Grub 2 с Live CD , когда я обнаружил ошибку на шаге 1 при запуске команды
sudo chroot /mnt/temp
[ 114] Ошибка была следующей:
chroot: failed to run command `/bin/bash': Exec format error
Откуда это взялось? Как мне пройти?
Убедитесь, что вы используете правильный Live CD. Например, проверьте, что Вы используете не 32-битный CD, а 64-битный. Для запуска 64-битного кода необходимо 64-битное ядро, поэтому проверьте свою архитектуру.
Предполагая, что вы смонтировали свою систему для chrooted в /media/sda1, для определения архитектуры можно:
ls /media/sda1/*
если вы видите lib64 в выводе, то это, вероятно, 64-битная система
Действительно, это 64-битная 32-битная несовместимость.
Хотя с
cp /bin/bash /mount/temp/tmp
(копирует 32-битный exec в новый корень в tmp
каталог
chroot /mount/temp /tmp/bash
chroot
в порядке, все команды по-прежнему не работают. Вам придется скопировать их все.
В моем случае я пытался выполнить chroot в 64-битной версии Linux, но мой текущий Linux был 32-битным.
Я смонтировал образ диска (главный образ, для репликации на несколько машин).
Ошибка означает, что ваша тюрьма (/mnt/temp
) не содержит оболочки bash или библиотек, необходимых для запуска оболочки bash.
Если вы создали свою тюрьму, используя нечто подобное:
debootstrap --variant=buildd --arch i386 lucid /mnt/temp \
http://archive.ubuntu.com/ubuntu/
Скорее всего, вы хотели сделать это вместо:
debootstrap --variant=minbase --arch i386 lucid /mnt/temp \
http://archive.ubuntu.com/ubuntu/
Однако, в качестве технического ответа на вашу проблему, попробуйте:
cp -r /bin /lib /mnt/temp
Это должно позволить вам успешно работать в chroot, В этот момент вы можете делать и другие вещи.
Хотя в этом есть около миллиона неправильных вещей, и почти наверняка вы не захотите этого делать. Используйте minbase, когда создаёте свою тюрьму, или установите ubuntu на пустую цель (например, виртуальную машину) и создайте tar-архив всей системы, который затем распакуйте в /mnt/temp
.
У меня была такая же проблема при создании образа для armhf arch.Мне пришлось установить qemu-user-static
, а затем скопировать его в папку chroot bin.
sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
Я думаю, что это BUG.
`/bin/bash'
, но не
'bin/bash'