Booten via LAN
Netzwerk-Kaltstart

Netzwerke

Neuere Rechner bieten die Möglichkeit, direkt via Netzwerk zu booten. Diese Funktion können Sie nutzen, um ein Rettungssystem aufzurufen oder um einen Terminal-Server für Thin Clients zu betreiben.

Anwendungsbereiche

Booten via LAN

Haben Sie sich schon einmal über die Bootoption »Netzwerk« in den Start-Einstellungen Ihres Bios gewundert? Fast jeder moderne PC bietet heute die Möglichkeit, nicht nur von lokalen Geräten wie Festplatte oder DVD zu starten, sondern unterstützt bereits von Haus aus die Option, direkt über das Netzwerk das Betriebssystem zu laden.

Einzige Voraussetzung für die Nutzung dieses Features ist, dass die verwendete Netzwerkkarte PXE-fähig ist. PXE steht für Pre-boot Execution Environment und ist ein spezielles Bootsystem für Netzwerkkarten, das in deren Boot-ROM fest implementiert ist. Netzwerkkarten von 3Com oder Intel sind häufig bereits von Haus aus PXE-fähig. Für preiswerte Netzwerkkarten, welche auf dem Realtek-Chipsatz basieren, existiert die Möglichkeit, den ROM-Baustein nachzurüsten.

Die Anwendungsfelder für das Booten via Netzwerk sind groß: Als Retter in der Not erweist sich der Start direkt aus dem Netzwerk, wenn die lokalen Boot-Geräte versagen oder technische Alternativen zur Festplatte in dem Endgerät nicht vorhanden sind. Praktisch ist ebenfalls die Möglichkeit, das Betriebssystem via Netzwerk-Bootvorgang direkt von dem Server auf mehrere Clients im LAN zu verteilen. Sehr beliebt ist auch die Option, via Netzwerk Thin Clients zu booten und diese als Frontend für einen zentralen Terminal-Server, beispielsweise unter Linux, zu verwenden.

Der Workshop zeigt, wie man mit Hilfe von Linux einen Server betreibt, der ein Linux- und Windows-Rettungssystem via Netzwerkboot anbietet. Zusätzlich zeigen wir Ihnen, wie man mit Hilfe des Linux-Terminal-Server-Projekts (LTSP) mit wenigen Handgriffen einen Terminal-Server für den Einsatz von Thin Clients installiert. Die Basis für den Workshop bildet ein Server mit Suse Linux 9.1. Voraussetzung ist, dass ein DHCP- sowie ein TFTP-Server installiert sind.


Basislager installieren

Booten via LAN

Während des Bootvorgangs via Netzwerk bezieht der Client zunächst eine IP-Adresse vom DHCP-Server. Über eine IP-Verbindung wird dem Client anschließend das Boot-Image durch den TFTP-Server zur Verfügung gestellt. Dieses Boot-Image wird durch den Client ausgeführt, um das Betriebssystem zu laden. Für die Konfiguration des DHCP-Servers benötigen Sie die Hardware-Adressen (MAC-Adressen) der Netzwerkkarten der Clients. Rufen Sie hierfür folgendes Kommando auf:

ifconfig

Unter Windows lautet das Kommando

ipconfig /all

Zunächst soll der DHCP-Server installiert werden. Die Konfiguration steuert die Datei /etc/dhcpd.conf. Für den geplanten Einsatz muss diese wie folgt aufgebaut sein:

allow booting;
allow bootp;
ddns-update-style none;
ddns-updates off;
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option domain-name “athome.local”;
option domain-name-servers 192.168.1.80;
default-lease-time 21600;
max-lease-time 43200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.15;
}
group {
next-server 192.168.1.90;
filename “pxelinux.0”;
host diskless1 {
hardware ethernet 00:00:F0:92:C8:F3;
fixed-address 192.168.1.9;
}}


Arbeit des DHCP-Servers

Booten via LAN

Ein so konfigurierter Server vergibt im lokalen Netzwerk athome.local mit der IP-Adresse 192.168.1.0/24 per DHCP Adressen im Bereich 192.168.1.10-15. Die IP-Adresse des Default-Gateways lautet 192.168.1.254, ein Nameserver ist unter der IP-Adresse 192.168.1.80 erreichbar. Um wichtige Konfigurationseinstellungen für die Clients zusammenzufassen, wurde eine Gruppe erstellt, die derzeit nur einen Client enthält. Der Vorteil einer solchen Gruppe ist, dass gemeinsame Einstellungen auf diese Weise bequem für mehrere Clients konfigurierbar sind. Die Netzwerkkarte des Client diskless1 besitzt die Hardware-Adresse 00:00:F0:92:C8:F3 und bekommt durch den Server die IP-Adresse 192.168.1.9 zugewiesen.


