Table of Contents
PXE
Preboot eXecution Environment (oder PXE, englisch ausgesprochen “pixie”) steht für das Laden eines Systems über eine Netzwerk-Verbindung. Dies ist vergleichbar dem Laden von einem Direktstart-Datenträger in einem fernen optischen Laufwerk.
Für das Laden über das Netzwerk wird benötigt:
- ein Server, der Dateien speichern kann und auf dem DHCP und TFTP laufen (dies können auch separate Rechner sein)
- ein Klient mit einem PXE-Urlader in der BIOS-Firmware. Dieser braucht keine Platte oder SSD.
PXE-Server Einrichtung
Ein PXE-Server besteht aus:
- einem DHCP-Server, der Verbindungsanforderungen annimmt
- einer DHCP-Urladerdatei zum Konfigurieren
- einem TFTP-Server, der ein Betriebssystem transferiert
Schnelleinstieg mit Direktstart-Datenträger
Der SliTaz-Direktstart-Datenträger kann als ein PXE-Server eingesetzt werden. Dazu wird nach dem Systemladen über das Menü Systemwerkzeuge die Netbox-Anwendung gestartet.
- In dem Reiter Statische IP-Adresse auf Start klicken.
- Dieser Rechner wird dann der DHCP-Server. Er kann DHCP nicht benutzen, um IP-Adressinformationen zu ermitteln!
- Wählen Sie im Server-Reiter den Unter-Reiter INETD und stellen Sie sicher, dass die Zeile tftpd in /etc/initd.conf nicht auskommentiert ist. Dies ist die Standardeinstellung. Klicken Sie auf Start.
- Damit wird der TFTP-Server gestartet, der den SliTaz-Direktstart-Datenträger über das Netzwerk transferiert.
- Wählen Sie im Server-Reiter den Unter-Reiter PXE.
- Fügen Sie in der Konfiguration Ihre Urlade-Optionen hinzu.
- Damit wird auch die DHCP-Server-Konfiguration automatisch aktualisiert.
- Wählen Sie im Server-Reiter den Unter-Reiter DHCP. Prüfen Sie, ob die Konfiguration zu Ihrem Netzwerk passt. Im vorherigen Schritt wurden die Zeilen boot_file und siaddr eingefügt. Klicken Sie auf Start.
- Damit wird der DHCP-Server gestartet. Wenn Klienten keine IP-Adresse erhalten, muss diese Konfiguration geprüft werden.
- Stellen Sie sicher, dass die Dateien bzImage und rootfs.gz sich im Verzeichnis /boot des Direkstart-Datenträgers befinden.
Anpassung Ihres PXE-Servers
- Es kann mehrere PXE-Konfigurationen für verschiedene Gruppen von Klienten geben. Siehe PXElinux wiki.
- Das Verzeichnis /home kann sich nur auf einem lokalen Speichermedium des Klienten befinden (wie auch bei tazusb). Daher ist beispielsweise in /etc/fstab einzufügen:
/dev/hda1 /home ext3 defaults 0 0
- Seit SliTaz 3.0 kann auf einigen Klienten eine hybride Installation durchgeführt werden. Auf diesen Klienten ist SliTaz mit einigen großen Paketen wie libreoffice installiert. Die Systeme werden mit PXE geladen und der größte Teil des Systems befindet sich im Arbeitsspeicher, wohingegen die große Software sich auf Platte befindet; dabei kann es sich auch um ein Netzlaufwerk handeln. Daher ist beispielsweise in /etc/init.d/local.sh einzufügen:
mount -t nfs -o ro bootserver:/slitaz /media/slitaz tazpkg link libre-office /media/slitaz
- Seit SliTaz 3.0 können mehrere initramfs in der pxelinux-Konfigurationsdatei angegeben werden. Auf diese Art kann SliTaz unter Beibehaltung von Einstellungen leicht aktualisiert werden. Zum Beispiel:
label slitaz kernel /boot/bzImage append initrd=/boot/rootfs.gz,/boot/configs/extra-packages.gz,/boot/configs/special-configuration.gz rw root=/dev/null vga=normal autologin
- Beispiel für eine PXE-Server-Konfiguration: Der SliTaz-„web boot server“ http://mirror.slitaz.org/pxe/ (zu starten mit pxelinux.cfg/default)
Testen des PXE-Servers mit QEMU
- Installieren Sie qemu:
# tazpkg get-install qemu
- Starten Sie eine virtuelle Maschine:
qemu -boot n -bootp /pxelinux.0 -tftp /boot
Einrichten des PXE-Klienten
Die meisten neueren Rechner mit Ethernet-Anschluss haben ein PXE-fähiges BIOS oder UEFI. Suchen Sie die PXE-Funktion in den BIOS-Menüs und im BIOS-Urlade-Menü und aktivieren Sie sie. Möglicherweise müssen Sie dazu während des Urlade-Prozesses eine Taste drücken, z.B. F12.
Wenn Ihr Rechner Urladen mit PXE nicht unterstützt, können Sie stattdessen SliTaz als Klienten verwenden. Erzeugen Sie einen urladefähigen optischen Datenträger oder eine Diskette über das Menü Systemwerkzeuge Unterpunkt Boot Floppy/CDROM.
In dem Reiter PXE-Netzwerk klicken Sie Write floppy. Verwenden Sie diesen Datenträger zum Laden des Klienten-Rechners.
Urladen über das Netzwerk
Der SliTaz-Direktstart-Datenträger enthält Konfigurationseinstellungen zum Urladen über das Internet. Damit ist es möglich, von einem älteren Speichermedium eine neuere SliTaz-Version zu laden.
Dies geht automatisch, wenn Sie in dem Startbildschirm des SliTaz-Direktstart-Datenträgers eingeben:
web
Das ist alles!
Mehr Informationen über das Laden von SliTaz über das Internet finden Sie bei SliTaz „Web Boot“.
Um eine IP-Adresse, eine Netzmaske und die Adresse eines Netzkopplers („gateway“) zu erhalten, wird wie bei einer normalen Netzwerk-Verbindung, ein DHCP-Server benötigt; dies sollte Ihr Standard-Vermittlungsknoten („router“) leisten.
Urladen mit PXE ohne DHCP-Server: Urladen über das Netzwerk per Anweisungen
Wenn kein Gerät vorhanden ist, das als DHCP-Server dienen kann, ist eine IP-Adresse mitsamt Netzmaske, die Adresse eines Netzkopplers und optional eine DNS-Adresse anzugeben:
title Slitaz Web kernel /boot/gpxe ip=192.168.0.12/24 gw=192.168.0.1 dns=192.168.0.1 url=http://mirror.slitaz.org/pxe/pxelinux.0
Der URL kann auch folgendermaßen angegeben werden:
title Slitaz Web kernel /boot/gpxe ip=192.168.0.12/24 gw=192.168.0.1 dns=192.168.0.1 ip=192.168.0.12/24 gw=192.168.0.1 dns=192.168.0.1 url=http://mirror.slitaz.org/pxe/pxelinux.0
Nur die folgenden Schlüsselwörter werden erkannt:
- ip=
- gw=
- dns=
- url=
- nodhcp (zum Vermeiden von Zeitablauffehlern bei DHCP)
Erweiterte Konfiguration zum Urladen über das Netzwerk
Das Verfahren zum Urladen über das Netzwerk kann in Vermittlungsknoten („router“) und andere Geräte integriert werden und individuell angepasst werden.
Eingebettetes Urladen über Netzwerk mit PXE vom PROM (PXE-Weiterleitung)
Richten Sie einen PXE-Server ein mit der Urladedatei http://download.tuxfamily.org/slitaz/boot/gpxe.pxe, einem 42 KiB großen Urlader zweiter Stufe. Dies wurde erfolgreich auf einem OpenWRT-Vermittlungsknoten getestet:
- installieren Sie http://mirror.slitaz.org/boot/mips/tftpd (Mips-Version) in /jffs/usr/sbin
- installieren Sie gpxe.exe in /jffs/boot
- fügen Sie eine Option dhcp-boot in die Konfigurationsdatei von dnsmasq ein:
# echo "dhcp-boot=gpxe.pxe" >> /tmp/dnsmasq.conf
- Starten Sie den tftp-Server für Ihr LAN (etwa 192.168.0.1/24)
# /jffs/usr/sbin/tftpd 192.168.0.1 /jffs/boot
# echo "dhcp-boot=gpxe.pxe,mirror.slitaz.org" >> /tmp/dnsmasq.conf
Änderung des Standard-URL für GPXE-Urladen
Der URL steht in der Datei gpxe ab Byte 519 in einer Länge von maximal 255 Byte.
- Anzeige des URL in der Datei gpxe mit:
$ dd bs=1 skip=519 count=255 if=gpxe 2> /dev/null | strings
- Ändern des URL mit:
$ echo -n "http://myurl.org/myboot" | cat - /dev/zero | dd conv=notrunc bs=1 seek=519 count=255 of=gpxe
- Ändern des URL und der IP-Konfiguration mit:
$ echo -n "ip=192.168.0.10/24 gw=192.168.0.1 dns=192.168.0.1 url=http://myurl.org/myboot" | cat - /dev/zero | dd conv=notrunc bs=1 seek=519 count=255 of=gpxe
- Entfernen des URL, um normales GPXE-Verhalten zu erreichen:
$ dd if=/dev/zero conv=notrunc bs=1 seek=519 count=255 of=gpxe
Änderung des Standard-URL in der Datei gpxe.pxe
Der URL steht in der Datei gpxe.pxe ab Byte 5 in einer Länge von maximal 255 Byte.
Anzeige des URL in der Datei gpxe.pxe mit:
$ dd bs=1 skip=5 count=255 if=gpxe.pxe 2> /dev/null | strings
Ändern des URL mit:
$ echo -n "http://myurl.org/myboot" | cat - /dev/zero | dd conv=notrunc bs=1 seek=5 count=255 of=gpxe.pxe
Entfernen des URL, um normales gpxe.pxe-Verhalten zu erreichen:
$ dd if=/dev/zero conv=notrunc bs=1 seek=5 count=255 of=gpxe.pxe
Redundante Server für das Urladen über das Netzwerk nutzen
Es kann eine, durch Kommata getrennte Liste von URLs angegeben werden.
Der PXE-Klient versucht zunächst, vom ersten URL zu laden. Wenn das Urladen scheitert, wird der nächste URL versucht, und so weiter.
Hier ein Beispiel mit den aktuellen Servern zum Urladen von Slitaz über das Netzwerk:
$ echo -n "http://mirror.slitaz.org/pxe/pxelinux.0,http://mirror.switch.ch/ftp/mirror/pxe/pxelinux.0,http: download.tuxfamily.org/slitaz/pxe/pxelinux.0" | cat - /dev/zero | dd conv=notrunc bs=1 seek=519 count=255 of=gpxe
Warum PXE verwenden? Das VNC-Beispiel
Nehmen wir an, Ihre Firma verarbeitet einige äußerst schutzwürdige Daten. Es soll verhindert werden, dass jemand irgendetwas davon auf Wechseldatenträger kopiert. Nur wenige Benutzer sollen Zugriff auf diese Daten haben.
- PXELINUX wählt über die MAC-Adresse in pxelinux.cfg/client-mac-address eine spezielle Konfiguration
- Es prüft das md5- (oder sha256-) Kennwort des Benutzer-Urlade-Eintrags mit menu.c32
- Es sendet einen Linux-Kern und ein initramfs mit einem fbvnc-Paket erzeugt von http://tiny.slitaz.org/ (Gesamtgröße < 1,44 MB)
- Das Klient-System wird in 1 bis 5 Sekunden mit einem VNC-„framebuffer client“ geladen
- Der VNC-Server kann jeden beliebigen Bildschirm senden
- Der Klient hat keinen Datenträgerzugriff und kann 20 Jahre alte Hardware verwenden (mindert das Diebstahlrisiko)
- Das Zielsystem kann in einer virtuellen Maschine laufen: dies ist leichter zu skalieren und zu warten als mehrere Arbeitsplatzrechner
- Auf dem Klienten-Rechner werden keine Daten gespeichert. Er kommt ohne Platte aus. Er benötigt lediglich einen Ethernet-Anschluss
- Selbstverständlich muss für die Sitzungen auf dem Zielsystem Benutzername und Kennwort abgefragt werden und ein Verbindungszeitablauf definiert sein…
Zur Erhöhung der Sicherheit
VNC wartet auf Verbindungsaufbau aus dem Netzwerk ohne ein Kennwort (fbvnc unterstützt keine Authentifizierung) und der VNC-Verkehr über das Netzwerk wird nicht verschlüsselt.
- Erzeugen Sie ein initramfs mit dem Paket fbvnc-ssh bei http://tiny.slitaz.org/
- Auf dem Server sollte VNC nur auf Verbindungen von localhost warten
- Der öffentliche SSH-Schlüssel des Klienten befindet sich in $HOME/.ssh/authorized_keys auf dem VNC-Server
- Der VNC-Verkehr kann im SSH-Tunnel komprimiert werden (fbvnc unterstützt nur „raw frames“)
Eine schnelle Demonstration
Über das Menü Tiny SliTaz → Tiny VNC von SliTaz „Web Boot“ wird der VNC-Klient ohne SSH gestartet (es wird ein VNC-Server in Ihrem Netzwerk benötigt…).
Qualitätsbericht | |
---|---|
Qualität | gut |
Überprüfung | Kleinere Aktualisierungen |
Priorität | mittel |
Probleme | ungültige Verweise: http://rom-o-matic.net/ http://mirror.slitaz.org/boot/mips/tftpd |
Verbesserungsvorschläge | Lesbarkeit verbessern |