Aus LinuxUser 02/2008

Live-System über Netzwerk booten

System getankt

Via PXE lassen sich auch Live-Systeme booten: Sie schalten einen plattenlosen Rechner einfach ein und er holt sein komplettes OS beim Server ab.

Vor zwei Ausgaben [1] beschrieben wir, wie Sie ein System auf einem Rechner installieren, der kein CD- oder DVD-Laufwerk besitzt. Die Client-Rechner müssen dazu lediglich in der Lage sein, über PXE zu booten. Das stellen Sie gewöhnlich im BIOS ein. Schalten Sie den Rechner ein, sucht er im Netzwerk nach dem PXE-Server und tankt dort sein System.

Auf dem Server läuft die eigentliche Show ab. Auf ihm richten Sie einen DHCP-Server ein, der IP-Adressen an die Clients verteilt. Zusätzlich installieren Sie einen TFTP-Server, der über ein spezielles Protokoll den Linux-Kernel (linux oder vmlinuz) und ein komprimiertes Dateisystem (die Initial Ramdisk initrd oder initrd.gz) an die Clients schickt. Diese laden den Kernel, der wiederum lädt die Initial Ramdisk. Im besagten Artikel installiert der Client-Rechner dann die komplette Distribution über das Internet per FTP oder HTTP.

Diesmal läuft das etwas anders: Die Clients sollen über das Netzwerk ein komplettes Live-System in den Arbeitsspeicher laden (Abbildung 1). Am Setting verändert sich im Vergleich zum letzten Mal – zumindest unter Ubuntu – nicht viel, bei OpenSuse sieht das schon anders aus. Wir gehen aber davon aus, dass sich die nötigen PXE-Dateien bereits im Verzeichnis /var/lib/tftpboot befinden. Um einen leichten Einstieg zu bieten, beschreiben wir zunächst, wie Sie Ubuntu 7.04 oder 7.10 fernbooten, dann soll es um Kiwi und OpenSuse gehen.

Abbildung 1: Schema des PXE-Boots eines Live-Systems: Der blaue Pfeil steht für das via NFS erreichbare Root-System.
Abbildung 1: Schema des PXE-Boots eines Live-Systems: Der blaue Pfeil steht für das via NFS erreichbare Root-System.

Ubuntu Live-System booten

In beiden Fällen liefert ein aktuelles Ubuntu 7.10 die PXE-Images aus. Wollen Sie OpenSuse als PXE-Server einsetzen, müssen Sie auf Abweichungen in der Konfiguration achten, die der bereits erwähnte Artikel [1] ebenfalls anspricht.

Um Ubuntu auszuliefern, brauchen Sie zunächst eine Live-Distribution von Ubuntu 7.10 oder Ubuntu 7.04 (etwa unter [2]). Laden Sie sie über FTP oder Bittorrent herunter und speichern Sie das Image in Ihrem Home-Verzeichnis. Dann spielen Sie die Pakete dhcp3-server, tftpd-hpa sowie nfs-kernel-server ein und passen die Konfigurationsdateien /etc/default/tftpd-hpa und /etc/dhcp3/dhcpd.conf so an, wie im Artikel [1] erwähnt.

Im Unterschied zum letzten Artikel bietet der Server hier kein Netboot-Image an, sondern erlaubt via NFS den Zugriff auf die Dateien der Live-CD. Dafür muss der NFS-Server das Verzeichnis freigeben, in dem sich diese Dateien (die wir als Root-System bezeichnen) befinden. Im Beispiel hängen Sie die Live-CD in das Verzeichnis /var/lib/image ein. Angenommen, die Live-CD liegt nur in Form eines ISO-Images vor, „loopmounten“ Sie das Image, um auf die darin enthaltenen Files zuzugreifen:

$ sudo mkdir /var/lib/image
$ sudo mount -o loop /Pfad/zum/Image.iso /var/lib/image

Auf diesem Weg hängt Linux das heruntergeladene Image wie eine herkömmliche CD in das Verzeichnis ein. Ein ls /var/lib/image zeigt Ihnen die zuvor noch im ISO eingemauerten Inhalte an (Abbildung 2). Im nächsten Schritte öffnen Sie mit administrativen Rechten die Datei /etc/exports und ergänzen sie um folgenden Eintrag:

/var/lib/image/ *(rw,no_root_squash,sync)

Anschließend starten Sie den NFS-Server über sudo /etc/init.d/nfs-kernel-server force-reload neu. Er bietet nun das Verzeichnis /var/lib/image mitsamt der gemounteten Live-CD als neuen Exportartikel an.

Abbildung 2: Wenn Sie das ISO-Image der Ubuntu-Live-CD in das Verzeichnis <code>/var/lib/image</code> via Loopback mounten, erscheinen die Inhalte wie bei einer gewöhnlichen Live-CD.
Abbildung 2: Wenn Sie das ISO-Image der Ubuntu-Live-CD in das Verzeichnis /var/lib/image via Loopback mounten, erscheinen die Inhalte wie bei einer gewöhnlichen Live-CD.

Meldet sich ein Client via PXE übers Netzwerk, liefert der Server bei Ubuntu ihm gewöhnlich die Dateien initrd.gz und vmlinuz aus. Damit das geht, kopieren Sie beide Dateien von der eben gemounteten ISO-Datei nach /var/lib/tftpboot.

$ sudo cp /var/lib/image/casper/initrd.gz /var/lib/tftpboot
$ sudo cp /var/lib/image/casper/vmlinuz /var/lib/tftpboot

Die angemeldeten Clients suchen zuerst in der Datei /var/lib/tftpboot/pxelinux.cfg/default nach den beiden Dateien. Öffnen Sie diese also mit Root-Rechten und übertragen Sie die Zeilen aus Listing 1.

Listing 1
DEFAULT  neu
LABEL neu
kernel vmlinuz
append initrd=initrd.gz boot=casper netboot=nfs nfsroot=192.168.33.1:/var/lib/image –
PROMPT 1
TIMEOUT 100

Die Datei können Sie beliebig anpassen, um etwa mehrere PXE-Systeme anzubieten. Hinter nfsroot tragen Sie die IP-Adresse des PXE-Servers ein, der dazu demgemäß eine feste IP-Adresse haben muss.

Nun steht die Konfiguration: Der DHCP-Server läuft, der NFS-Server exportiert fleißig – fehlt nur noch der TFTP-Server. Bearbeiten Sie die Datei /etc/default/tftpd-hpa wie im Artikel [1] beschrieben und starten Sie den Server über sudo /etc/init.d/tftpd-hpa start.Hängen Sie nun einen Client an das Netzwerk, sollte er ein Ubuntu-Live-System booten, wenn Sie die Boot-Reihenfolge ändern und beim Boot-Prompt neu eingeben (Abbildung 3).

Abbildung 3: Nach dem Boot des PXE-Systems erscheint ein Boot-Prompt. Hier geben Sie <code>neu</code> ein, um das Live-System von Ubuntu zu booten.
Abbildung 3: Nach dem Boot des PXE-Systems erscheint ein Boot-Prompt. Hier geben Sie neu ein, um das Live-System von Ubuntu zu booten.

TIPP

Findet der Client beim Booten den TFTP-Server nicht, stoppen Sie diesen über sudo /etc/init.d/tftpd-hpa stop und geben ps aux | grep inet ein. Läuft dort ein Prozess, der inet im Namen trägt, killen Sie ihn über sudo kill PID und starten Sie den TFTP-Server neu.

LinuxUser 02/2008 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: