iVentoy PXE Server unter Debian LXC installieren
In meinem Homelab verwende ich einen Kubernetes Cluster der auf Talos als Betriebssystem aufsetzt. Bei einer kompletten Neuinstallation ist es für mich aufwendig immer drei USB Sticks vorzubereiten um dann alle drei Nodes parallel installieren zu können. Also entschied ich mich einen PXE Server bereit zu stellen um die ISO Images aus dem Netzwerk booten zu können.
Es gibt für das Endergebnis verschiedene Wege. Ich habe mich dazu entschlossen iVentoy als PXE Server zu verwenden. Ventoy an sich ist ja sicherlich vielen von euch schon ein Begriff. Damit kann man nämlich USB Sticks erstellen mit mehreren ISO Dateien. iVentoy ist vom gleichen Entwickler und bietet dann die Möglichkeit diese ISO Images aus dem Netzwerk zu booten.
Ich verwende wo ich nur kann Container, sei es Docker oder, wie in diesem Fall, LXC. Ich benötige hier nicht eine voll aufgeblähte virtuelle Maschine, wenn ein kleiner LXC auf meinem Proxmox Host dafür ausreichend ist.
Was ist ein PXE Server?
Ein PXE-Server (Preboot Execution Environment) erlaubt es Computern, ein Betriebssystem über das Netzwerk zu starten, ohne dass eine Festplatte oder ein USB-Stick nötig ist. Beim Start fragt der Computer per Netzwerk nach einem Boot-Server. Der PXE-Server antwortet und liefert die nötigen Daten, damit der Computer ein Betriebssystem laden und installieren kann. Das ist nützlich für die automatische Einrichtung vieler Computer.
LXC anlegen
Unter Proxmox könnt ihr ganz normal einen LXC anlegen. Ich verwende in meinem Fall einen priviligierten Container, weil es mir die Sache etwas einfach macht. Wer sehr stark auf Sicherheit wert legt, müsste für einen unpriviligierten Container entsprechend noch Dinge anpassen. Zudem verwende ich, wie in der Überschrift angegeben, Debian als Betriebssystem. Zum Zeitpunkt der Erstellung dieses Beitrages in Version 11 alias Bookworm. Ggf. sind Anpassungen bei Ubuntu notwendig. Wenn du den Container also angelegt hast, müsstest du ihn einmal wieder beenden bzw. noch nicht starten. Wir müssen nämlich die Konfiguration noch anpassen, weil wir sonst später auf ein APPARMOR Problem stoßen werden. Also bitte per SSH auf den Proxmox Server verbinden (oder die interne Shell nutzen) und die LXC Datei editieren
nano /etc/pve/lxc/<LXC ID>.conf
Die LXC ID siehst du im Proxmox Frontend. Hier fügen wir am Ende folgendes ein
lxc.apparmor.profile: unconfined
lxc.cap.drop:
Nun können wir den Container starten.
iVentoy installieren
Als erstes sollten wir natürlich das System aktualliseren
apt update && apt upgrade -y
Jetzt benötigen wir bei einem LXC noch diverse Pakete. Bei einer VM könnten diese nicht notwendig sein.
apt install libevent-2.1-7 libevent-pthreads-2.1-7 glibc libwim15 libhivex0 wget
Jetzt laden wir uns noch das aktuelle Paket bei GitHub herunter. Am besten vorher die aktuelle Version kontrollieren.
wget https://github.com/ventoy/PXE/releases/download/v1.0.20/iventoy-1.0.20-linux-free.tar.gz
Anschließend können wir das Paket entpacken
tar xvfz iventoy-1.0.20-linux-free.tar.gz
Ich für meinen Teil packe solche Installationen immer nach /opt
, aber das kannst du gerne anpassen. Ich verschiebe also die iVentoy Installation und benenne gleichzeitig den Ordner um
mv iventoy-1.0.20-linux-free /opt/pxe
Es sollte bei dir dann ungefähr so aussehen.
Wichtig ist das Verzeichnis ISO, weil du dort alle ISO Dateien ablegen muss welche du im Netzwerk verfügbar haben möchtest.
iVentoy starten und einrichten
Nun können wir das Programm starten
./iventoy.sh start
Du bekommst dann eine Ausgabe unter welcher PID der Prozess läuft und wie du auf die Webseite zugreifen kannst.
Wir rufen also die iVentoy Seite einmal mit der IP deines Containers sowie Port 26000 auf und bekommen dann sowas angezeigt
Nun hängt es wieder ein bisschen von deiner Wunschkonfiguration ab. Ich möchte den DHCP Server von iVentoy nicht verwenden, sondern den meines Unifi Gateways. Wenn du einen (für iVentoy) externen DHCP Server verwenden möchtest, gehst du links auf Configuration und stellst bei Server Mode auf External. Etwas oben drüber dann auf speichern klicken.
Unter Image Management kannst du die ISO Dateien sehen welche du ggf. vorher schon abgelegt hast. Andernfalls kannst du auf der rechten Seite auch per drag and drop eine neue hochladen.
Zu guter letzte müssen wir den Server “nochmal” starten. Unter Boot Information ist rechts ein Play-Button der grün hinterlegt ist. Den musst du unbedingt anklicken, sonst funktioniert es nicht.
Wenn du jetzt ein System mit der Bootoption Netzwerk am Anfang startest erwartet dich dann solch eine Anzeige