PXE-Bootservice: Installation von Windows/Linux über PXE-Netboot
Martin Holzinger
Zum Aufsetzen von Rechnern, die über kein Floppy- bzw. CD/DVD-Laufwerk
verfügen, wurde die Möglichkeit einer Installation über Netzwerk untersucht.
Der Bootvorgang erfolgt dabei mittels PXE (Preboot Execution Environment ).
Über einen temporär im Subnetz gestarteten DHCP-Server wird der zu installierende
Client zu einem TU-internen Boot-Server weiter geleitet.
PXE-Boot und Setup von Linux über Netzwerk ist schon seit längerer Zeit
Standard und soll hier nur kurz beschrieben werden:
Vor dem eigentlichen Boot-Vorgang sendet die Netzwerkkarte des Client DHCP-Requests
aus und bekommt vom Server zunächst seine Koordinaten im Netzwerk (IP-Adresse,
Subnet-Mask, Gateway, Domain-Name etc.) zugewiesen. Über den Netboot-Loader
pxelinux.0 wird ein Willkommens-Bildschirm präsentiert, nach Auswahl einer
Option erfolgt der eigentliche Boot-Vorgang durch Transfer einer Boot-Image-Datei
mittels TFTP (Port 69). Ab hier übernimmt der Linux-Kernel in gewohnter
Weise das Setup.
Hinsichtlich des Setups von Windows-Betriebssystemen nehmen nun folgende
Überlegungen Rücksicht auf die speziellen Gegebenheiten im TUNET:
-
Die Möglichkeit eines Redirect mittels der next-server-Option bedeutet,
dass ein TU-weiter Boot-Server realisiert werden kann. Ein DHCP-Server
ist hingegen stets im Subnetz erforderlich und temporär zu betreiben, da
DHCP-Requests nicht geroutet werden.
-
RIS (Remote Installation Service), die Microsoft-Lösung zum Setup von Windows,
kommt für einen TU-weiten Betrieb nicht in Frage, der Zugang zu den Installations-Bits
soll auf jeden Fall über den Software-Distri- butionsserver (Solaris) unter
Passwort-Validierung erfolgen.
-
Es kann problemlos von Floppy-Images in ein 16-Bit- DOS mit Netzwerkunterstützung
gebootet werden. Nach anschließendem Mounten des Software-Distributionsservers
lassen sich dann alle Windows-Versionen außer XP installieren.
-
Windows XP hat in der Campus-Version den Aktivierungskey eingearbeitet,
aus diesem Grund muss die Setup- Prozedur aus einem 32-Bit Betriebssystem
heraus aufgerufen werden. Microsoft stellt hier mit WINPE (Preinstallation
Environment) eine solche Umgebung zur Verfügung, der Bootvorgang von WINPE
über pxelinux ist jedoch schwierig zu realisieren und lässt an Komfort
zu wünschen übrig.
BartPE
BartPE (für nähere Informationen siehe
http://www.nu2.nu/pebuilder/) ist
mehr als eine Alternative zu WINPE von Microsoft. Während WINPE lediglich
eine dürftige 32-Bit Command-Shell mit englischem Tastaturtreiber präsentiert,
handelt es sich bei BartPE um ein Thin-Client-Windows mit automatischer
Netzwerkkonfiguration (über DHCP), Anpassungsmöglichkeit der Bildschirmauflösung
und des Tastatur-Layouts sowie vielen weiteren Tools wie File Managern
(A3 und Total Commander), VNC, Putty, Remote-Desktop-Verbindung, Web-Browser
und anderes mehr. Auch können weitere kommerzielle Tools eingearbeitet
werden: Backup-Software wie Ghost oder Acronis, Viren-Scanner etc.
Der Willkommens-Bildschirm
BartPE: Ein 32-Bit Thin-Client mit allen notwendigen Add-Ons
Zum Vorbereiten der Festplatte steht diskpart zur Verfügung. Der Nachfolger
von fdisk ermöglicht das Anlegen von NTFS-Partitionen im Terabyte-Bereich.
Die Syntax ist etwas gewöhnungsbedürftig: Um beispielsweise auf einem leeren
Datenträger eine primäre NTFS-Partition mit 10 GB anzulegen und als Laufwerk
C: zu aktivieren, verfährt man folgendermaßen:
Sel DIS 0
Clean
CRE PAR PRI SIZE=10240
ASSIGN LETTER C:
ACT
Nach dem Formatieren des Datenträgers (etwa in der DOS-Shell) kann dann
in gewohnter Weise eine Samba- Verbindung zum Software-Distributionsserver
(swd. tuwien.ac.at) aufgebaut werden ... Die Installation des gewünschten
Betriebssystems geschieht durch Aufruf von setup.bat im jeweiligen Installationsverzeichnis.
Eine elegante Lösung: BartPE über Netzwerk booten
Es liegt nun der Versuch nahe, BartPE (anstatt wie vom Entwickler vorgesehen
von CD) über PXE zu booten. Als Prototyp des Boot-Servers fungiert dabei
eine disk- less-Linux-Variante (bootet von CD und lädt die PE-Installationsdateien
ins Ramdrive), Devil-Linux 1.2.3, vgl.
http://www.devil-linux.org/.
Der schematisierte Boot-Vorgang
Eine detaillierte Anleitung zur erfolgreichen Realisierung findet sich
unter
http://oss.netfarm.it/guides/pxe.php, im Wesentlichen sind folgende
Punkte zu beachten:
-
Voraussetzungen: Der Client muss über eine PXE-bootfähige Netzwerkkarte
verfügen und im BIOS muss diese Bootoption aktiviert sein. Ein DHCP-Server
ist im Subnetz mit der next-server-Option (redirect auf den Boot-Server) zu starten, der dem Client eine IP-Adresse mit gültigem DNS-Eintrag
(notwendig für die Verbindung zum Software-Distributionsserver) zuweist. Am Institut ist demnach ein weiterer Rechner erforderlich. Die TFTP-Root
des Boot-Servers wird nach dem Boot von CD in den Arbeitsspeicher kopiert
und der TFTP-Daemon wird gestartet.
-
Etwas trickreich ist das chain-loading: Der original Networkloader von
Microsoft wird mit einem Hexeditor etwas modifiziert und von pxelinux.0
als default Loader präsentiert. Per TFTP werden (die ebenfalls hinsichtlich
der Dateistrukturen modifizierten Windows-Loader) ntldr und ntdetect.com
geladen und exekutiert.
-
Zur Erkennung der Netzwerkkarte (etwa 1500 werden unterstützt) muss am
Boot-Server ein weiteres Service permanent gestartet sein: Der Boot Information
Negotiation Layer (BinL-Service) ist dem Original von Microsoft in Python
nachprogrammiert.
-
Nach erfolgreichem Erkennen der Netzkarte werden auf dem Client SMB-Treiber
geladen und die Datei winnt.sif verarbeitet. In ihr finden sich Informationen
bezüglich Computername und Ort der Installationsdateien. Ab diesem Zeitpunkt
geht der Datentransfer von TFTP zu SMB über, am Boot-Server muss also auch
ein SMB-Service (mit anonymous login) gestartet sein.
-
Der restliche Boot-Vorgang gleicht dem von CD.
-
Um mehreren Clients gleichzeitig das Booten zu ermöglichen, müssen unterschiedliche
Computernamen vergeben werden. Dazu wurde das Python-Script (also der BinL-Server)
dahingehend modifiziert, dass nach jedem erfolgreichen Boot die Datei winnt.sif
mit anderem Computernamen neu generiert wird.
Zu bemerken ist, dass der Boot-Vorgang in einem 100 MBit-LAN etwa um einen
Faktor 5 schneller erfolgt im Vergleich zum Booten von BartPE über CD-Laufwerk.
Dies ist vor allem auf den Umstand zurückzuführen, dass ein Datentransfer
RAM-LAN-RAM vom Boot-Server zum Client erfolgt.
Es ist geplant, das PXE-Bootservice im Rahmen des Plattform-Supports zu
unterstützen.