Man soll es nicht glauben, auch der XenServer kann über PXE unbeaufsichtigt installiert werden. Dieser Artikel beschreibt das Grundgerüst (vielen Dank an Oliver Lomberg, Citrix) und was man in einem weiteren Schritt noch daraus machen kann.
Zuerst benötigen wir mal einen Rechner der als TFTP/PXE Server dienen soll. Ich habe hier einen virtuellen Windows 2003 Server den ich für diesen Artikel missbrauche. Da nicht jeder einen TFTP Server im Unternehmen oder Zuhause zur Verfügung hat, nutze ich für diesen Beitrag den TFTPD32. Für die Sourcen des XenServer brauchen wir jetzt noch einen Linux-verträglichen Fileshare. Hierfür bietet sich HTTP an, weswegen wir auf der PXE Maschine noch einen Webserver benötigen. Man könnte jetzt auf den IIS zurückgreifen, wer sich damit aber nicht rumärgern will nimmt einfach den NAN-Webserver.
Zu guter letzt benötigen wir noch ein Linux, welches wir über PXE booten können und die beiden XenServer 5.5 CD's (Installation und Linux Pakete). Als Linux laden wir uns einfach das Syslinux-Paket von Kernel.org runter, aus dem wir lediglich ein paar Binaries benötigen. Ich benutze hier das Paket syslinux-3.82.zip, wenn eine neuere Version auf kernel.org verfügbar ist, kann auch diese benutzt werden.




