Während eines Chroot-Versuchs kam folgende Fehlermeldung: "Chroot: Befehl '/ bin / bash' konnte nicht ausgeführt werden: Exec-Formatfehler"

Antworten:

21

Stellen Sie sicher, dass Sie die richtige Live-CD verwenden. Stellen Sie beispielsweise sicher, dass Sie keine 32-Bit-CD anstelle 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 in / media / sda1 gemountet , um die Architektur zu bestimmen, können Sie:

ls /media/sda1/*

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

Grand Oxymore
quelle
Es ist aber immer noch nicht chroot
Starx
2

Ich hatte das gleiche Problem, als ich ein Bild für Armhf Arch machte. Ich musste es installieren qemu-user-staticund dann in den chroot bin Ordner kopieren.

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

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

Wenn Sie Ihr Gefängnis mit so etwas erstellt haben:

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

Wahrscheinlich wollten Sie dies stattdessen 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 es Ihnen ermöglichen, erfolgreich zu chrooten, und an diesem Punkt können Sie andere Dinge tun.

Es gibt ungefähr eine Million Dinge, die daran falsch sind, und mit ziemlicher Sicherheit wollen Sie das nicht. Verwenden Sie minbase, wenn Sie Ihr Gefängnis erstellen, oder installieren Sie ubuntu auf einem leeren Ziel (z. B. einer virtuellen Maschine) und erstellen Sie ein tar-Archiv des gesamten Systems, in das Sie dann dekomprimieren /mnt/temp.

Doug
quelle
0

Dies ist in der Tat 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 immer noch fehl. Sie müssten sie überall kopieren.

Kosinus
quelle
-1

In meinem Fall habe ich versucht, in eine 64-Bit-Version von Linux zu chrooten, aber mein aktuelles Linux war 32-Bit.

Ich hatte ein Festplatten-Image (Master-Image, zur Replikation auf mehreren Rechnern) gemountet.

azuer88
quelle
Gleiche Antwort wie @ GrandOxymore oben.
Karl Richter
@KarlRichter Ähnlich, aber nicht gleich. Das Ausführen eines 32-Bit-Programms in einem 64-Bit-Betriebssystem ist nicht dasselbe wie das Ausführen eines 32-Bit-Programms in einer virtuellen 64-Bit-Umgebung (oder einem virtuellen Betriebssystem). Ich könnte ein 32-Bit-Gastbetriebssystem ausführen und es wäre gut gelaufen.
azuer88
-2

Ich denke in ist ein Fehler.

`/ bin / bash '

aber nicht

'bin / bash'


quelle