Heute hatte ich nach einer BIOS-, bzw. UEFI-Aktualisierung meines Mainboards ein unerwartetes Problem; alle meine EFI-Booteinträge wurden zurückgesetzt. Selbstverständlich hatte ich kein (freies) Medium zur Hand, von dem ich entweder eine Live-Linux Umgebung oder eine EFI-Shell hätte booten können. Glücklicherweise bringen die meisten UEFIs heutzutage eine gute Unterstützung für PXE (Preboot eXecution Environment), bzw. iPXE mit. Hierfür muss dann im BIOS oder UEFI lediglich der Netzwerkstack aktiviert und der richtige Booteintrag ausgewählt werden.
PXE-Server
Mit Pixiecore gibt es eine all-in-one Lösung, um schnell einen PXE-Server bereitzustellen. Für die Installation unter Archlinux steht ein AUR-Paket bereit.
Wichtig: Damit PXE, DHCP und TFTP funktionieren, müssen die unten genannten Ports in der Firewall freigegeben werden!
Protokoll | Port | Benötigt? |
---|---|---|
DHCP | UDP/67:68 | Ja |
TFTP | UDP/69 | Ja |
PXE | UDP/4011 | Ja |
HTTP | TCP/80 | Nein |
In dem
entsprechenden Artikel
im Archlinux Wiki steht beschrieben, wie man den quick
Parameter verwenden, um direkt den Archlinux Kernel zu laden:
sudo pixiecore quick arch --dhcp-no-bind
Allerdings hat dies in meinem Test nicht funktioniert. Der Kernel konnte nicht gefunden werden. Also habe ich mir über die Archlinux Netboot Download Seite die aktuelle URL zum UEFI iPXE Image geholt und den Pixiecore Befehl angepasst:
sudo pixiecore boot --debug --dhcp-no-bind \
https://archlinux.org/static/netboot/ipxe.176077d7fccb.efi
Und ich muss sagen, der Rest hat wunderbar funktioniert! Der Client hat sich das iPXE Image gezogen, dann das vollständige Bootimage von einem Mirror meiner Wahl heruntergeladen und schlussendlich Archlinux gestartet.