Kleine Experimente mit iPXE durchgeführt

Viele von euch werden die PXE-Umgebung so eingerichtet haben, wie ich das in den von mir veröffentlichen Anleitungen erklärt habe. Es gab ja schon die ganze Zeit das Problem, dass man im UEFI-Modus immer in den sauren Apfel beißen musste, weil dort irgendwas nicht funktionierte. Entweder konnte man andere EFI Bootloader nicht quer laden oder diese hatten andere Probleme, wie zum Beispiel dass die meisten Tools dort nicht mehr funktionierten.

Ich habe mir daher mal das iPXE-Projekt etwas genauer angesehen. Damit könnten die bisher aufgetretenen Probleme gelöst werden. Wir könnten also sowohl für Linux Derivate, als auch für Windowsinstallationen endlich eine Ebene schaffen, die problemlos für beide Vorhaben funktionieren würde.

iPXE Firmwarestart
iPXE Firmwarestart

Hier seht Ihr beispielsweise den UEFI Netzwerkboot über IPv4.

Ablaufdarstellung

Hier wird nach dem eigentlichen Firmwarestart (Obere Bildschirmhälfte auf dem Bild) die neue Firmware geladen (Untere Bildschirmhälfte auf dem Bild). Er lädt also zuerst die ipxe.efi (Das ist die neue Netzwerk Boot Firmware), um dann erneut eine Anfrage an den DHCP Server zu stellen, der dann den eigentlichen PXE-Bootloader schickt. Das hört sich etwas umständlich an, aber anders funktioniert das leider nicht. Das würde nur komplett entfallen, wenn die Firmware selbst in das BootRom der Netzwerkkarte gebrannt würde. Ob das allerdings wirklich sinnvoll wäre, weiß ich nicht. Hier müssen aber zwei Firmware miteinander agieren, damit dieses Konstrukt funktioniert. Und genau deshalb funktionierte meine bisherige Anleitung auch nicht bei den Leuten, die diese iPXE Firmware verwendeten. Die DHCP-Option 209 geht nämlich schlicht auf dem Weg ohne Anpassungen an die neuen Gegebenheiten, verloren .

Beim Test entdeckte Schwierigkeiten

Träge mit pxelinux.0 im Legacy Modus

Wenn iPXE nicht nur für den UEFI Modus genutzt wird, sondern auch für den Legacy Mode, dann funktioniert das in Verbindung mit der PXELinux 6.04 Version etwas träge. Ich persönlich wäre auch dafür, iPXE nur für UEFI Geräte verwenden zu wollen. Syslinux ist nämlich ein mächtiges Tool. Denn in dem alten Legacy Mode ist dieses sogar besser als iPXE meiner Meinung nach. Jedenfalls kann Syslinux im Legacy Mode all das, was iPXE auch könnte. Ich finde rein von der Grundidee her, auch Syslinux bei Weitem verständlicher und nutzerfreundlicher (Menüaufbau und Befehle), als das was die Herren und Frauen da bei iPXE gezaubert haben. Das soll nicht heißen, dass diese keine großartige Arbeit geleistet haben! Es ist für mich nur etwas ungewohnt.

TFTP-BlockSize Werte werden nicht beachtet

Aus dem iPXE UEFI Menü heraus kann der Windows-Boot-Manager gestartet werden, aber die TFTP-Einstellungen werden dort nicht mehr beachtet. Ich hatte die TFTPBlockSize-Werte nämlich in der BCD-Datei verändert, um die TFTP Geschwindigkeit deutlich zu beschleunigen. Wenn der WBM über iPXE aufgerufen wird, dann werden diese Einstellungen anscheinend nicht beachtet. Die Übertragungen laufen dann nämlich wieder so langsam ab (4 MB/s), als hätte ich nichts optimiert. Wenn ich über das alte Pxelinux 6.04 den WBM aufrufe, ist es wieder normal schnell (20 MB/s). Woran es liegt weiß ich noch nicht.

iPXE ist unfähig die Syslinux.efi (pxelinuxEFI64.efi) zu starten

Unter Verwendung der iPXE Firmware lässt sich Syslinux im UEFI Modus nicht aufrufen. Dies wird immer mit einem Fehler quittiert. Das ist aber im Endeffekt auch egal. Ich dachte mir nur anfangs, es wäre sehr bequem einfach nur zwei Einträge im iPXE Menü zu erstellen:

Einen Verweis zum WBM und dann einem zum Syslinux UEFI Menü, denn dann hätte man alle Fliegen mit einer Klappe geschlagen ohne großartig viel ändern zu müssen. Das funktioniert nur dummerweise nicht. Naja, macht nichts.

iPXE UEFI – Das Keyboard Layout ist immer Englisch

Der Hersteller selbst schreibt in seiner Dokumentation, dass man die Sprache in der Datei /src/config/console.h mittels der Zeile:

 #define KEYBOARD_MAP us

