home-harmening:tools:pxe:pxe_server_installieren

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
home-harmening:tools:pxe:pxe_server_installieren [2025/09/17 08:39] – [Installation] charmeninghome-harmening:tools:pxe:pxe_server_installieren [2025/09/17 11:35] (aktuell) – [Boot Menü anlegen] charmening
Zeile 15: Zeile 15:
 <code bash> <code bash>
 apt install isc-dhcp-server apache2 tftpd-hpa apt install isc-dhcp-server apache2 tftpd-hpa
 +</code>
 +\\
 +==== ipxe.efi vorbereiten ====
 +Zunächst klone ich das Git Repository von ipxe.org
 +<code bash>
 +git clone https://github.com/ipxe/ipxe.git
 +</code>
 +Installiere alle Abhängigkeiten zum kompilieren
 +<code bash>
 +apt install gcc binutils make perl lzma lzma-dev mtools mkisofs syslinux syslinux-efi
 +</code>
 +Jetzt wird in das ipxe Verzeichnis gewechselt und mit zwei make Befehlen wird die Umgebung installiert
 +<code bash>
 +make
 +make bin-x86_64-efi/ipxe.efi
 +</code>
 +\\
 +Nun müssen wir eine Prekonfigurationsskript für das efi File erstellen.\\
 +In diesem Prekonfigurationskript legen wir Fest wo später unser Bootmenü gefunden wird.\\
 +**embedded.ipxe**
 +<code ipxe>
 +#!ipxe
 +dhcp
 +chain http://SERVER-IP/${net0/mac}.ipxe || \
 +chain http://SERVER-IP/default.ipxe || \
 +exit 1
 +</code>
 +Bei diese Prekonfigurationsskript wird zunächst eine IP Adresse per dhcp geholt.\\
 +Danach wird versucht ein Bootmenü speziell für die eigene MAC Adresse zu erhalten. Schlägt dies fehl\\
 +wird ein Standard Bootmemü geladen. Schlägt auch die fehlt wird ipxe beendet.\\
 +\\
 +Jetzt wird das neue ipxe.efi file mit dem Prekonfigurationsskript erstellt
 +<code bash>
 +make bin-x86_64-efi/ipxe.efi EMBED=embedded.ipxe
 +</code>
 +Nach Abschluss kann die Datei bin-x86_64-efi/ipxe.efi nach /pxe-boot/ kopiert werden
 +<code bash>
 +cp bin-x86_64-efi/ipxe.efi /pxe-boot/
 +</code>
 +\\
 +=== Embedded Skript mit statischer IP Adresse ===
 +Falls man (leider wie ich) in manchen Situationen kein DHCP Server am laufen hat. Kann man die ipxe.efi Datei auch mit statischer\\
 +IP Konfiguration erstellen. Diese Datei kann man auf einem **FAT32** formatieren USB Stick speichern und von diesesm aus booten. Alternativ ist\\
 +es auch möglich über einen GRUB Eintrag die Datei zu starten.\\
 +\\
 +<code ipxe>
 +#!ipxe
 +set net0/ip 10.0.0.50
 +set net0/netmask 255.255.255.0
 +set net0/gateway 10.0.0.1
 +
 +ifclose net0
 +ifopen net0
 +
 +chain http://10.0.0.100/${net0/mac}.ipxe || \
 +chain http://10.0.0.100/default.ipxe || \
 +exit 1
 </code> </code>
 \\ \\
Zeile 68: Zeile 125:
     max-lease-time 7200;                        # <- Maximal Leasing Zeit. Hier 2h.     max-lease-time 7200;                        # <- Maximal Leasing Zeit. Hier 2h.
     next-server 10.0.0.100;                     # <- IP des Servers der die efi Datei bereitstellt     next-server 10.0.0.100;                     # <- IP des Servers der die efi Datei bereitstellt
-    filename "syslinux.efi";                    # <- Bei mancher Hardware gibt es hier Probleme. Man kann auch Alternativen verwenden z.B. ipxe.efi von https://ipxe.org+    filename "ipxe.efi";                    # <- Bei mancher Hardware gibt es hier Probleme. Man kann auch Alternativen verwenden z.B. ipxe.efi von https://ipxe.org
 } }
 </code> </code>
Zeile 83: Zeile 140:
 \\ \\
 ==== Betriebssystem vorbereiten (Beispiel Clonezilla) ==== ==== Betriebssystem vorbereiten (Beispiel Clonezilla) ====
