Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| home-harmening:tools:pxe:pxe_server_installieren [2025/09/17 08:37] – [TFTP Server Konfigurieren] charmening | home-harmening:tools:pxe:pxe_server_installieren [2025/09/17 11:35] (aktuell) – [Boot Menü anlegen] charmening | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| Hier installiere ich eine PXE Umgebung auf einem Debian 12 System. Die PXE Umgebung ist ausschließlich für \\ | Hier installiere ich eine PXE Umgebung auf einem Debian 12 System. Die PXE Umgebung ist ausschließlich für \\ | ||
| UEFI Umgebungen gedacht. Der Testclient ist ein HP Prodesk 600.\\ | UEFI Umgebungen gedacht. Der Testclient ist ein HP Prodesk 600.\\ | ||
| + | \\ | ||
| + | Ein für mich geeignetes efi File ist ein selbkompiliertes File auf Basis von [[https:// | ||
| \\ | \\ | ||
| ===== Installation ===== | ===== Installation ===== | ||
| Zeile 12: | Zeile 14: | ||
| \\ | \\ | ||
| <code bash> | <code bash> | ||
| - | apt install isc-dhcp-server apache2 tftpd-hpa syslinux-efi | + | apt install isc-dhcp-server apache2 tftpd-hpa |
| + | </ | ||
| + | \\ | ||
| + | ==== ipxe.efi vorbereiten ==== | ||
| + | Zunächst klone ich das Git Repository von ipxe.org | ||
| + | <code bash> | ||
| + | git clone https:// | ||
| + | </ | ||
| + | Installiere alle Abhängigkeiten zum kompilieren | ||
| + | <code bash> | ||
| + | apt install gcc binutils make perl lzma lzma-dev mtools mkisofs | ||
| + | </ | ||
| + | Jetzt wird in das ipxe Verzeichnis gewechselt und mit zwei make Befehlen wird die Umgebung installiert | ||
| + | <code bash> | ||
| + | make | ||
| + | make bin-x86_64-efi/ | ||
| + | </ | ||
| + | \\ | ||
| + | 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:// | ||
| + | chain http:// | ||
| + | exit 1 | ||
| + | </ | ||
| + | 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/ | ||
| + | </ | ||
| + | Nach Abschluss kann die Datei bin-x86_64-efi/ | ||
| + | <code bash> | ||
| + | cp bin-x86_64-efi/ | ||
| + | </ | ||
| + | \\ | ||
| + | === 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/ | ||
| + | set net0/ | ||
| + | |||
| + | ifclose net0 | ||
| + | ifopen net0 | ||
| + | |||
| + | chain http:// | ||
| + | chain http:// | ||
| + | exit 1 | ||
| </ | </ | ||
| \\ | \\ | ||
| Zeile 30: | Zeile 89: | ||
| cp / | cp / | ||
| </ | </ | ||
| - | Bei mancher Hardware gibt es hier Probleme. Man kann auch Alternativen verwenden z.B. ipxe.efi von [[https:// | + | Bei mancher Hardware gibt es hier Probleme. Man kann auch Alternativen verwenden z.B. ipxe.efi von [[https:// |
| \\ | \\ | ||
| Ordner erstellen und Rechte setzen | Ordner erstellen und Rechte setzen | ||
| Zeile 66: | 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; | next-server 10.0.0.100; | ||
| - | filename "syslinux.efi"; | + | filename "ipxe.efi"; |
| } | } | ||
| </ | </ | ||
| Zeile 80: | Zeile 139: | ||
| den Ordner aktiviert.\\ | den Ordner aktiviert.\\ | ||
| \\ | \\ | ||
| + | ==== Betriebssystem vorbereiten (Beispiel Clonezilla) ==== | ||
| + | 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 / | ||
| + | </ | ||
| + | \\ | ||
| + | Download der zip Datei von [[https:// | ||
| + | <code bash> | ||
| + | wget https:// | ||
| + | </ | ||
| + | \\ | ||
| + | Datei entpacken | ||
| + | <code bash> | ||
| + | unzip clonzilla*.zip | ||
| + | </ | ||
| + | Kopieren der benötigten Dateien in das Zielverzeichnis | ||
| + | <code bash> | ||
| + | cp -v clonezilla/ | ||
| + | </ | ||
| + | \\ | ||
| + | ==== 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: | ||
| + | falls dieses nicht vorhanden ist erstelle ich hier eine default.ipxe Datei.\\ | ||
| + | \\ | ||
| + | **/ | ||
| + | <code ipxe> | ||
| + | #!ipxe | ||
| + | : | ||
| + | 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 | ||
| + | item return Return to Main Menu # <- Dritter Menüpunkt | ||
| + | |||
| + | choose --default return --timeout 10000 target && goto ${target} | ||
| + | |||
| + | : | ||
| + | echo Booting Clonezilla... | ||
| + | kernel http:// | ||
| + | initrd http:// | ||
| + | boot | ||
| + | |||
| + | #: | ||
| + | #echo Booting Ubuntu Installer... | ||
| + | #kernel http:// | ||
| + | #initrd http:// | ||
| + | #boot | ||
| + | |||
| + | :return | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | === 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:// | ||
| + | nodmraid locales=de_DE.UTF-8 keyboard-layouts=de ocs_live_extra_param="" | ||
| + | initrd http:// | ||
| + | boot | ||
| + | </ | ||
| + | \\ | ||
| + | === Eintrag für Debian XFCE === | ||
| + | Hier wird für die Server IP eine Variable server-url definiert.\\ | ||
| + | <code ipxe> | ||
| + | : | ||
| + | set server-url SERVERIP | ||
| + | echo Booting Debian 13 XFCE Live ... | ||
| + | echo ${server-url} | ||
| + | kernel http:// | ||
| + | initrd http:// | ||
| + | boot | ||
| + | </ | ||