ändern kann. Aber selbst wenn man das us gegen de tauscht, wie das hier beschrieben ist: https://ipxe.org/buildcfg/keyboard_map,  ändert sich nichts an der Tatsache. In der offiziell erhältlichen Firmware wird zwar die englische Tastatur genutzt, dafür werden die Umlaute aber korrekt dargestellt. Wer diese hingegen selbst kompiliert, bei dem funktioniert dann nicht mal mehr das. Woran es liegt weiß ich nicht. Ich habe zu dem Problem schon intensiv recherchiert und ich scheine da nicht der Einzige mit diesem Problem zu sein. Eine Lösung habe ich leider noch nicht gefunden.

Resümee

Ich bin bei meinen Tests nun soweit, dass ich mit dem Ergebnis schon durchaus zufrieden bin:

iPXE Testsetup
iPXE Testsetup

Es können aus dieser Umgebung heraus der Windows-Boot-Manager gestartet werden und auch Linux Installationen funktionieren ohne Probleme.

iPXE Linux-Live-Systeme
iPXE Linux-Live-Systeme
iPXE Ubuntu 20.04
iPXE Ubuntu 20.04

WinPEs mittels Wimboot mit HTTP “Lichtgeschwindigkeit” laden:

iPXE Wimboot WinPE
iPXE Wimboot WinPE

Das Verlassen des iPXE-Menüs setzt auch den normalen Bootvorgang fort. Es wird zwar ein Fehler angezeigt, er macht es aber trotzdem. Vielleicht bekomme ich das auch noch hin, dass es komplett ohne Fehlermeldung abläuft. Werde mich da wohl noch etwas einlesen müssen. Es ist für mich allerdings eine kleine Umstellung, da ich nun schon wieder eine neue Menü- und Befehlsstruktur lernen muss.

Warum müssen die eigentlich immer das Rad neu erfinden? 😀

Ansonsten bin ich schwer angetan. Beim Aussehen könnte man auch noch was machen. Meine dort verwendete Firmware ist die offiziell erhältliche und dort sind in den Standardeinstellungen die Konsolenfunktionen deaktiviert. Die braucht man aber um das Ganze grafisch etwas aufzuwerten (Farben/Hintergrundbild/Abstände). Dies muss dann aber selbst kompiliert werden.

Da habe ich ja so richtig Lust drauf. 😎

Abschnitt aktualisiert:

Habe nun die Firmware für UEFI32 und UEFI64 kompiliert und alles eingestellt:

iPXE Grafisches Menü
iPXE Grafisches Menü

Mein altes PXELinux Menü habe ich in einem auch gleich angepasst:

PXElinux Grafisches Menü
PXElinux Grafisches Menü

Wann ich jetzt genau dazu komme die Anleitungen von mir anzupassen, weiß ich noch nicht. Denn eigentlich müsste ich die Anleitungen fast komplett neu schreiben. Mal sehen.

Abschnitt aktualisiert:

Habe nun alle Beispieldateien und Konfigurationen für die Anleitungen erstellt. Jetzt muss ich nur noch die Anleitungen selbst ändern. 😀

Auf eure Meinungen bin ich schon gespannt. Wie seht Ihr das? Benutzt Ihr iPXE schon lange? Wie findet Ihr dieses im Vergleich zu anderen erhältlichen Bootloadern (pxelinux/GRUB/LILO usw.)? Lasst es mich wissen. Der Kommentarbereich wartet schon auf euch.

Zum Anfang!

23 Antworten auf „Kleine Experimente mit iPXE durchgeführt“

  1. Erstmal ein Danke an dieser Stelle für deine tollen Anleitungen. Diese waren sehr hilfreich für meine eigenen iPXE Umgebungen.

    Ich habe das nicht mit einem NAS umgesetzt sondern mit Windows 2019 Servern und weniger verknüpften ipxe Scripts; genaugenommen gibt es für jede Architektur bei mir nur ein ipxe Script. Das klappt auch wunderbar. Mein Windows DHCP Server hat die nötigen Richtlinien verpasst bekommen und nun wird iPXE an die Clients verteilt wenn sie mit PXE booten. Meine Menüs habe ich auch um vieles angepasst und individuell gestaltet. An die firmeneigenen Bedürfnisse angepasst. Damit entfallen 99% aller echten Boot-Sticks oder Boot-Discs und es spart richtig viel Zeit. Bei uns gibt es sogar noch einen MDT an den man sich via Chainloading weiterleiten lassen vom iPXE Menü aus. Wahlweise kann das Startabbild des MDT auch via HTTP mit wimboot geladen werden, was ja noch viel schneller geht.

    1. Dankeschön. Da sagst du was. Auf das USB-Stick-Hantieren hatte ich auch keine Lust mehr. Wünsche dir noch viel Spaß mit deinem Konstrukt.

Schreibe einen Kommentar zu Stefan Saft Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.