Antworten:
Die Trennung der beiden Phasen ist nur erforderlich, wenn Sie eine Distribution für eine fremde Architektur ( CrossDebootstrap ) booten . Siehe die Beschreibung der --foreign
Option auf der Manpage . Verwenden Sie beispielsweise einen x86-Computer, um eine Debian / Ubuntu-Installation für ein eingebettetes ARM- oder PowerPC-System zu erstellen.
In der ersten Phase werden die erforderlichen .deb-Dateien heruntergeladen und in das von Ihnen angegebene Verzeichnis entpackt. In der zweiten Phase werden alle Paketkonfigurationsskripts ausgeführt, die mithilfe der Zielarchitektur (oder mithilfe qemu-user-static
der Emulation der Zielarchitektur) ausgeführt werden müssen.
Wenn Sie keine Installation für eine fremde Architektur erstellen, werden die Phasen kombiniert und Sie können die --second-stage
Option ignorieren .
Beispiel für die Verwendung debootstrap --second-stage
Wenn Sie ein arm64 Ubuntu 18.04-Image von einem Ubuntu 18.04 amd64-Host entfernen möchten, gehen Sie wie folgt vor:
sudo apt-get install \
debootstrap \
qemu-user-static \
;
debootstrap_dir=debootstrap
sudo debootstrap \
--arch arm64 \
--foreign \
bionic \
"$debootstrap_dir" \
http://ports.ubuntu.com/ubuntu-ports \
;
sudo mkdir -p "${debootstrap_dir}/usr/bin"
sudo cp "$(which qemu-aarch64-static)" "${debootstrap_dir}/usr/bin"
sudo chroot "$debootstrap_dir" /debootstrap/debootstrap --second-stage
sudo rm -f "$root_filesystem"
Das qemu-user-static
Paket in Ubuntu 18.04 enthält auch ein qemu-debootstrap
Skript, das im Grunde das Gleiche tut wie wir, aber auf alle Bögen verallgemeinert ist. Es befindet sich jedoch nicht im QEMU-Hauptquellenbaum.
Hier ist mein vollständiges Setup, um das generierte System mit der vollständigen QEMU-Systememulation auszuführen: Gibt es ein vorgefertigtes QEMU-Ubuntu-Image (32 Bit) online?
Getestet unter Ubuntu 18.04.
--foreign
und--second-stage
Optionen.