TFTP-Server einrichten

Booten via LAN

Wichtig für den Netzwerk-Bootvorgang sind die Einträge next-server und filename. Unter der für den next-server angegebenen IP-Adresse versucht der Client beim Netzwerk-Bootvorgang, einen TFTP-Server zu erreichen und von diesem die als filename angegebene Datei zu laden. Sind alle Einstellungen des DHCP-Servers korrekt, so muss dieser neu gestartet werden, um die Konfiguration zu laden. Führen Sie als Benutzer root den folgenden Befehl aus:

rcdhcpd restart

Viel einfacher als die Einrichtung des DHCP-Servers verläuft das Setup des TFTP-Servers. Die Einstellungen konfigurieren Sie mittels Yast 2 unter Netzwerkdienste, TFTP-Server. Aktivieren Sie den Server und legen Sie als Verzeichnis für die Boot-Images /tftpboot fest. Damit ist die TFTP-Serverkonfiguration abgeschlossen.


Bootloader konfigurieren

Booten via LAN

Bevor es an den ersten Netzwerk-Bootvorgang gehen kann, fehlt noch das Boot-Image für den Client. Unterstützung findet man beim Syslinux/PXE Linux Boot Loader. Eine aktuelle Version finden Sie auf der Heft-CD. Entpacken Sie die Datei mittels

tar ?zxvf syslinux-3.07.tar.gz

Kopieren Sie das Boot-Image pxelinux.0 in das Verzeichnis /tftpboot. Mit Hilfe dieses Images ist es möglich, später den Linux-Kernel direkt über das Netzwerk zu laden. Die Konfiguraton des Bootloaders wird mittels der im Verzeichnis /tftpboot/ pxelinux.cfg gespeicherten Dateien gesteuert. Legen Sie das Verzeichnis an und erstellen Sie dort die Datei default mit folgenden Inhalt:

prompt 1
timeout 60
default local
label local
localboot 0

Die aktuellen Einstellungen in der Datei sorgen dafür, dass der Bootloader nach dem Start einen Prompt anzeigt. Später kann man hier zwischen verschiedenen Betriebssystemen wählen. Derzeit steht nur die Option local zur Verfügung. Die Anweisung localboot 0 sorgt dafür, dass der Bootloader versucht, das lokal installierte Betriebssystem zu booten. Wird nur die Eingabetaste gedrückt oder erfolgt innerhalb von zehn Sekunden keine Eingabe, so wird automatisch das lokal installierte Betriebssystem gestartet. Auch wenn man derzeit nicht mehr kann als das lokale Betriebssystem mittels PXE-Bootloader zu starten, ist es Zeit für einen ersten Test. Aktivieren Sie den Netzwerk-Bootvorgang im Bios und starten Sie den Client. Wenn alles klappt, sehen Sie, wie der Client die IP-Adresse von Server erhält und der Bootloader übertragen und gestartet wird.


Windows-Rettungssystem

Booten via LAN

Nachdem die erste Kontaktaufnahme mit dem Server funktioniert hat, soll jetzt ein Windows-98-Rettungssystem vorbereitet werden. Wenn einmal ein PXE-fähiger Computer oder ein Notebook nicht mehr startet, wird über das Netzwerk das Rettungs-Windows gestartet, über das sich wichtige Dateien oder komplette Festplatten im Netzwerk sichern lassen. Als Hilfsmittel benötigen Sie eine Diskette. Bei der Erstellung der netzwerkfähigen Bootdisk hilft das Tool Bart?s Network Boot Disk, das Sie auf der Heft-CD finden. Entpacken Sie das Archiv auf einem Windows-System. Wechseln Sie in das Verzeichnis und rufen Sie dort

bfd msnet

auf. Das Tool stellt eine komplette Windows-98-Bootdiskette mit allen für den Netzwerkzugriff notwendigen Treibern zusammen. Prüfen Sie, ob die auf dem Client eingesetzte Netzwerkkarte bereits bei den Standardtreibern enthalten ist, und fügen Sie bei Bedarf den notwendigen Treiber in das Unterzeichnis \lib\ndis hinzu. Treiber für die meisten Netzwerkkarten gibt es unter www.nu2.nu/bootdisk/network. Legen Sie die Diskette in den Linux-Server ein und erzeugen Sie mittels

dd if=/dev/fd0 of=/t
ftpboot/winboot.img

eine Imagedatei. Ein solches Image lässt sich durch den Bootloader jedoch nicht direkt laden. Stattdessen verwenden wir ein Ramdisk-Image, das zunächst das Diskettenimage lädt und dieses anschließend startet. Das Memdisk-Image gehört zum Syslinux-Paket. Wechseln Sie für die Installation in den memdisk-Unterorder des syslinux-Verzeichnisses. Das Memdisk Image wird durch den Aufruf von

