web-dev-qa-db-fra.com

Lors d'une tentative de chroot, j'ai eu cette erreur: "chroot: impossible d'exécuter la commande '/ bin / bash': erreur de format Exec"

Je suivais les instructions de ce tutoriel HOWTO: Purger et réinstaller Grub 2 à partir du Live CD , quand j'ai rencontré une erreur à l'étape 1 en lançant la commande

Sudo chroot /mnt/temp

L'erreur était la suivante:

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

D'où ça vient? Comment puis-je passer?

19
Grand Oxymore

Vérifiez que vous utilisez le bon Live CD. Par exemple, vérifiez que vous n'utilisez pas un CD 32 bits au lieu d'un CD 64 bits. Vous avez besoin d'un noyau 64 bits pour exécuter du code 64 bits, alors vérifiez votre architecture.

En supposant que votre système soit monté sur / media/sda1, pour déterminer l'architecture, vous pouvez:

ls /media/sda1/*

si vous voyez lib64 dans la sortie, il s'agit probablement d'un système 64 bits

21
Grand Oxymore

J'ai eu le même problème lors de la création d'une image pour Armhf Arch. Je devais installer qemu-user-static puis le copier dans le dossier chroot bin.

Sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
1
Ismail Moukafih

L'erreur signifie que votre jail (/mnt/temp) ne contient pas de shell bash ou ne contient pas les bibliothèques requises pour exécuter le shell bash.

Si vous avez créé votre prison en utilisant quelque chose comme ceci:

debootstrap --variant=buildd --Arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

Vous avez probablement voulu faire ceci à la place:

debootstrap --variant=minbase --Arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

Cependant, en guise de réponse technique à votre problème, essayez:

cp -r /bin /lib /mnt/temp

Cela devrait vous permettre de chrooter avec succès, à quel point vous pouvez faire autre chose.

Cela dit, il y a environ un million de choses qui ne vont pas, et vous ne voulez certainement pas le faire. Utilisez minbase lorsque vous créez votre prison ou installez ubuntu sur une cible vierge (une machine virtuelle, par exemple) et créez une archive tar du système entier que vous décompressez ensuite en /mnt/temp.

1
Doug

En effet, il s’agit d’une incompatibilité 64 bits 32 bits.

Bien qu'avec

cp /bin/bash /mount/temp/tmp

(copie l'exécutable 32 bits vers la nouvelle racine dans le répertoire tmp

chroot /mount/temp /tmp/bash

chroot est correct, toutes les commandes échouent toujours. Vous devrez les copier partout.

0
cosine