Під час спроби chroot я отримав цю помилку: "chroot: не вдалося запустити команду '/ bin / bash': помилка формату Exec"


20

Я дотримувався вказівок цього підручника HOWTO: Purge and Reinstall Grub 2 з Live CD , коли під час запуску команди я зіткнувся з помилкою на кроці 1

sudo chroot /mnt/temp

Помилка була така:

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

Звідки це походить? Як мені пройти?

Відповіді:


22

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

Якщо припустити, що ви змонтовані вашою системою для хроніки в / media / sda1 , для визначення архітектури ви можете:

ls /media/sda1/*

якщо ви бачите lib64 на виході, це, ймовірно, 64-бітна система


Це, але все ще не може
хротуватися

2

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

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

1

Помилка означає, що ваш jail ( /mnt/temp) не містить bash оболонки або не містить бібліотек, необхідних для запуску bash shell.

Якщо ви створили тюрму, використовуючи щось подібне:

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

Це повинно дати вам змогу успішно хронізувати, і в цей момент ви можете робити інші речі.

З цим робити близько мільйона речей, і майже напевно ви цього не хочете робити. Використовуйте minbase під час створення вашої в'язниці або встановіть ubuntu на порожню ціль (наприклад, віртуальну машину) та створіть архів дьогтю всієї системи, в яку потім декомпресуєте /mnt/temp.


0

Дійсно, це 64-бітна 32-бітова несумісність.

Хоча с

cp /bin/bash /mount/temp/tmp

(копіює 32-розрядний виконавець у новий корінь у tmpкаталозі

chroot /mount/temp /tmp/bash

chrootнормально, всі команди все одно виходять з ладу. Вам доведеться копіювати їх у всьому.


-1

У моєму випадку я намагався перейти на 64-бітну версію Linux, але мій поточний Linux був 32-розрядним.

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


Та сама відповідь, що і @ GrandOxymore.
Карл Ріхтер

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

-2

Я думаю, що це БУГ.

`/ bin / bash '

але не

'бін / баш'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.