c't-Notfall-Windows 2025 via PXE booten


Getestet mit:

1) Installation / Einrichtung

Nach der Linux Installation:

Aktualisieren:

sudo apt-get update
sudo apt-get upgrade -y

Optionale Paket(e) nachinstallieren:


(A) Verzeichnisse anlegen und Berechtigungen entsprechend setzen.


(B) dnsmasq (wird nur als dhcp proxy / tftp server genutzt, DNS wird deaktiviert) installieren und einrichten.


(C) lighttpd (Webserver) einrichten.

Da das "tftp"-Protokoll nicht gerade für seine hohe Geschwindigkeit bekannt ist, installiere wir den Webserver, damit die Übertragungen über "http"-Protokoll laufen.


(D) /pxe-boot Verzeichnis bevölkern mit den notwendigen Dateien:

  1. ipxe.efi
  2. main.ipxe
  3. wimboot
  4. ctnot2025.ipxe
  5. boot.wim
  6. bcd
  7. boot.sdi

d1) iPXE boot firmware Datei "ipxe.efi". Diese Datei muss kompiliert werden. Die Webseite https://rpi4cluster.com/pxe/ipxe/ beschreibt die notwendige Schritte sehr gut. Hier ist meine Zusammenfassung.

Pakete installieren:

sudo apt install -y make gcc binutils perl mtools mkisofs syslinux-common liblzma-dev isolinux git

iPXE git clonen:

cd
git clone git://git.ipxe.org/ipxe.git
cd ~/ipxe/src

Erzeuge im Verzeichnis ~/ipxe/src eine Datei "embed.ipxe" und füge diese Zeilen ein:

#!ipxe
dhcp && goto netboot || goto dhcperror

:dhcperror
prompt --key s --timeout 10000 DHCP failed, hit 's' for the iPXE shell; reboot in 10 seconds && shell || reboot

:netboot
chain tftp://${next-server}/main.ipxe ||
prompt --key s --timeout 10000 Chainloading failed, hit 's' for the iPXE shell; reboot in 10 seconds && shell || reboot

Optional, NFS und PING Support aktivieren (jeden einzelnen Befehl separat ausführen):

cd ~/ipxe/src

# NFS support
sed -i 's/#undef\tDOWNLOAD_PROTO_NFS/#define\tDOWNLOAD_PROTO_NFS/' config/general.h

# Ping support
sed -i 's/\/\/#define\ PING_CMD/#define\ PING_CMD/' config/general.h
sed -i 's/\/\/#define\ IPSTAT_CMD/#define\ IPSTAT_CMD/' config/general.h
sed -i 's/\/\/#define\ REBOOT_CMD/#define\ REBOOT_CMD/' config/general.h
sed -i 's/\/\/#define\ POWEROFF/#define\ POWEROFF/' config/general.h

Die "ipxe.efi" Datei kompilieren:

cd ~/ipxe/src
make bin-x86_64-efi/ipxe.efi EMBED=embed.ipxe

Jetzt die "ipxe.efi" Datei im Verzeichnis /pxe-boot kopieren:

cp ~/ipxe/src/bin-x86_64-efi/ipxe.efi /pxe-boot/ipxe.efi

d2) Auswahlmenü für den PXE Boot einrichten, die Datei "main.ipxe"

Erzeuge im /pxe-boot Verzeichnis eine Datei "main.ipxe" und füge diese Zeilen ein:

#!ipxe

# hier die richtige IP-Adresse eintragen
set boot-url http://192.168.0.216

menu
item --gap -- ---------------- iPXE boot menu ----------------
item shell iPXE shell
item ctnot2025 C'T Notfall 2025
item exit  Exit to BIOS
choose --default ctnot2025 --timeout 30000 option && goto ${option}

:shell
shell

:ctnot2025
chain ${boot-url}/ctnot2025.ipxe

:exit
exit

d3) Datei "wimboot" herunterladen

cd /pxe-boot
wget https://github.com/ipxe/wimboot/releases/latest/download/wimboot

d4) Datei "ctnot2025.ipxe" erzeugen

Erzeuge im /pxe-boot Verzeichnis eine Datei "ctnot2025.ipxe" und füge diese Zeilen ein:

#!ipxe

kernel ${boot-url}/wimboot gui
initrd ${boot-url}/bcd BCD
initrd ${boot-url}/boot.sdi boot.sdi
initrd ${boot-url}/boot.wim boot.wim

boot || goto failed

d5) Datei "boot.wim" erzeugen.

Die Vorgehensweise zum Erzeugen des c't Notfall Windows 2025 Bausatzes wird beschrieben im c't Magazin Ausgabe 2, 2025. Hier ist zu beachten dass man beim "Backen" mit Hilfe der "PEBakery"-Anwendung sicherstellt dass alle Anwendungen in diese Boot.wim gepackt werden, durch Anhaken der Einstellung "Run all programs from RAM (Boot.wim)", siehe Screenshot:


run all programs from RAM ist anzuhaken

Die erzeugte Boot.wim findet man in der ISO-Datei ctnotwin25v100.iso, im Verzeichnis \sources. Vorgehensweise: ctnotwin25v100.iso mounten und (bspw. mit dem Programm "WinSCP") im /pxe-boot Verzeichnis kopieren. Ich empfehle nach dem Kopiervorgang die "Boot.wim" umzubenennen in "boot.wim".


d6)+d7) Dateien "bcd" und "boot.sdi" erzeugen.

Diese Dateien kann man ebenfalls aus der ISO-Datei ctnotwin25v100.iso kopieren, beide Dateien befinden sich im Verzeichnis \boot.

Am Ende sollte das Verzeichnis /pxe-boot also so aussehen:

linuxdork@anotheripxeserver:/pxe-boot$ tree

.  
├── bcd  
├── boot.sdi  
├── boot.wim  
├── ctnot2025.ipxe  
├── ipxe.efi  
├── main.ipxe  
└── wimboot  
  
0 directories, 7 files