cp memdisk /tftpboot

in das TFTP-Verzeichnis kopiert. Anschließend wird die Datei /tftpboot/pxelinux.cfg/default um die Zeilen

label win
kernel memdisk
append initrd=winboot.img

ergänzt, um das neue Boot-Image durch den Bootloader zur Verfügung zu stellen. Beim nächsten Netzwerk-Bootvorgang kann jetzt das Windows-98-Rettungssystem durch die Eingabe von win im Bootloader-Prompt gestartet werden. Beim Start des Rettungssystems wird automatisch die Netzwerkkarte erkannt. Per Konsolen-Frontend werden die Login-Daten und das Mapping für das LAN angegeben. Über das Netzwerk lassen sich dann beispielsweise von einem Samba-Server Backup- und Images-Tools zur Sicherung der Datenbestände nachladen.


Linux-Rettungssystem

Booten via LAN

Während das Booten eines Windows-Rettungssystems den Einsatz der Memdisk erfordert, kann ein Linux-Kernel direkt über den Bootloader geladen werden. Für das Linux-Rettungssystem soll ein fertiger Fedora-Kernel (www.ecs.soton.ac.uk/~cet/wiul/vmlinuz-2.4.22-1.2115. nptlBOOT) mit einer vorbereiteten Ramdisk (www.ecs.soton.ac.uk/~cet/wiul/wiul-fedora.img.gz) zum Einsatz kommen. Kopieren Sie beide Dateien in das Verzeichnis /tftpboot. Durch die Erweiterung der Datei /tftpboot/pxelinux.cfg/default um die Zeile

label linux kernel vmlinuz-2.4.22-1.2115.nptlBOOT append initrd=wiul-fedora.img.gz rw root=/dev/ram ramdisk_size=65536 vga=1

wird das Linux-System über den Bootloader im Netzwerk zur Verfügung gestellt. Die mit dem initrd-Parameter angegebene Datei enthält dabei ein komplettes Mini-Dateisystem, das beim Start in eine Ramdisk geladen wird. Nach dem Start bietet das Linux-System zunächst keine Netzwerkunterstützung. Erst nachdem das für die Netzwerkkarte zuständige Modul geladen wurde, kann die Karte konfiguriert werden. Um beispielsweise eine Realtek-8139-Karte einzubinden und ihr eine IP-Adresse zuzuweisen, führen Sie folgende Befehle aus:

insmod 8139too
ifconfig eth0 192.168.1.8 up


Kosmetik für den Bootloader

Booten via LAN

In der aktuellen Konfiguration bietet der PXE-Bootloader recht wenig Bedienkomfort. So fehlt es beispielsweise an einer Ausgabe über die zur Verfügung stehenden Betriebssysteme beim Bootvorgang. Um eine solche Liste anzuzeigen, legen Sie Datei messages im Verzeichnis /tftpboot an und tragen hier die Zeilen

PXE Boot Loader
Bitte wählen Sie
local ? Lokales Betriebssystem
win – Windows 98 Rettungssystem
linux ? Linux Rettungssystem

ein. Anschließend fügen Sie am Anfang der Datei /tftpboot/pxelinux.cfg/default die Zeile

display messages

hinzu. Vorgestellt wurde bereits die Möglichkeit, über den Eintrag default festzulegen, welches Betriebssystem gestartet wird, wenn der Nutzer keine Eingabe vornimmt. Durch die Angabe eines anderen Labels kann damit das derzeitige Startverhalten verändert werden. Wird für den Eintrag prompt eine 0 statt einer 1 angegeben, so wird der Boot-Prompt nur angezeigt, wenn die [Shift]- oder [Alt]-Taste gedrückt wird. Wie die Abbildung »Netzwerk Boot Loader« auf der vorigen Seite zeigt, sucht der PXE-Bootloader nicht nur nach der Konfigurationsdatei default, sondern testet vorher noch eine Reihe weiterer Dateien. Die dabei überprüften Dateien entsprechen der Hardware-Adresse des Netzwerkadapters sowie der hexadezimal kodierten IP-Adresse des Clients. Auf diese Weise hat man die Möglichkeit, für einen speziellen Client eine spezifische Konfiguration für den Bootloader zu hinterlegen.


Linux-Terminal-Server aufbauen

Booten via LAN

Während bisher das Setup eines Rettungssystems im Mittelpunkt stand, widmet sich der letzte Teil des Workshops dem Aufbau eines Terminal-Servers unter Linux. Statt jeden einzelnen PC mit teurer Hardware auszurüsten, beruht das Konzept darauf, einen zentralen Server zu betreiben, auf dem die Anwendungen ausgeführt werden. Als Clients für die Benutzer eignen sich schon etwas in die Jahre gekommene Rechner, die als »dumme« Terminals lediglich die Eingaben entgegennehmen und die Ausgabe vom Server anzeigen. Lässt sich der Client via Netzwerk booten, so ist lokal nicht einmal die Installation einer Festplatte erforderlich.

