Linux-Arbeitskreis Hamburg |
PXE bedeutet pre-boot execution environment und ist im Prinzip ein spezielles Boot-Image für Netzwerkkarten. Die Software auf der Karte ist standardisiert und nicht mehr projektspezifisch, wie z.B. die Software für Etherboot. Für die PXE-Unterstützung unter Linux sorgt das Syslinux-Projekt bzw. sein Ableger PXELinux.
Sofern eine PXE-fähige Netzwerkkarte zur Verfügung steht wird es sehr leicht einen Rechner aus dem Netz zu booten. Im Prinzip läßt sich damit erst einmal jedes System starten, welches auch per Boot-Diskette zu starten wäre.
Man muss dazu nur aus einer Boot-Diskette eine Boot-Image erzeugen, was dann über das Netz wie eine Diskette gebootet wird.
Die Software, die man zum Erstellen des Images benötigt, bietet 3Com auf seinem FTP-Server als util430.exe zum Download an, leider ist uns nur die Version für Windows bekannt.
Hinweis: Da PXE-Images nahezu unabhängig von der Netzwerkkarte sind funktioniert die beschriebene Software auch mit den Netzwerkkarten anderer Hersteller als 3Com. Wir wissen aber nicht, ob die Nutzung der beschriebenen Software mit anderen Netzwerkkarten rechtlich zulässig ist.
Aus dem Paket util430.exe benötigt man eigentlich nur das Verzeichnis imgedit. Entweder extrahiert man nur dieses Verzeichnis (insgesamt 5 Dateien) aus dem Archiv, oder man installiert das gesamte Archiv durch den Aufruf von util430.exe und ignoriert den Rest einfach.
Beim ersten Start von Imgedit.exe stellt das Programm fest, dass es noch nie gestartet wurde und weist darauf hin, dass nun einige Registry-Einträge erstellen möchte.
Das Erstellen einer Imagedatei mit Imgedit ist recht einfach.
Über den Menüpunkt Create a TCP/IP or PXE image file kommt man zum Menü für das Erstellen der Image-Dateien.
In dem Eingabefeld muss man einen Dateinamen für das zu erzeugende Image angeben. Es ist sinnvoll hier auf die Extension .img zu achten, da sonst die weitere Nutzung des Programmes erschwert wird.
Als Quelle für die Bootdiskette stehen nur die physikalisch vorhandenen Laufwerke a: und eventuell b: zur Verfügung. Das Boot-Image kann eine reine Kopie dieser Bootdiskette werden, oder hinterher um zusätzliche Dateien erweitert werden. In der Regel wird man diese Erweiterungsmöglichkeiten nutzen wollen, also wählt man Extended capacity. Die maximal auswählbare Image-Größe beträgt 16MB. Mit dem Schalter Writeable erreicht man, dass das virtuelle Laufwerk nach dem Boot beschreibbar wird, was für Testzwecke sehr wichtig ist.
Nun muss man die Bootdiskette einlegen und kann dann auf OK klicken. Imgedit liest damit die gesamte Diskette in die Image-Datei ein.
Netzwerktaugliche Windows-Bootdisketten kann am einfachsten mit zusätzlicher Software erstellen.
Entweder mit der deutschsprachigen Software Netboot, die auf der HomePage von BackMagic (was man mit BackMagic anfangen kann, dafür gibt es eine eigene Seite) kostenlos zum Download angeboten wird, oder über die Software von Bart Lagerweij, die ebenfalls kostenlos verfügbar ist. Bei Bart Lagerweij ist die Unterstützung für Netzwerkkarten umfangreicher.
Nach dem Einlesen der Image-Datei kehrt das Programm in das Hauptmenü zurück.
Will man zu dem Image weitere Dateien hinzufügen, so klickt man auf Edit an existing file ... und wählt in dem folgenden Datei-Dialog die eben erstellt Image-Datei an.
Man sieht dann das Inhaltsverzeichnis der Image-Datei, hier eine Bootdiskette nach Bart Lagerweij. Über den Button-Add kann man weitere Dateien zu diesem Image hinzufügen, solange bis die vorher eingestellte Kapazität erschöpft ist.
Wenn das Image fertiggestellt ist, dann muss man noch das PXE Menu-File erzeugen. Dazu dient im Hauptmenü der Menüpunkt Create a PXE menu boot file ....
Zuerst ist die Liste nocht leer. Über den Button Add kommt man zu einem Fenster, in dem man über Browse das Image auswählen kann.
Zu jeder Image-Datei kann man noch eine Beschreibung mit angeben. Die Image-Datei sollte nun in der Übersicht auftauchen.
Man kann hier auch mehrere Images eintragen, zwischen denen man dann während des Boot-Vorganges auswählen kann. Im Reiter Options kann man einstellen, wie viel Zeit für die Auswahl zur Verfügung steht und welches Image nach Ablauf der Zeit standardmäßig geladen werden soll.
Über Save kommt man dan zu einem Dialog, über den man das PXE-Menü speichert, Vorgabe ist mba.pxe.
Nun muss nur noch der DHCP-Server so konfiguriert werden, dass der Client die Datei mba.pxe lädt. Gerade hier ist die Trennung in Image-Datei und Menü-Datei ganz praktisch. Man kann alle Images in die Menü-Datei aufnehmen und muss dann nicht jedesmal die dhcpd.conf verändern, um ein anderes Image zu booten, das geht dann zur Laufzeit über die Image-Datei.
Auf Client-Geräten ohne CD-Laufwerk ist die Installation von SuSE 8.1 mühsam, da relativ viele Disketten zum Programmstart benötigt werden. Noch schwieriger wird es, wenn auch kein Diskettenlaufwerk zur Verfügung steht.
Es ist aber nicht schwierig sich ein Bootimage zu erstellen, welches die notwendigen Funktionen beinhaltet.
Zuerst benötigt man eine DOS-Bootdiskette ohne Systemdateien. Diese Bootdiskette kann man auch unter Windows erstellen (dann mit DOS 7), man sollte nur darauf achten, dass keine Systemdateien übertragen werden.
Im zweiten Schritt muss nun Linux-Software auf diese Diskette gebracht werden, die zu dem Paket Syslinux gehört. Sollte auf dem Linux-Server dieses Paket nicht installiert sein, so muss es von der SuSE-CD nachinstalliert werden. Danach legt man die Diskette aus 3.1 ins Laufwerk des Linux-Rechners und ruft:
syslinux /dev/fd0
auf.
Die Diskette íst damit fertig und kann nun als Vorlage für eine Image-Datei dienen. Für die Image-Datei sollte man mindestens 6MB Speicherplatz reservieren. Danach kann man dann die Diskette einlesen, wie unter 2. beschrieben. Die Warnmeldung von Imgedit "This does not appear to be a bootable disk" kann man dabei getrost ignorieren, das Programm scheint eine normale DOS-Systemdiskette zu erwarten. Der Name für das Image könnte z.B. suse81.img lauten.
Diese Image-Datei muss nun um weitere Dateien von der ersten SuSE-CD erweitert werden.
Man legt also jetzt die CD ein (Laufwerk e:) und klickt auf Add für das Image. Aus dem Verzeichnis e:\boot\loader\ lädt man einfach alle acht Dateien (5,9MB) zum Image hinzu (Achtung: Dateityp auf All Files umstellen).
Nun muss man noch die Datei isolinux.cfg in syslinux.cfg umbenenen (anklicken -> File -> Rename), damit das Image fertig ist. Zuletzt noch ein PXE menu boot file erzeugen, schon kann die SuSE-Installation per PXE-Boot starten.
Es ist nicht immer ganz leicht vor dem Kauf herauszubekommen, ob eine Netzwerkkarte PXE-fähig ist, oder nicht. Relativ einfach ist das mit der Intel PRO/100S, die von Haus aus mit PXE ausgerüstet ist. Die Karte kostet im Handel etwa 40
Deutlich preiswerter kann man aber mit Netzwerkkarten arbeiten, die den Chip RTL 8139 benutzen, dies ist bei vielen sehr preiswerten Karten der Fall (etwa 8). Diese Karten verfügen in der Regel über einen Steckplatz für ein BootROM. Da RealTek auf seinen Webseiten den PXE-Code für diesen Chipsatz anbietet (benötigt wird nur die Datei rtspxe_m.nic) kann man sich das entsprechende Eprom selber brennen. Dafür kommen dann noch einmal 3,50 für das Eprom hinzu. Gute Erfahrungen gibt es mit Karten, die einen 28-poligen Sockel besitzen, hierfür kann im Elektronik-Handel (z.B. Conrad) die Bausteine 27512 oder 27C512 bekommen (ein Eprom-Brenner kostet bei Conrad 249, rechnet sich also relativ schnell).
Mit VIA-Chipsatz findet man häufiger PXE-fähige Netzwerkkarten On-Board, die zuverlässig arbeiten. Mit anderen Karten liegen bisher keine Erfahrungen vor, die Suche nach PXE-Code für DEC 21140 Chipsätze verlief bisher erfolglos.
Mit dem Chipsatz AN983B von ADMtek scheint es Probleme zu geben, so lassen sich nur relativ kleine Dateien per PXE übertragen.