Во время попытки chroot я получил эту ошибку: "chroot: не удалось выполнить команду '/bin/bash': ошибка формата Exec"
Я следовал инструкциям этого руководства HOWTO: Очистите и переустановите Grub 2 с Live CD, когда я обнаружил ошибку на шаге 1, когда запускал команду
sudo chroot /mnt/temp
Ошибка была следующей:
chroot: failed to run command `/bin/bash': Exec format error
Откуда это? Как мне пройти?
7 ответов
Убедитесь, что вы используете правильный Live CD. Например, убедитесь, что вы не используете 32-битный CD вместо 64-битного CD. Вам нужно 64-битное ядро для запуска 64-битного кода, поэтому проверьте свою архитектуру.
Предполагая, что вы смонтировали систему для привязки к папке / media / sda1, определить архитектуру вы можете:
ls /media/sda1/*
если вы видите lib64 в выводе, это, вероятно, 64-битная система
У меня была такая же проблема при создании образа для арки. Я должен был установить qemu-user-static
а затем скопируйте его в папку chroot bin.
sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
Ошибка означает, что ваша тюрьма (/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
,
В моем случае я использовал новую установку виртуальной машины Linux в качестве хоста дляchroot
, Эта виртуальная машина не имелаqemu
иbinfmt
пакеты установлены. Ошибка:chroot: failed to run command /bin/bash: Exec format error
решено установить следующие пакеты:
-
sudo apt install qemu-user-static
-
sudo apt install binfmt-support
Просто чтобы уточнить: виртуальная машина Linux использовалаubuntu-20.04
,x86_64
и чтобы быть chrooted система былаarmhf
т.е.32-bit
система.
Действительно, это 64-разрядная 32-разрядная несовместимость.
Хотя с
cp /bin/bash /mount/temp/tmp
(копирует 32-битный exec в новый корень в tmp
каталог
chroot /mount/temp /tmp/bash
chroot
все в порядке, все команды по-прежнему не работают. Вы должны будете скопировать их во всем.
В моем случае я пытался подключиться к 64-битной версии Linux, но мой текущий Linux был 32-битным.
Я смонтировал образ диска (основной образ, для репликации на нескольких машинах).