Fangen wir mal damit an, unseren Bootserver vorzubereiten. Als erstes legen wir einen Ordner unter C:\ an den wir TFTPD nennen. In diesen Ordner entpacken wir das tftpd32.xxx.zip Archiv. Das ganze sollte dann etwa wie folgt aussehen:
Ein TFTP Server benötigt jetzt noch ein Base Directory in dem unter anderem auch seine Bootfiles liegen. Hier legen wir unterhalb von C:\TFTPD einfach noch einen Ordner mit dem Namen tftpboot an. Wenn das erledigt ist öffnen wir das heruntergeladene syslinux-3.82.zip Archiv. Aus diesem Archiv benötigen wir 4 Binaries, die wir in den Ordner C:\TFTPD\tftpboot entpacken.
| Pfad im Archiv | Dateiname | Kopieren nach |
|---|---|---|
| syslinux-3.82.zip\core | pxelinux.0 | C:\TFTP\tftpboot |
| syslinux-3.82.zip\com32\mboot | mboot.c32 | C:\TFTP\tftpboot |
| syslinux-3.82.zip\memdisk | memdisk | C:\TFTP\tftpboot |
| syslinux-3.82.zip\com32\menu | menu.c32 | C:\TFTP\tftpboot |
Der Ordner C:\TFTP\tftpboot sollte nun exakt wie folgt aussehen:
Unser Bootfile ist nun da, muss aber noch konfiguriert werden. Das erledigt eine Konfigurationsdatei für uns. Hierfür müssen wir aber noch einen Unterordner mit dem Namen pxelinux.cfg unter C:\TFTP\tftpboot anlegen. In diesem Ordner befinden sich ausschließlich die Konfigurationsdateien für PXELINUX. Wie greift PXELINUX nun auf die Konfigurationsdateien zu:
Beispiel: Ein Rechner mit der UUID b8945908-d6a6-41a9-611d-74a6ab80b83d, der MAC-Adresse 88:99:AA:BB:CC:DD und der IP-Adresse 192.168.0.92 (Hexadezimal C0A8005B) will über PXE starten. Dann schaut pxelinux.0 im Ordner C:\TFTP\tftpboot\pxelinux.cfg in der folgenden Reihenfolge nach Konfigurationsdateien.
tftpboot/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd tftpboot/pxelinux.cfg/C0A8005B tftpboot/pxelinux.cfg/C0A8005 tftpboot/pxelinux.cfg/C0A800 tftpboot/pxelinux.cfg/C0A80 tftpboot/pxelinux.cfg/C0A8 tftpboot/pxelinux.cfg/C0A tftpboot/pxelinux.cfg/C0 tftpboot/pxelinux.cfg/C tftpboot/pxelinux.cfg/default
Diese Beispiel zeigt, das für unterschiedliche System oder auch Gruppen (basieren auf der IP-Adresse) unterschiedliche Konfigurationsdateien angelegt werden können. Wenn keine entsprechende Datei gefunden wird, greift zu guter letzt die Datei tftpboot/pxelinux.cfg/default. Wie diese Datei aufgebaut wird steht im Syslinux Archiv unter syslinux-3.82.zip\doc\syslinux.txt. In unserem folgenden Beispiel wird ein Bootmenü gezeigt, welches 1. Boot to local disk und 2. Install XenServer anbietet. Kommen wir erstmal zu unserer default Konfigurationsdatei:
default menu.c32 prompt 0 menu title PXE Boot Menu menu INCLUDE pxelinux.cfg/graphics.conf menu AUTOBOOT Starting local System in # seconds label bootlocal menu label ^Boot to local Hard Drive menu default localboot 0 timeout 80 TOTALTIMEOUT 9000 label Setup Xenserver menu label ^Install XenServer KERNEL mboot.c32 APPEND xenserver/xen.gz dom0_mem=752M c0m1=115200,8n1 console=com1,tty --- xenserver/vmlinuz root=/dev/ram0 ramdisk_size=32758 console= ttyS0,115200n8 console=tty0 answerfile=http://10.10.0.10/xenserver55.xml install --- xenserver/install.img
Wer aufgepasst hat, wird feststellen das wir noch diverse Files benötigen. Unsere Konfiguration setzt eine Datei mit dem Namen graphics.conf im Verzeichnis pxelinux.cfg/ voraus. Im Root des TFTP Basisverzeichnis muss ein Ordner mit dem Namen xenserver/ vorhanden sein, in dem die Dateien xen.gz, install.img und vmlinuz liegen. Auf einem Webserver mit der Adresse http://10.10.0.10/xenserver muss auch noch ein Antwortfile mit dem Namen xenserver55.xml vorhanden sein.
Die Datei graphics.conf ist einfach nur für die Optik verantwortlich. Wer seine Menüs ansprechend gestalten will, kann hier diverse Farbeinstellungen konfigurieren. Mehr Infos dazu findet ihr im Syslinux Wiki von Peter Anvin. Folgende Bilder Zeigen mal die Ansicht ohne und mit graphics.conf.
Wo bekommen wir jetzt aber den Rest der fehlenden Dateien her? Die Dateien xen.gz, install.img und vmlinuz sind die Installationspakete von der XenServer CD. Wir legen uns also unterhalb unseres C:\TFTPD\tftpboot noch einen Ordner mit dem Namen xenserver an und kopieren uns die Dateien install.img (liegt im Root der Installations CD) sowie xen.gz und vmlinuz (aus dem Verzeichnis \boot der Installations CD) in das neu erstellte Verzeichnis. Was dann so aussehen sollte:
Jetzt brauchen wir nur noch den Webserver, der ja alle Sourcen und die entsprechenden Antwortfiles zur Verfügung stellt. Prinzipiell kann es jeder beliebige Webserver sein, ich habe mich aber hier für einen kleinen Webserver entschieden der ohne Installation auskommt. Ich habe hier einfach einen Ordner mit dem Namen WS im Root von C:\ angelegt und den ganzen Inhalt vom heruntergeladenen nanweb.zip Archiv dorthin entpackt. Was dann so aussehen sollte:
Da der NAN-Webserver per default nur auf Zugriffe auf den localhost reagiert und ich das Document Root Verzeichnis noch ändern will, müssen wir die Datei settings.txt etwas anpassen. Der geändert Teil sieht dann so aus:
// Optional configuration for NAN-Webserver // // SETTINGS: [edit a line and remove "//" to enable a setting] //port=82 hostname=10.10.0.10 clientip=10.10.0. docroot=..\TFTPD\tftpboot\xenserver //php=<path to php.exe>\php.exe //pl=<path to perl.exe>\perl.exe //browser_commands=0
Jetzt machen wir uns an die noch fehlende Antwortdatei für die XenServer Installation. Die Antwortdatei ist im XML Format und wird (leider nicht sehr ausführlich) im XenServer Admin Guide beschrieben. Meine Antwortdatei sieht z.B. so aus:
Wer sich nicht mit der Antwortdatei aufhalten möchte, kann ein kleines Tool zum Anlegen einer oder mehrerer Antwortdateien verwenden.
Die markierten Stellen müssen natürlich noch an die jeweilige Umgebung angepasst werden. In unserer Antwortdatei verweisen wir mit dem Element <source> … </source> auf die eigentlichen XenServer Sourcen. Hierzu legen wir im Dokument-Root unseres Webservers noch unter dem Ordner xenserver einen Ordner sourcen an. Wir erinnern uns, der Document-Root unseres Webservers zeigt auf C:\TFTPD\tftpboot\. Von der Installations CD kopieren wir jetzt den kompletten Ordner packages.main und von der Linux CD den kompletten Ordner packages.linux in den erstellen Ordner sourcen. Das sollte dann wie folgt aussehen:
Prinzipiell sind wir an dieser Stelle mit den Vorbereitungen fertig.
Als erstes starten wir nun den TFTPD32, da dieser noch etwas konfiguriert werden muss. Nach dem Start klicken wir in der GUI vom TFTPD32 erstmal auf den Button Settings. Die meisten Einstellungen sind selbsterklärend, hier zur Übersicht mal meine Konfiguration:
Nach dem das Settings Fenster geschlossen ist, muss jetzt noch der DHCP Server konfiguriert werden. Ich denke DHCP ist selbsterklärend, wichtig ist nur die Angabe des richtigen Boot files. So sollte es dann Aussehen:
Jetzt noch den Webserver mit einem Doppelklick auf C:\WS\nanweb.exe starten und der erste Client kann kommen.
Mit den vorher beschrieben Schritten haben wir jetzt einen Citrix™ XenServer unbeaufsichtigt per PXE installiert. Nun steht die Maschine zur Verfügung und wartet, was jetzt nicht wirklich produktiv ist. Unser XenServer benötigt jetzt ja noch eine Konfiguration z.B. Lizenzen installieren, Erstellen oder Aufnehmen in einen Pool, Shared Storage konfigurieren sowie gleich eventuelle virtuelle Maschinen vorbereiten. Genau für solche Dinge bietet die Antwortdatei ein Element namens <post-install-scripts> an. Und genau hier werden sich die Linux-Fans wohlfühlen, denn das machen wir mit Shellscripts. Da ich ja die Windows Nutzer nicht völlig verschrecken will, gibt es einen zweiten Artikel zum Thema XenServer 5.5 Post-Installation Skripte.
Natürlich kann bei den beschriebenen Artikel auch einiges schief gehen. Deshalb an dieser Stelle mal ein wenig Troubleshooting.
Wenn alles wie vorher beschrieben eingerichtet ist, kann es eigentlich nur an der Windows Firewall auf dem „PXE Server“ liegen. Am besten diese kurzfristig deaktivieren oder die entsprechenden Ports freigeben.
Selbstverständlich muss die Ziel-Hardware den Hardwareanforderungen entsprechen. Ich habe in geistiger Umnachtung versucht den XenServer auf eine Maschine mit nur 512 MB RAM zu installieren. Was natürlich gleich beim Booten schiefgeht, da wir ja eine 752 MB große RAM-Disk anlegen wollen. Auch beachten müsst ihr die Hard-Disk, der XenServer braucht allein 16 GB.
Wenn es bei der Hardware zu Problemen kommt oder ihr das Zielsystem auf einer virtuellen Maschine aufsetzen wollt, braucht die Konfigurationsdatei noch ein paar zusätzliche Optionen (acpi=off, nosmp, noapic, noirqbalance). Eine Beispiel default Datei nachfolgend:
default menu.c32 prompt 0 menu title PXE Boot Menu menu INCLUDE pxelinux.cfg/graphics.conf menu AUTOBOOT Starting local System in # seconds label bootlocal menu label ^Boot to local Hard Drive menu default localboot 0 timeout 80 TOTALTIMEOUT 9000 label Setup Xenserver menu label ^Install XenServer KERNEL mboot.c32 APPEND xenserver/xen.gz acpi=off nosmp noapic noirqbalance dom0_mem=752M c0m1=115200,8n1 console=com1,tty --- xenserver/vmlinuz root=/dev/ram0 ramdisk_size=32758 console= ttyS0,115200n8 console=tty0 answerfile=http://10.10.0.10/xenserver55.xml install --- xenserver/install.img