Во время попытки chroot я получил эту ошибку: «chroot: не удалось запустить команду / bin / bash»: ошибка формата Exec "

17

Я выполнял инструкции этого руководства HOWTO: очистка и переустановка Grub 2 с Live CD , когда Я обнаружил ошибку на шаге 1, когда я запустил команду

sudo chroot /mnt/temp

Ошибка была следующей:

chroot: failed to run command '/bin/bash': Exec format error

Откуда это? Как мне пройти?

    
задан Grand Oxymore 21.11.2010 в 11:29
источник

6 ответов

19

Убедитесь, что вы используете правильный Live CD. Например, убедитесь, что вы не используете 32-битный компакт-диск вместо 64-битного компакт-диска. Для запуска 64-битного кода требуется 64-битное ядро, поэтому проверьте свою архитектуру.

Предполагая, что вы подключили свою систему к chrooted в / media / sda1 , чтобы определить архитектуру, которую вы можете:

ls /media/sda1/*

, если вы видите lib64 в выводе, это, вероятно, 64-битная система

    
ответ дан Grand Oxymore 21.11.2010 в 11:30
1

Ошибка означает, что ваша тюрьма ( /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 .

    
ответ дан Doug 19.04.2011 в 04:26
1

У меня была такая же проблема при создании изображения арки арфы. Мне пришлось установить qemu-user-static , а затем скопировать его в папку chroot bin.

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
    
ответ дан Ismail Moukafih 30.11.2016 в 10:31
0

Действительно, это 64-разрядная 32-разрядная несовместимость.

Хотя

cp /bin/bash /mount/temp/tmp

(копирует 32-битный exec в новый корень в каталоге tmp

chroot /mount/temp /tmp/bash

chroot в порядке, все команды все равно терпят неудачу. Вам придется копировать их по всему.

    
ответ дан cosine 10.11.2014 в 21:13
-1

В моем случае, я пытался chroot в 64-битную версию Linux, но мой текущий Linux был 32-разрядным.

Я установил образ диска (главное изображение, для репликации на нескольких машинах).     

ответ дан azuer88 02.03.2016 в 06:41
-2

Я думаю, что это BUG.

'/ бен / Баш'

, но не

'бен / Баш'

    
ответ дан weakdancer 18.01.2011 в 07:37