Die gute Nachricht zuerst: Mit der richtigen Konfiguration startet PXE auch Rechner mit UEFI-Firmware. Die schlechte: Das funktioniert deutlich langsamer als mit normalem BIOS.
README
Mit wenigen Handgriffen konfigurieren Sie einen PXE-Server so, dass auch Rechner mit aktiviertem UEFI davon booten. Welchen Modus der Client verwendet, erkennt das System dabei selbstständig.
Die Artikelserie über den Aufbau eines PXE-Servers in den letzten Ausgaben von RPG zeigte ausführlich das Einrichten eines PXE-Servers, von dem aus Clients verschiedene Betriebssysteme, Installer oder Tools über das Netzwerk laden können, ohne dazu ein Laufwerk zu benötigen.
Der Bootvorgang über Pxelinux gelingt zwar auch auf Rechnern mit (U)EFI-Firmware, allerdings startet das System dann im Legacy-Modus (BIOS). Entsprechend scheitert dann die Installation eines Betriebssystems im (U)EFI-Modus.
Ungeachtet Linus Thorvalds klarer Einschätzung, bei UEFI handele es sich um “Intels Hirnschaden”, kommen neuere Mainboards inzwischen fast ausschließlich mit entsprechender Firmware auf den Markt. Zwar besitzen die meisten auch einen BIOS-Kompatibilitätsmodus, doch sprechen etliche Gründe dafür, sich auf die neue Welt einzustellen. So bietet etwa Windows die Möglichkeit der GPT-Festplattenpartitionierung für Disks mit mehr als 2 TByte Kapazität, doch setzt das den UEFI-Modus voraus.
RasPi als PXE-Server
|
RasPi als PXE-Server |
RPG 02/2014, S. 54 |
|
|
Rettungssysteme via PXE |
RPG 03/2014, S. 52 |
|
|
Diskless Linux via PXE |
RPG 04/2014, S. 36 |
|
|
UEFI-PCs via PXE booten |
RPG 06/2014, S. 28 |
PXE und UEFI
Der Bootvorgang über PXE im UEFI-Modus unterscheidet sich zunächst nicht von der BIOS-Variante. Allerdings muss PXE dafür via TFTP einen EFI-konformen Bootloader anbieten. Pxelinux erfüllt diese Anforderung nicht und eignet sich mangels entsprechender Signatur auch nicht, im Secure Mode zu starten. Passende EFI-konforme Startdateien finden sich mittlerweile in fast allen Linux-Distributionen. Dabei handelt es sich meist um den Secure-Boot-Modus Shim, der dann Grub2 nachlädt.
Unser Beispiel verwendet den Bootloader von OpenSuse [1]. Sie benötigen den signierten Shim-Lader bootx64.efi sowie den auf EFI-Boot spezialisierten Grub2-Bootloader grub.efi. Allerdings lädt bootx64.efi nicht im BIOS-Modus: Dann erscheint lediglich die Fehlermeldung, die Datei sei zu groß. Dem DHCP-Server, der dem Client den Namen der via TFTP zu ladenden Datei schickt, müssen Sie also beibringen, zwischen BIOS- und UEFI-Clients zu unterscheiden.
DHCP-Konfiguration
Die Erweiterung des DHCP-Servers erfolgt optional auf zwei Arten. Stehen die Client-Rechner samt ihrer MAC-Adressen fest in der dhcpd.conf, dann bilden Sie daraus je eine BIOS- und eine UEFI-Gruppe (Listing 1). Diese starre Zuordnung löst das Problem jedoch nicht besonders elegant.
Listing 1
[...]
group { # id="biosboot"
filename "pxelinux.0";
host fritz-pc {
fixed-address fritz-pc;
hardware ethernet 90:e6:ba:3d:1d:95;
}
}
group { # id="pxeboot"
filename "bootx64.efi";
host fritz-pc2 {
fixed-address fritz-pc2;
hardware ethernet 00:22:4d:af:f6:1a;
}
[...]
}
So können Sie keinen der UEFI-Gruppe zugeordneten Rechner auch im BIOS-Modus booten, selbst wenn dessen Firmware dies zuließe. Dynamisch ins Netz integrierte Clients bedient diese Methode überhaupt nicht. Für mehr Flexibilität sorgt das Auswerten des Client Architecture System Tag, das die Rechner gemäß UEFI-Spezifikation mit dem DISCOVER-Paket mitschicken (Listing 2).
Listing 2
[...]
if option pxe-system-type = 00:07 {
filename = "bootx64.efi";
}
else {
filename = "pxelinux.0";
}
host andrey-laptop {
fixed-address andrey-laptop;
hardware ethernet 00:17:42:21:60:7d;
}
[...]
}
EFI-Boot mit Grub2
Zunächst einmal müssen Sie den Client-Rechner dazu bringen, im EFI-Modus vom Netzwerk zu starten. Ist im BIOS-Setup die (U)EFI-Option aktiviert, gelangen Sie mit [F10] in die EFI-Bootauswahl (Abbildung 1).





