SDB:Netzwerkinstallation von openSUSE 10.2 über PXE-Boot
aus openSUSE, der freien Wissensdatenbank
Inhaltsverzeichnis |
Anliegen
Sie möchten openSUSE 10.2 auf einen über PXE bootfähigen Rechner über das Netzwerk installieren. Dies ist z.B. notwendig, wenn man das Starterkit 13 von easylinux verwendet und einen Rechner nur mit USB-Geräten hat. Hier kann das Bootmenü nicht bedient werden, da die Tastatur nicht erkannt wird.
Hintergrund
Das sogenannte Preboot Execution Environment (kurz PXE) ist ein Protokoll, welches das Booten eines Computers über das Netzwerk ermöglicht. Das PXE ist im ROM neuerer Netzwerkkarten gespeichert und wird, je nach konfigurierter Bootreihenfolge im BIOS des entsprechenden Rechners, nach dem Einschalten des Computers in den Speicher geladen und ausgeführt. Nach erfolgtem Start wird ein Bootmenü angezeigt, welches die jeweiligen verschiedenen Bootoptionen anzeigt.
Voraussetzungen dafür sind:
- ein DHCP-Server für die automatische Vergabe einer IP-Adresse an den PXE-Client.
- ein nfs-Server für die Bereitstellung der Installationsquelle (Installationsrepository)
- ein tftp-Server für die Bereitstellung des Kernelbootimages zum Starten des PXE-Clients.
Diese drei Serverdienste können auf unterschiedlichen Rechnern konfiguriert werden. In dem hier beschriebenen Artikel werden diese jedoch auf einem Rechner zusammengefaßt. Ferner bezieht sich dieser Artikel nur auf die Bereitstellung des Installationsrepositorys über NFS - auf die Konfiguration eines ftp-Servers als Installationsquelle wird an dieser Stelle verzichtet. Es wird darüberhinaus nur auf die zusätzlich zu einer bestehenden DHCP-Server Konfiguration notwendigen Konfigurationsoptionen eingegangen. Alle hier beschriebenen Konfigurationen des "Installationsservers" beziehen sich auf eine Standardinstallation des openSUSE 10.2 (10.1), weitere Versionen ggf. mit Änderungen.
Vorgehen
Konfiguration des DHCP Servers
Konfigurieren Sie Ihren DHCP Server entsprechend den Anforderungen Ihres Netzwerkes. Beispiel:
- legen Sie in YaST->Netzwerkgeräte->Netzwerkkarte eine statische IP z.B: 192.168.100.1 fest. (hier hat "Traditionelle Methode mit ifup" bei mir besser als "NetworkManager" funktioniert). Die Subnetzmaske lautet hierbei 255.255.255.0.
- Danach konfigurieren Sie den DHCP Server mit YaST->Netzwerkdienste->DHCP-Server. Aktivieren Sie bei der Kartenauswahl ihre Netzwerkkarte und setzen sie einen beliebigen Domainnamen bei den "Globalen Einstellungen". Bei "Dynamisches DHCP" muss im Feld "Aktuelles Netzwerk" bereits eine IP-Adresse stehen, falls nicht, wurde der Schritt zuvor nicht erfolgreich durchgeführt. Ansonsten ist hier der Bereich von 192.168.100.2 bis 192.168.100.100 zu vergeben.
- Tipp: bei Problemen löschen Sie die Datei
/etc/dhcpd.confund führen den vorherigen Schritt nochmal durch. - Anschließend kann der DHCP-Server gestartet werden.
Wenn Sie abschließend getestet haben, daß die automatische Adressvergabe für die Clients korrekt und zuverlässig funktioniert (einfach den Client booten, und die Bildschirmausgabe ansehen), editieren Sie die Datei /etc/dhcpd.conf und fügen die folgenden Zeilen am Ende an:
group {
# PXE related stuff ...
#
# "next-server" defines the tftp server which will serve the pxelinux image to the PXE clients.
next-server 192.168.100.1;
#
# "filename" specifies the pxelinux image on the tftp server which will be served to the PXE clients.
# The configured tftp server on 192.168.100.1 runs in a "change-root jail" to /tftpboot
filename "pxelinux.0";
# Es ist nicht beschrieben, wie man den tftp server in einen "change-root jail" bringt
# Die Standardinstallation von OpenSUSE 10.1 macht das nämlich nicht!
# bei mir lautete dann der filename:
# filename "/tftpboot/pxelinux.0";
host Zert120 { hardware ethernet 00:10:dc:95:d7:b7; }
}
-
next-server(hier192.168.100.1) spezifiziert die IP-Adresse des tftp Servers, der sowohl den Bootloader pxelinux, als auch das zu bootende Bootimage und die initrd für die PXE-Clients bereitstellt. -
filenamegibt das zu bootende pxelinux Bootloader Image an, welches für die PXE-Clients bereitgestellt wird. -
hostspezifiziert den Hostnamen, sowie die Hardwareadresse der Netzwerkkarte eines PXE-Clients, für den die vorherigen beiden Optionen gültig sein sollen. An dieser Stelle müssen Sie die jeweilige Hardwareadresse (hier00:10:dc:95:d7:b7) sowie den gewünschten Hostnamen des Clients (hierZert120) eintragen. Die Angabe mehrerer hosts Zeilen ermöglicht an dieser Stelle das Booten von mehreren Clients von dem tftp Server.
Starten Sie abschließend den DHCP Server durch die Eingabe von rcdhcpd restart oder in YaST->Netzwerkdienste->DHCP-Server neu.
Eine ausführliche Erklärung der beschriebenen Optionen erhalten Sie in der Manual Page von dhcpd.conf die Sie mit man 5 dhcpd.conf aufrufen können.
Einrichtung des Installationsrepositorys und Konfiguration des nfs-Servers
Zum Einrichten eines openSUSE 10.1 (10.2) Installationsrepositorys gehen Sie wie folgt vor:
- Kopieren Sie die Installations-DVD in ein Verzeichnis Ihrer Wahl (z.B.
/home/xxx/openSUSE102)
Die Zeile:
/home/xxx/openSUSE102/ *(ro,root_squash,sync)
in der Datei /etc/exports exportiert nach einem Neustart des NFS-Servers durch rcnfsserver restart abschließend das Installationsrepository (hier das Verzeichnis: /home/xxx/openSUSE102/) für das Netzwerk 192.168.100.0. Dieser Eintrag muß abhängig von Ihrer Netzwerkkonfiguration und dem Verzeichnis Ihres Installationsrepositorys geändert werden.
Eine ausführliche Erklärung der für den nfs Server möglichen Optionen erhalten Sie in der Manual Page von exports die Sie mit man 5 exports aufrufen können.
Konfiguration des tftp Servers
- Erstellen Sie (falls es noch nicht existiert) das Verzeichnis
/tftpbootund/tftpboot/pxelinux.cfg - Wechseln Sie in das Verzeichnis Ihres Installationsrepositorys. Geben Sie zu Kopieren ein:
cp -a boot/i386/loader/linux boot/i386/loader/initrd boot/i386/loader/message boot/i386/loader/memtest /tftpboot die Dateienlinux initrd message memtestin das Verzeichnis/tftpboot.
- Installieren Sie das Paket
syslinux, das Sie auf ihrer Installations-DVD finden. - Zum Kopieren der Datei
/usr/share/syslinux/pxelinux.0geben sie ein: (Es macht keinen Unterschied, ob man das pxelinux.0 von einer 32-Bit-Distribution für eine 64-Bit-Distribution verwendet. Beide sind gleich.)
cp -a /usr/share/syslinux/pxelinux.0 /tftpboot
in das Verzeichnis /tftpboot.
- Wechseln Sie in das Verzeichnis Ihres Installationsrepositorys. Geben Sie zu Kopieren ein:
cp -a boot/i386/loader/isolinux.cfg /tftpboot/pxelinux.cfg/default die Dateiisolinux.cfgnach/tftpboot/pxelinux.cfg/default
- machen Sie die Datei
/tftpboot/pxelinux.cfg/defaultbeschreibar. - Editieren Sie die Datei
/tftpboot/pxelinux.cfg/defaultund entfernen Sie die Zeilen die mit:-
gfxboot
-
- Fügen Sie in den
appendZeilen der Labeldefault failsafeundnolapicdie folgenden Einträge an:-
insmod=e100Dieser Eintrag bewirkt, daß auf dem PXE-Client das Kernelmodul für eine Intel 100MBit/s Netzwerkkarte geladen wird. Dieser Eintrag ist abhängig von der Hardware Ihres Clients, und muß entsprechend geändert werden. Bei einer Broadcom GigaBit Netzwerkkarte würde dieser Eintraginsmod=bcm5700lauten. Es kann auchinsmod=e1000sein, wenn man eine Intel Gigabit-Karte hat. Hier hilft auch ein Booten des Clients mit einer Knoppix-Distribution und danach der Befehlifconfig. -
netdevice=eth0Dieser Eintrag spezifiziert das Netzwerkinterface des Clients, welches für die Netzwerkinstallation benutzt werden soll, und ist nur dann notwendig, wenn mehrere Netzwerkkarten in den Clients verbaut sind. Dieser Eintrag muß dann entsprechend angepaßt werden. Bei nur einer Netzwerkkarte kann dieser Eintrag komplett entfallen. -
install=nfs://192.168.100.1/home/xxx/openSUSE102Dieser Eintrag legt den nfs Server und die Installationsquelle für die Installation der Clients fest, und muß gegebenenfalls angepaßt werden. - Eine, für die openSUSE 10.2 - Netzwerkinstallation, angepaßte
/tftpboot/pxelinux.cfg/defaultfinden Sie hier:
-
default harddisk # hard disk label harddisk localboot 0x80 # install label linux kernel linux append insmod=e100 install=nfs://192.168.100.1/home/xxx/suse102 initrd=initrd splash=silent showopts # noacpi label noacpi kernel linux append initrd=initrd splash=silent showopts acpi=off # nolapic label nolapic kernel linux append initrd=initrd splash=silent showopts nolapic # failsafe label failsafe kernel linux append initrd=initrd splash=silent showopts apm=off acpi=off mce=off barrier=off ide=nodma idewait=50 i8042.nomux psmouse.proto=bare irqpoll pci=nommconf # rescue label rescue kernel linux append initrd=initrd splash=silent rescue=1 showopts # bios test label firmware kernel linux append initrd=biostest,initrd splash=silent install=exec:run_biostest showopts # memory test label memtest kernel memtest implicit 1 gfxboot bootlogo display message prompt 1 timeout 200
Der TFTP Server wird über YaST->Netzwerkdienste->TFTP-Server aktivieren und durch rcxinetd restart gestartet.
Wird nun ein PXE-Client im Netzwerk gebootet, so erhält er vom DHCP Server eine IP Adresse. Daraufhin fordert der Client einen PXE Bootloader (pxelinux.0) an, der auf dem Client zur Ausführung kommt. Dieser wertet die IP Adresse des Clients aus, und wandelt diese in HEX um. Nun wird auf dem Server (im Verzeichnis /tftpboot/pxelinux.cfg) eine Konfigurationsdatei gesucht, die genauso heißt wie der eben ermittelte HEX Wert. Wird diese nicht gefunden wird von diesem Wert eine Stelle abgezogen und erneut gesucht. Wird keine passende Konfigurationsdatei gefunden, so wird am Ende die Konfigurationsdatei default gesucht und entsprechend ausgewertet. In dem oben gezeigten Beispiel wird für alle PXE-Clients das Installationsmenu von openSUSE 10.2 im Textmodus angezeigt. Durch diesen Mechanismus ist es möglich für verschiedene Clients unterschiedliche Bootkonfigurationen zu erstellen. Informationen dazu finden Sie in dem Paket syslinux unter /usr/share/doc/packages/syslinux/pxelinux.doc und /usr/share/doc/packages/syslinux/syslinux.doc. Die nach Auswahl eines Menüeintrages startende Installation kann wie im Handbuch beschrieben durchgeführt werden.
Tipps
Nach dem Booten des frisch installierten openSUSE 10.2 sollte in YaST->Software die Installationsquelle geprüft werden. Dort sollte ein Eintrag mit der URL nfs://192.168.100.1/home/xxx/openSUSE stehen, dessen "Auffrischen" auf deaktiviert sein sollte.
Die relevante MAC-Adresse für die Ethernet-Karte in der dhcp.conf Datei kann man erhalten, indem man den Client Rechner einmal mit Knoppix bootet und dort den Befehl ifconfig eingibt. (man kann die MAC-Adresse auch unter Windows XP oder Windows Vista mit ipconfig /all erhalten)
Offene Fragen
Ich habe bei mir ein Problem mit dem Zusammenspiel zwischen dhcp-Server und DNS-Server. Ich nutze auf dem Boot Server noch einen
DNS-Sever. Dieser wird im dhcp-Server auch bekannt gemacht. Dann bekomme ich bei meinem PXE-Client die Meldung,
dass eine ARP Exception aufgetreten ist und er bootet dann nicht. Ich vermute, dass man den PXE-Client auch komplett
in den DNS-Server bekannt machen muss.
Keywords: Installation | Netzwerk | PXE | boot | booten | LAN

