Debian-Live Netzbootsystem

Aus Knowledgebase
Version vom 20. Juli 2011, 11:23 Uhr von PoC (Diskussion | Beiträge) (→‎DHCP-Konfiguration: Typo)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Das Debian-Live-Projekt hat für Wiederherstellungszwecke eine Live-Bootcd-Serie bereitgestellt. Diese gibt es als ISO-Datei als auch in Archivform zum Aufsetzen eines Netzbootsystems. Der Artikel beschreibt die notwendigen Schritte, dieses Netzbootsystem unter Debian Linux aufzusetzen. Dabei kann zum Bootzeitpunkt ausgewählt werden, ob ein 32- oder ein 64-Bit-System gestartet werden soll.

Benötigte Komponenten

  • DHCP-Server (für die Zuweisung grundlegender Netzwerkparameter),
  • TFTP-Server (für den initialen Zugriff auf Kernel und Initrd),
  • FTP/HTTP-Server (für den Zugriff auf das komprimierte Root-Dateisystem),
  • Die Archivdatei von http://live.debian.net/ aus dem net-Unterverzeichnis (mit den benötigten Komponenten).

Ein PXE-Daemon wird nicht benötigt, während NFS optional ist.

DHCP-Konfiguration

In der DHCP-Konfigurationsdatei exemplarisch:

subnet 192.168.59.0 netmask 255.255.255.192 {
       range 192.168.59.30 192.168.59.39;
       next-server 192.168.59.10;
       option subnet-mask 255.255.255.192;
       option broadcast-address 192.168.59.63;
       option routers 192.168.59.1;

       if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
               filename "pxelinux.0";
       } else {
               filename "";
               option root-path "192.168.59.10:/var/nfsroot";
       }
}

TFTP-Server

Ich empfehle das Paket atftpd, allerdings im Inetd-Modus:

tftp            dgram   udp     wait    nobody.nogroup  /usr/sbin/atftpd        atftpd /var/tftpboot

FTP/HTTP-Server

Meist ist auf den Maschinen sowieso ein Apache installiert, oft auch ein FTP-Server (wie z. B. vsftpd). Auf die Konfiguration gehe ich hier nicht weiter ein.

Einrichtung

Durch Auspacken des oben genannten Archives werden die Verzeichnisse debian-live/ und tftpboot/ erzeugt.

Die Datei debian-live/live/filesystem.squashfs wird in einem Verzeichnis abgelegt, auf welches der FTP- und/oder HTTP-Server Zugriff besitzen. Wenn der Dateiname eindeutig behandelt wird, können im gleichen Verzeichnis unterschiedliche Architekturen abgelegt werden (z. B. debian-live-6.0.1-amd64.squashfs und debian-live-6.0.1-i386.squashfs). Der Name wird später in der PXE-Konfiguration referenziert und ist daher frei wählbar.

Im Unterverzeichnis tftpboot/ finden sich die für den TFTP-Server notwendigen Dateien, die der PXE-Loader der Clientnetzwerkkarte benötigt. Das Verzeichnis tftpboot/debian-install/ wird nicht benötigt und kann gelöscht werden. Der Inhalt von tftpboot/debian-live/i386/ (und/oder amd64) kann direkt nach /var/tftpboot/debian-live/ verschoben werden. Die einzige architekturabhängige Datei mit gleichem Namen ist memtest. Diese kann ebenfalls umbenannt werden (z. B. memtest-i386 und memtest-i686). Nicht benötigte Kernel z. B. für 486-Prozessoren können gelöscht werden.

Die Datei pxelinux.0 sowie das Verzeicnhnis pxelinux.cfg müssen direkt nach /var/tftpboot/ verschoben werden und die Include-Zeile in pxelinux.cfg/default auf den nun neuen, relativen Pfad angepasst werden:

include debian-live/boot-screens/menu.cfg

Die folgenden Dateien in boot-screens/ müssen angepasst werden:

  • live.cfg: Hier werden die Kernel mit den notwendigen Aufrufparametern hinterlegt.
    • Die labels müssen eindeutig sein,
    • die menu labels werden dem Anwender beim Starten präsentiert,
    • der fetch-Parameter zeigt auf eine FTP- oder HTTP-URL zum Download des Squashfs-Images.
    • Beispiel:
label livei386
 menu label Live i386
 kernel debian-live/vmlinuz-2.6.32-5-686
 append initrd=debian-live/initrd.img-2.6.32-5-686 boot=live config fetch=ftp://192.168.59.10/pub/linux/debian-live-6.0.1-i386.squashfs quiet vga=normal

label liveamd64
 menu label Live AMD64
 kernel debian-live/vmlinuz-2.6.32-5-amd64
 initrd=debian-live/initrd.img-2.6.32-5-amd64 boot=live config fetch=ftp://192.168.59.10/pub/linux/debian-live-6.0.1-amd64.squashfs quiet vga=normal
  • stdmenu.cfg, menu.cfg, exithelp.cfg, prompt.cfg: Pfade zu den Dateien anpassen.

Booten mit wenig Speicher

Mit der oben beschriebenen Methode brauchen die Maschinen genug Speicher, um das Root-Dateisystem zu laden und die Programme auch auszuführen. Da das derzeitige Rescue-Image über 500 MB groß ist, braucht die Hardware 0,75 - 1 GB RAM zum Starten.

Soll darauf verzichtet werden, so sind folgende Änderungen notwendig:

  • Die Squashfs-Images müssen filesystem.squashfs heißen und in einem Unterverzeichnis /live/ des per NFS exportieren Verzeichnisses liegen. Beispielsweise:
/var/nfsboot/debian-live/amd64/live/filesystem.squashfs
/var/nfsboot/debian-live/i386/live/filesystem.squashfs
  • In der /etc/exports wird dann ein NFS-Export konfiguriert:
/var/nfsboot  192.168.59.0/24(ro,nohide,no_root_squash,no_subtree_check,insecure)
  • In boot-screens/live.cfg muss Kernelkommandozeile entsprechend angepasst werden:
append initrd=debian-live/initrd.img-2.6.32-5-686 config boot=live netboot=nfs nfsroot=192.168.59.10:/var/nfsboot/debian-live/i386 quiet vga=normal

Mit entsprechend vielen Menüeinträgen in der live.cfg können beide Varianten koexistieren. Die Verfügbarkeit der Images per FTP kann z. B. mit Hardlinks erreicht werden.

Test

Wenn nichts falsch gemacht wurde, so bezieht der Client nun beim Netzboot eine IP-Adresse vom DHCP-Server und lädt die PXE-Dateien, um ein Menü anzuzeigen, was gestartet werden soll. Nach der Auswahl eines Punktes werden Kernel und Initrd per TFTP übermittelt und der Kernel gestartet. Per erneuter DHCP-Anfrage erhält der Kernel gültige Netzparameter und kann nun die in der fetch-URL angegebene Datei nachladen, bzw, das per NFS zugängliche Squashfs mounten und als Root verwenden. Ab dann ist das Debian-Live-System aktiv.

In /var/log/daemon.log finden sich Meldungen vom TFTP-Server, was sehr hilfreich bei der Fehlersuche ist.

Weblinks