-An dem Beispiel clonezilla möchte ich +An dem Beispiel clonezilla möchte ich demonstrieren welche Dateien für ein Betriebssystem\\ 
 +benötigt und wohin diese gespeichert werden.\\ 
 +\\ 
 +Anlegen des Zielordners 
 +<code bash> 
 +mkdir -p /var/www/html/clonezilla/live 
 +</code> 
 +\\ 
 +Download der zip Datei von [[https://clonezilla.org/downloads.php|clonezilla.org]] 
 +<code bash> 
 +wget https://downloads.sourceforge.net/project/clonezilla/clonezilla_live_alternative/20250620-plucky/clonezilla-live-20250620-plucky-amd64.zip?ts=gAAAAABoynhSmdxihZan28Q8wXjUWD657zEcORlu3bIIrKGXd03DSxWvZLm-TXk6AA7AmClI53b-9HHuempgOhQnIQQhWDJaRQ%3D%3D&r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fclonezilla%2Ffiles%2Fclonezilla_live_alternative%2F20250620-plucky%2Fclonezilla-live-20250620-plucky-amd64.zip%2Fdownload%3Fuse_mirror%3Ddeac-riga 
 +</code> 
 +\\ 
 +Datei entpacken 
 +<code bash> 
 +unzip clonzilla*.zip 
 +</code> 
 +Kopieren der benötigten Dateien in das Zielverzeichnis 
 +<code bash> 
 +cp -v clonezilla/live/filesystem.squashfs clonezilla/live/initrd.img clonezilla/live/vmlinuz /var/www/html/clonezilla/live 
 +</code> 
 +\\ 
 +==== Boot Menü anlegen ==== 
 +Das Bootmenü ist die Datei welche von der ipxe.efi geholt und angezeigt wird. Innerhalb des Bootmenüs\\ 
 +konfigurieren wir unsere Betriebssysteme (hier Clonezilla).\\ 
 +\\ 
 +Das Bootmenü kann speziell für einen bestimmten Client anhand der MAC Adresse erstellt werden z.B. 00:12:ac:43:55:fg.ipxe oder\\ 
 +falls dieses nicht vorhanden ist erstelle ich hier eine default.ipxe Datei.\\ 
 +\\ 
 +**/var/www/html/default.ipxe** 
 +<code ipxe> 
 +#!ipxe 
 + 
 +:custom_menu 
 +menu Mein Standard Menue                        # <- Menü Titel 
 +item --gap -- Custom Options: 
 + 
 +item clonezilla_live Boot Clonezilla Live       # <- Menü Punkte. Das erste Wort ist das Label wonach gesucht wird. Der String danach ist der angezeigte Text. 
 +#item ubuntu Boot Ubuntu Install                # <- Zweiter Menüpunkt. Hier auskommentiert. 
 +item return Return to Main Menu                 # <- Dritter Menüpunkt 
 + 
 +choose --default return --timeout 10000 target && goto ${target} 
 + 
 +:clonezilla_live                                # Hier beginnt die Konfiguration für Clonezilla. Es werden Tastaturlayout und Sprache vordefiniert. Es muss noch die Server IP angepasst werden 
 +echo Booting Clonezilla... 
 +kernel http://SERVER-IP/clonezilla/live/vmlinuz boot=live fetch=http://SERVER-IP/clonezilla/live/filesystem.squashfs boot=live username=user union=overlay config components quiet noswap edd=on nomodeset nodmraid locales=de_DE.UTF-8 keyboard-layouts=de ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt 
 +initrd http://SERVER-IP/clonezilla/live/initrd.img 
 +boot 
 + 
 +#:ubuntu                                         # Hier beginnt der zweite Eintrag für Ubuntu. Auskommentiert 
 +#echo Booting Ubuntu Installer... 
 +#kernel http://SERVER-IP/ubuntu/vmlinuz 
 +#initrd http://SERVER-IP/ubuntu/initrd.gz 
 +#boot 
 + 
 +:return 
 +exit 
 +</code> 
 + 
 +=== Clonezilla mit statischer IP starten === 
 +Hier wird Clonezilla mit statischer IP gestartet. Ebenfalls sind hier alle Optionen gesetzt um Clonezilla automatisch ein per nfs geladenes Images auf die Zielfestplatte nvme0n1 zu installieren.\\ 
 +**Ein kleiner BUG** Clonezilla versucht trotzdem einen DHCP Aufruf. Wenn dieser nicht nach vier Versuchen gelingt, wird die statische IP verwendet.\\ 
 +\\ 
 +<code ipxe> 
 +kernel http://10.0.0.100/clonezilla/live/vmlinuz boot=live ip=eth0:10.0.0.50:255.255.255.0:10.0.0.1:8.8.8.8 nodhcp fetch=http://10.0.0.100/clonezilla/live/filesystem.squashfs username=user union=overlay config components quiet noswap edd=on nomodeset nodmraid locales=de_DE.UTF-8 keyboard-layouts=de ocs_prerun="" ocs_repository="nfs://10.0.0.100/home/partimag/" ocs_live_run="/usr/sbin/ocs-sr -g auto -e1 auto -e2 -r -j2 -c -k0 -scr -p reboot restoredisk hp-elite-deb12-250904 nvme0n1" ocs_live_extra_param="" ocs_live_batch=yes net.ifnames=0 nosplash noprompt 
 +nodmraid locales=de_DE.UTF-8 keyboard-layouts=de ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt 
 +initrd http://SERVER-IP/clonezilla/live/initrd.img 
 +boot 
 +</code> 
 +\\ 
 +=== Eintrag für Debian XFCE === 
 +Hier wird für die Server IP eine Variable server-url definiert.\\ 
 +<code ipxe> 
 +:debian_13_xfce 
 +set server-url SERVERIP 
 +echo Booting Debian 13 XFCE Live ... 
 +echo ${server-url} 
 +kernel http://${server-url}/debian-13-xfce/vmlinuz initrd=initrd.img boot=live components username=user fetch=http://${server-url}/debian-13-xfce/filesystem.squashfs 
 +initrd http://${server-url}/debian-13-xfce/initrd.img 
 +boot 
 +</code>