
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-static
es 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 tmp
Verzeichnis
chroot /mount/temp /tmp/bash
chroot
ist in Ordnung, alle Befehle schlagen trotzdem fehl. Sie müssten sie alle kopieren.