Debootstrap
Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.
|
Warnung: Da bei dieser Installationsvariante alle elementaren Einstellungen per Hand vorgenommen werden müssen, ist sie auf keinen Fall für Einsteiger geeignet! |
Debootstrap ermöglicht die Installation eines Debian Betriebssystems aus einem laufendem System heraus. Insbesondere kann dabei das Installationsziel eine physikalische Partitionen oder aber eine chroot-Umgebung sein.
Debootstrap selber installiert nur ein minimales Grundsystem, das noch einiger Anpassungen bedarf. Ist dies geschafft, kann man sehr leicht mittels apt ein vollwertiges System erstellen. Dieser Artikel will dabei die prinzipielle Vorgehensweise aufzeigen.
Vorbereitungen
Als Voraussetzungen ist es zunächst einmal nötig, das Paket "debootstrap" installiert zu haben. Soweit zu nötigen Paketen. Als nächstes muss das Ziel vorbereitet werden. Dazu wird das Wurzelverzeichnis erstellt. Ist das Ziel eine chroot-Umgebung, ist dies schnell mit dem Erstellen des Verzeichnisses getan.
Für eine herkömmliche Installation hingegen, muss zunächst partitioniert werden, die Partitionen müssen mit dem gewünschten Dateisystem formatiert und die Dateisysteme entsprechend in einem Verzeichnis gemountet werden. In diesem Beispiel ist dieses Verzeichnis /target.
Ist diese Arbeit getan, kann mit dem eigentlichen Debootstrappen begonnen werden.
Der Debootstrap-Vorgang
Das Programm debootstrap erwartet drei Argumente. Das ist erstens der (Code)name der zu installierenden Debianversion also z.B. lenny, squeeze oder unstable. Zweitens wird der Pfad zum Wurzelverzeichnis benötigt. Und drittens die Adresse eines Debianspiegels, z.B. http://ftp.de.debian.org/debian/. Hier kann man auch einen lokalen apt-cacher-ng verwenden. Desweiteren ist die Option --arch für die Zielarchitektur zuständig, wird dieser Parameter nicht angegeben, wird automatisch die Architektur des aktuellen Systems benutzt. Für weitere Optionen siehe Manpage von debootstrap.
Ein 32-Bit System installiert man also mit:
root@debian:~# debootstrap --arch=i386 stretch /target http://ftp.de.debian.org/debian/
Ein 64 Bit System dagegen mit:
root@debian:~# debootstrap --arch=amd64 stretch /target http://ftp.de.debian.org/debian/
Nun ist es Zeit für die obligatorische Tasse Kaffee. Ist das Debootstrappen abgeschlossen, kann es mit den grundlegenden Einstellungen weitergehen.
Variante: Debootstrap ohne systemd
Wer lieber sysv statt systemd nutzen möchte, kann an dieser Steele in debootstrap eingreifen. Hintergrund: debootstrap arbeitet zweiteilig. Im ersten Schritt installiert es unbedingt notwendige Pakete im Zielsystem, im zweiten führt es ein chroot in das System aus und setzt seine 2. Stufe in Gang. Diese Schritte kann man auch einzeln ausführen. Hier werden zunächst Veränderungen durchgeführt, bevor die zweite Stufe manuell gestartet wird:
Hier ein Beispiel für ein 64-Bit-buster:
root@debian:~# debootstrap --foreign --arch=amd64 --include=sysvinit-core buster /target http://ftp.de.debian.org/debian/
Man beachte die Parameter --foreign, um nur die 1. Stufe zu initiieren, und --include=sysvinit-core, um der 2. Stufe zu signalisieren, dass sie dieses Paket mitinstallieren soll.
root@debian:~# sed -i 's/systemd systemd-sysv//' /target/debootstrap/required
In der Datei /target/debootstrap/required befindet sich die Liste der zu installierenden Pakete, aus der mit dem sed-Aufruf die Hinweise auf systemd eliminiert werden. (Das geht deshalb mit einem einzigen sed-Befehl, weil die Einträge "systemd" und "systemd-sysv" direkt hintereinander stehen.) Man kann diese Änderung auch mit einem Editor durchführen. Den Eintrag für sysvinit-core, den wir mit der ersten Stufe von debootstrap in Auftrag gaben, kann man mit einem Editor hier auch schon entdecken.
root@debian:~# chroot /target /debootstrap/debootstrap --second-stage
Damit erfolgt der Aufruf der 2. Stufe.
Um ein späteres Nachziehen von systemd durch eventuelle Abhängigkeiten zu verhindern, empfiehlt sich noch ein apt-pinning z.B. in der neu anzulegenden Datei /target/etc/apt/preferences.d/10nosystemd. Man beachte, das dadurch einige Pakete wie kde oder gnome ebenfalls nicht mehr installierbar sind.
Package: systemd
Pin: release *
Pin-Priority: -1
Package: systemd-sysv
Pin: release *
Pin-Priority: -1
Das neue System einrichten
Damit im eben installierten Basissystem, in dem noch jede Menge fehlt, mittels chroot gearbeitet werden kann, müssen nun eine ganze Reihe von Pseudo-Dateisysteme gemountet werden:
root@debian:~# mount -o bind /proc /target/proc
root@debian:~# mount -o bind /dev /target/dev
root@debian:~# mount -o bind /dev/pts /target/dev/pts
root@debian:~# mount -o bind /sys /target/sys
Dann wechselt man per
root@debian:~# chroot /target
in die neue Installation.
Hinweis: Im folgenden sind vor allem die zu erledigenden Schritte bei einer herkömmliche Installationen erklärt. Wird statt dessen ein Chroot erstellt, so muss im einzelnen geprüft werden, welche Schritte tatsächlich notwendig sind oder auch fehlen. |
Zunächst überprüfen wir den Inhalt der /etc/apt/sources.list und korrigieren, soweit nötig. Anschließend wird ein
root@debian:~# apt-get update
ausgeführt.
Nun installieren wir folgende Pakete via apt:
root@debian:~# apt-get install console-data console-common tzdata locales keyboard-configuration
Zusätzlich benötigen wir einen Kernel. Dazu wird entsprechend der Prozessorarchitektur das Paket linux-image-686 bzw. linux-image-amd64 installiert.
Abschliesend wird mit
root@debian:~# dpkg-reconfigure tzdata console-data console-common keyboard-configuration
die Locale und das Charset eingestellt.
Jetzt kommt ein gern vergessener Schritt!
Das root-Passwort setzen:
root@debian:~# passwd
Es ist auch möglich, gleich mit adduser weitere Benutzer zu erstellen.
Weitere Schritte, die im Rahmen dieses Artikels nicht im Detail besprochen werden:
- In /etc/fstab die benötigten mounts eintragen
- In /etc/network/interfaces die Netzwerkkarten einrichten, insbesondere das Loopback-Interface
- In /etc/hostname den Hostnamen festlegen
- In /etc/hosts Alias festlegen
- In /etc/resolv.conf den Nameserver eintragen, falls kein DHCP benutzt wird
Falls der apt-cacher-ng oder ein ähnlicher Proxy verwendet wurde:
- In /etc/apt/sources.list den apt-cacher-ng durch ftp.de.debian.org oder einen anderen offiziellen Mirror ersetzen
- In /etc/apt/apt.conf den lokalen Cacher eintragen
Damit ist die Konfiguration abgeschlossen und es kann der erste Systemstart folgen. Dazu wird zunächst noch ein Bootloader benötigt.
Grub installieren
Als Bootloader wird man abhängig davon ob der Computer im UEFI-Modus gebootet werden soll oder im Legacy/CSM-Modus (oder noch über gar kein UEFI verfügt) das Paket grub-efi-amd64 oder grub-pc installieren wollen und richtet den Bootloader entsprechend ein. Im Falle von grub-pc ist bei grub-install ist besonders auf das passende Device zu achten und bei grub-efi muss die EFI System Partition unter /boot/efi (im neu installierten System, auf dem Wirtssystem also /target/boot/efi) gemountet werden. Dabei ist gegebenenfalls darauf zu achten, dass die Installation des Bootloaders die Booteinträge im nvram nicht unerwünscht überschreibt. (Für das Anlegen der Booteinträge muss das Wirtssystem bereits im UEFI-Modus gebootet sein, andernfalls empfiehlt sich für grub das Erzwingen der Installation in den "EFI removable media path", der beim Konfigurieren des Pakets angeboten wird.)
Für ältere Systeme ohne amd64-Erweiterung und einige wenige amd64-Systeme, die über ein 32bittiges (U)EFI verfügen, muss statt grub-efi-ia32 installiert werden.
Mehr Informationen zum Booten im UEFI-Modus finden sich in diesem Artikel.
Der erste Systemstart
Mit exit wird die chroot-Umgebung verlassen, anschließend erfolgt der Reboot.
Ist alles korrekt eingerichtet, müsste uns nach einer Weile der Login-Prompt unseres neuen Debian begrüßen.
Wir haben jetzt ein vollwertiges Debian, das nach Lust und Laune mit Programmen bestückt werden kann.