Startseite>UEFI-Rechner via PXE booten
Aus Raspberry Pi Geek 06/2014

UEFI-Rechner via PXE booten

© Jasmin Merdan, 123rf.com

Entschleunigt

Friedrich Hotz

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

http://www.raspi-geek.de/30579

Rettungssysteme via PXE

RPG 03/2014, S. 52

http://www.raspi-geek.de/32390

Diskless Linux via PXE

RPG 04/2014, S. 36

http://www.raspi-geek.de/32850

UEFI-PCs via PXE booten

RPG 06/2014, S. 28

http://www.raspi-geek.de/32691

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).

Abbildung 1: Ist im BIOS des Rechners UEFI aktiviert, starten Sie mit »F10« die Auswahl, welchen Modus der Rechner verwendet.

Abbildung 1: Ist im BIOS des Rechners UEFI aktiviert, starten Sie mit »F10« die Auswahl, welchen Modus der Rechner verwendet.

Auf dem als PXE-Server agierenden RasPi kopieren Sie die Dateien bootx64.efi und grub.efi ins TFTP-Bootverzeichnis, in dem Sie auch die Datei grub.cfg anlegen. Einen ersten Test können Sie aber bereits vorher starten: Ein Client-Rechner, der im EFI-Modus vom Netz bootet, zeigt anschließend den Grub-Prompt grub> an.

Grub2-Konfiguration

Die Einstellungen des Bootmenüs in der Datei grub.cfg übernehmen Sie direkt aus der Datei pxelinux.cfg/default. Allerdings müssen Sie die Syntax an einigen Stellen anpassen. Listing 3 und Listing 4 stellen die Unterschiede gegenüber.

RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland