Bei einem Chroot-Versuch erhielt ich diesen Fehler: „chroot: Fehler beim Ausführen des Befehls ‚/bin/bash‘: Exec-Formatfehler“

Bei einem Chroot-Versuch erhielt ich diesen Fehler: „chroot: Fehler beim Ausführen des Befehls ‚/bin/bash‘: Exec-Formatfehler“

Ich habe die Anweisungen dieses Tutorials befolgtHOWTO: Grub 2 von der Live-CD löschen und neu installieren, als ich bei Schritt 1 einen Fehler entdeckte, als ich den Befehl startete

sudo chroot /mnt/temp

Der Fehler war folgender:

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

Wo kommt das her? Wie komme ich da durch?

Antwort1

Stellen Sie sicher, dass Sie die richtige Live-CD verwenden. Stellen Sie beispielsweise sicher, dass Sie keine 32-Bit-CD statt einer 64-Bit-CD verwenden. Sie benötigen einen 64-Bit-Kernel, um 64-Bit-Code auszuführen. Überprüfen Sie daher Ihre Architektur.

Angenommen, Sie haben Ihr System so gemountet, dass es chrootet/Medien/sda1, um die Architektur zu bestimmen, haben Sie folgende Möglichkeiten:

ls /media/sda1/*

Wenn Sie in der Ausgabe lib64 sehen, handelt es sich wahrscheinlich um ein 64-Bit-System

Antwort2

Ich hatte das gleiche Problem beim Erstellen eines Images für armhf arch. Ich musste qemu-user-statices installieren und dann in den Chroot-Bin-Ordner kopieren.

sudo cp /usr/bin/qemu-arm-static /path/to/mount/usr/bin

Möglicherweise müssen Sie laufen

systemctl restart systemd-binfmt.service

dann sollten Sie in der Lage sein, chroot in die Umgebung einzubinden

Antwort3

Der Fehler bedeutet, dass Ihr Jail ( /mnt/temp) keine Bash-Shell enthält oder nicht die zum Ausführen der Bash-Shell erforderlichen Bibliotheken enthält.

Wenn Sie Ihr Jail mit etwas wie Folgendem erstellt haben:

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

Wahrscheinlich wollten Sie stattdessen Folgendes tun:

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

Versuchen Sie jedoch als technische Antwort auf Ihr Problem Folgendes:

cp -r /bin /lib /mnt/temp

Dies sollte Ihnen ein erfolgreiches Chroot-Verfahren ermöglichen und Sie können anschließend andere Dinge tun.

Dabei gibt es jedoch ungefähr eine Million Dinge, die falsch sind, und mit ziemlicher Sicherheit möchten Sie das nicht tun. Verwenden Sie Minbase, wenn Sie Ihr Jail erstellen, oder installieren Sie Ubuntu auf einem leeren Ziel (z. B. einer virtuellen Maschine) und erstellen Sie ein Tar-Archiv des gesamten Systems, das Sie dann in . dekomprimieren /mnt/temp.

Antwort4

Tatsächlich handelt es sich hierbei um eine 64-Bit-32-Bit-Inkompatibilität.

Obwohl mit

cp /bin/bash /mount/temp/tmp

(kopiert 32-Bit-Exec in das neue Stammverzeichnis im tmpVerzeichnis

chroot /mount/temp /tmp/bash

chrootist in Ordnung, alle Befehle schlagen trotzdem fehl. Sie müssten sie alle kopieren.

verwandte Informationen