Ein wesentlicher Vorteil dieses Konzepts ist, dass sämtliche Anwendungen und Daten zentral verwaltet werden.

Für den Aufbau eines solchen Linux-Terminal-Servers eignet sich das Linux Terminal Server Project (www.ltsp.org). Für den Netzwerk-Bootvorgang bedient sich LTSP ebenfalls des schon bekannten Duos aus DHCP- und TFTP Server. Zusätzlich muss noch ein NFS-Server auf dem Linux-System zur Verfügung stehen.

Das Installations-RPM-Paket, das Sie auf der Heft-CD finden, wird mittels

rpm -ihv ltsp-utils-0.10-0.noarch.rpm

installiert. Starten Sie das Setup-Programm, das automatisch alle Programmpakete aus dem Internet lädt, durch den Aufruf von

ltspadmin

Rufen Sie den Menüpunkt Install, Update LTSP Packages auf und folgen Sie den Anweisungen auf dem Bildschirm. Mit der Installation wird das Unterverzeichnis lts im Ordner /tftpboot angelegt, in dem der zu bootende Kernel sowie der Bootloader abgelegt sind. Alle weiteren Dateien werden in der Standardeinstellung in das Verzeichnis /opt/ltsp kopiert. Mit der Installation wurden bereits die notwendigen NFS-Exporteinträge in der Datei /etc/exports erzeugt. Stellen Sie sicher, dass auf dem Server der NFS-Server gestartet ist.


Anpassungen

Booten via LAN

Für den Start eines LTSP-Clients sind nur noch kleinere Veränderungen der DHCP-Server-Konfiguration notwendig. Hier wird zusätzlich die Zeile

option root-path “192.168.1.90:/opt/ltsp/i386”;

als Option eingefügt. Außerdem muss der Dateiname des Bootloaders auf den LTSP-Loader angepasst werden. Der Eintrag für eine neue Gruppe lautet dann wie folgt:

group {
next-server 192.168.1.90;
filename ” /lts/vmlinuz-2.4.26-ltsp-1″;
host diskless1 {
hardware ethernet 00:00:F0:92:C8:F3;
fixed-address 192.168.1.9;
}}

Da die LTSP-Clients nach dem Booten via Netzwerk die lokalen Datenträger nicht verwenden, werden Fehler- und Statusmeldungen an den LTSP-Server gesendet. Damit der hier installierte Syslog-Dämon die Fehlermeldungen aus dem Netzwerk entgegennimmt, muss in der Datei /etc/sysconfig/syslog die folgende Option gesetzt werden:

SYSLOGD_PARAMS=”-r”


Ein erster Test

Booten via LAN

Am sinnvollsten ist der Betrieb eines LTSP-Clients als X-Windows- oder Windows-Terminalserver-Client. Als Test für eine erfolgreiche Installation wollen wir jedoch mit einer einfachen Shell starten. Editieren Sie die Datei /opt/ltsp/i386/etc/lts.conf und setzen Sie in den Wert:

SCREEN_01=shell

Starten Sie den DHCP-Server sowie den Syslog-Dämon mittels

rcdhcpd restart
rcsyslogd restart

neu und booten Sie einen Client via Netzwerk. Wenn die erste Kontaktaufnahme mit dem LTSP-Server erfolgreich war, kann das grafische Login, das auf dem Terminal-Server erfolgt, akt
iviert werden. Die Einstellungen in der Konfigurationsdatei /opt/ltsp/i386/etc/lts.conf lauten wie folgt:

[Default]
SERVER = 192.168.1.90
XSERVER= auto
X_MOUSE_PROTOCOL = “PS/2”
X_MOUSE_DEVICE = “/dev/psaux”
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS= N
SCREEN_01= startx
XkbLayout= de
X_COLOR_DEPTH= 24
X_MODE_0= 640×480

Mit dieser Konfiguration wird auf dem Client ein X-Windows-System gestartet, das den Login-Bildschirm anzeigt. Das Login erfolgt direkt auf dem LTSP-Server. Da sämtliche Anwendungen dort ausgeführt werden, sollte dieser über eine ausreichend dimensionierte Hardware verfügen. Statt als Client für einen Linux-LTSP-Server zu arbeiten, kann der LTSP-Client auch Kontakt zu einem Windows-Terminalserver aufnehmen. Hierfür muss nur SCREEN_01 in der Konfigurationsdatei auf

SCREEN_01 = rdesktop ?f wts.athome.local

geändert werden.