Leicht - Kompakt
hosentaschenblog.orgDer Grund aus dem ich anfing mich mit PXE(1) auseinander zu setzen war der Laptop meines Sohnes. Zum einen war das Display kaputt, zum anderen verweigerte er das Booten von Speichermedien aller Art. Das Gerät wies also einen Schaden auf der die meisten Menschen dazu veranlassen würde es zu entsorgen, da eine Reparatur in Anbetracht des Anschaffungspreises unwirtschaftlich erscheint. Was mich ebenfalls zu dieser Entscheidung brachte war die Tatsache, dass wir in den letzten zwei Jahren sicher vier Festplatten entsorgt haben die ihren Alterserscheinungen erlegen sind.
In Zeiten immer knapper werdender Rohstoffe, dem Klimawandel und weltweiter Umweltverschmutzung liegt es nach meiner Auffassung an jedem einzelnen, seinen ökologischen Fußabdruck so weit es geht zu verringern, und sich nicht alleine auf politische Vorgaben zu verlassen. Es gibt Mittel und Wege abseits des Mainstreams Dinge zu tun, man muss es nur wollen. Es ist also gut dass ich irgendwann einmal auf diese Technik aufmerksam wurde, und im Kleinen nun meinen Beitrag leisten kann indem ich zukünftig auf eventuelle Neuanschaffungen von Speichermedien verzichte und auf eine zentrale Lösung setze. Die Mittel zur Umsetzung sind frei verfügbar, das Wissen dass man sich dazu aneignen muss kann letztendlich auch nur von Vorteil sein.
Ein weiterer Vorteil, man erhält die Möglichkeit ein kleines Netzwerk mit einfachen Mitteln zu verwalten, da ansonsten jedes Gerät einzeln konfiguriert werden müsste. Das entfällt hier da alle Klienten auf die gleiche Basis zurückgreifen.
Um eine Debian(2) Installation per PXE zu booten braucht es nur wenige Voraussetzungen. Der spätere Anwender Rechner (Klient) selbst muss natürlich PXE beherrschen. Dann braucht es noch einen, im Idealfall bereits vorhandenen oder auch gebrauchten, zweiten Rechner (Server) der sowohl die benötigten Daten liefert, als auch den DHCP(3) Dienst bereitstellt. Das kann auch ein Raspberry Pi sein.
In der Anleitung wird davon ausgegangen dass es sich um ein 64-Bit System handelt. Die nötige Funktion PXE wurde bereits im BIOS des Klienten aktiviert. Installiert wird die zur Zeit stabile Debian Version Bullseye. Der IP Adressbereich lautet 192.168.178.X, die IP des Servers 192.168.178.20. Diese Werte sind keine Fixwerte und müssen an eure Bedingungen angepasst werden. Alle hier genannten Befehle werden als root ausgeführt, eine vorherige Anmeldung mittel su - wird somit vorausgesetzt.
Bevor es losgeht stelle ich klar dass ich keine Garantie für diese Anleitung, oder eventuelle Schäden gebe die dadurch entstehen können. Am Ende des Artikels werde ich einige Quellen verlinken die es jedem ermöglichen sollen sich selbst einzulesen. Lasst euch von der Anleitung nicht einschüchtern. Wenn man das ganze zweimal gemacht hat dauert es länger alle Daten herunterzuladen als das System tatsächlich an den Start zu bringen.
Damit der Server DHCP anbieten kann ist es nötig die DHCP Funktion eures Routers zu deaktivieren, da es in einem Netzwerk nur einen DHCP Server geben darf. Wenn das erledigt ist installiert man auf dem Server folgende Pakete:
In der Konfigurationsdatei /etc/dnsmasq/dnsmasq.conf richten wir zunächst dnsmasq(4) als DHCP Server ein:
dhcp-option=3,192.168.178.1
die IP Adresse des eigentlichen Routers, wichtig für den Verbindungsaufbau
interface=eno1
Netzwerkschnittstelle für die dnsmasq DHCP Server sein soll, an eigene Werte anpassen
dhcp-range=192.168.178.21,192.168.178.200,255.255.255.0,24h
Bereich verfügbarer Adressen, Netzmaske, Dauer der Gültigkeit. Werte werden durch Kommas getrennt
dhcp-option=option:dns-server,80.241.218.68
Die Adresse des zu verwendenden DNS Servers. Optional.
Wir halten die Datei geöffnet und aktivieren die dnsmasq eigene TFTP(5) Funktion. Darüber reichen wir später die Daten an anfragende Klienten weiter:
Damit ist die Konfiguration von dnsmasq abgeschlossen. Jetzt legen wir ein neues Verzeichnis an, begeben uns hinein und legen mittels debootstrap(6) das Debian Basissystem an. Die benötigten Daten werden heruntergeladen was, abhängig von eurer Internetverbindung, einen Moment dauern wird.
Nun wechseln wir mit chroot(7) in die neue Umgebung:
und füttern die Datei /etc/fstab mit den folgenden Einträgen:
Nachdem wir die Datei gespeichert haben aktualisieren wir unsere Paketquellen indem wir die Datei /etc/apt/sources.lst um folgende Einträge erweitern:
Eventuell vorhandene Einträge kann man einfach mit einer # auskommentieren, diese werden dann nicht eingelesen. Wir aktivieren die Quellen und upgraden die vorhandenen Pakete mit:
Im Anschluss installieren wir die Desktop Umgebung, in diesem Fall xfce(8), mit weiteren wichtigen Grundpaketen:
Im Anschluss installieren wir das Paket locales:
und wählen die priorisierte Sprache.
Nun erstellen wir ein Passwort für root:
und legen einen Benutzer an über den wir uns später am System anmelden können:
Mit exit verlassen wir die Umgebung und ändern die Zugriffsrechte des Verzeichnisses /media/pxe:
Die für einen erfolgreichen Boot nötigen Dateien kopieren wir uns so:
Als nächsten Schritt erstellen wir das Verzeichnis pxelinux.cfg. Darin legen wir die Datei default an:
und füttern diese mit folgendem Inhalt:
Unser System ist eingerichtet, und wir verlassen das Verzeichnis mit einem cd. Damit der Klient auch Zugriff auf die Daten bekommt legen wir noch eine NFS(9) Freigabe in der Datei /etc/exports an:
Damit bekommen alle Geräte mit Zugriff auf das Netzwerk vollen Lese- und Schreibzugriff auf dieses Verzeichnis. Die Freigabe wird anschließend aktiviert:
Jetzt wird es Zeit unser neues Baby zu starten. Wenn nichts schief geht solltet ihr von einer Anmeldemaske begrüßt werden in der ihr den Namen eures Benutzers und das gewählte Passwort eintippen müsst. Die übrige Einrichtung eures Systems obliegt euren individuellen Ansprüchen.
Wer sein System schlank halten will kann gerne gleich zu Beginn, es geht auch im Nachhinein, die Datei /etc/apt/apt.conf um folgende Einträge erweitern:
Die beiden Einträge sorgen dafür dass Suggested (Vorschläge) und Recommended (Empfehlungen) Pakete nicht automatisch mit installiert werden. Diese Einträge sind natürlich mit Vorsicht zu genießen, jemand der sein System nicht kennt sollte davon absehen. Durch diese Begrenzungen werden eventuell erwünschte Funktionen mit relativ hoher Wahrscheinlichkeit nicht zur Verfügung gestellt werden, was einem die Arbeit natürlich auch erschweren kann. Auf der anderen Seite bekommt man so die Gelegenheit sein System besser kennen zu lernen, und natürlich ein schlankeres System was sich gerade bei Updates bemerkbar macht. Zum anderen kann man davon ausgehen dass man etwas mehr Sicherheit erlangt, wie hoch sei dahin gestellt, da nicht installierte Pakete auch keine Sicherheitslücken mitbringen. Den tatsächlichen Effekt sollte allerdings jeder selbst abwägen.
Wer will kann all seinen Geräten im Netzwerk gerne feste IP Adressen zuweisen, umgesetzt wird das ebenfalls in der Datei /etc/dnsmasq.conf. Ein Eintrag sieht beispielsweise so aus:
Quellen:
1. wikipedia.org | Preboot Execution Environment (PXE)
2. debian.org | Ein freies Betriebssystem
3. wikipedia.org | Dynamic Host Configuration Protocol (DHCP)
4. wiki.ubuntuusers.de | Dnsmasq
5. wikipedia.org | Trivial File Transfer Protocol (TFTP)
6. wiki.debian.org | Debootstrap
10. howtoforge.com | Booting On PXE And On A Customized Debian System | Eine alternative Anleitung