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


20

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

sudo chroot /mnt/temp

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

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

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

Ответы:


22

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

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

ls /media/sda1/*

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


Это - но все еще не может chroot
Starx

2

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

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin

1

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


0

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

Хотя с

cp /bin/bash /mount/temp/tmp

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

chroot /mount/temp /tmp/bash

chrootвсе в порядке, все команды по-прежнему не работают. Вы должны будете скопировать их во всем.


-1

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

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


Тот же ответ, что и у @ GrandOxymore выше.
Карл Рихтер

@KarlRichter Похоже, но не то же самое. Запуск 32-битной программы в 64-битной ОС - это не то же самое, что запуск 32-битной программы в 64-битной виртуальной среде (или ОС). Я мог бы запустить 32-битную гостевую ОС, и она бы работала нормально.
azuer88

-2

Я думаю, что это ошибка.

`/ Bin / баш»

но нет

«Бен / Баш»

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.