Nach der Linux Installation:
Aktualisieren:
sudo apt-get update
sudo apt-get upgrade -y
Optionale Paket(e) nachinstallieren:
sudo apt-get install tree
)sudo mkdir /pxe-boot
sudo chown -R benutzername:benutzername /pxe-boot
(beachte: anstatt benutzername natürlich den korrekten Benutzer zuweisen)
sudo apt-get install dnsmasq
sudo nano /etc/dnsmasq.conf
port=0
dhcp-range=192.168.0.0,proxy # richtige Netzwerkadresse eintragen
pxe-service=X86-64_EFI, PXEBoot, ipxe.efi
enable-tftp
tftp-root=/pxe-boot
sudo systemctl restart dnsmasq.service
Da das "tftp"-Protokoll nicht gerade für seine hohe Geschwindigkeit bekannt ist, installiere wir den Webserver, damit die Übertragungen über "http"-Protokoll laufen.
sudo apt install lighttpd
Zeile "server.document-root = ..." ausfindig machen und Verzeichnis "var/www/html" durch "/pxe-boot" ersetzen. Das Ergebnis sollte also die Zeile
server.document-root = "/pxe-boot"
sein.
sudo systemctl restart lighttpd.service
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:
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