PXEBootInstall

Vorwort

Die Installation mittels Netzwerkboot darf nicht mit DebianNetworkInstall verwechselt werden. Bei der Netzwerkinstallation beginnen Sie mit einer CD (oder einem USB-Flash-Speicher oder ähnlichem), um ein minimales Linux-System zu installieren, bevor Sie weitere Pakete über das Netzwerk herunterladen.

Die Installation über das Netzwerk unterscheidet sich auch von der Verwendung des Netzwerks zum Booten eines bereits installierten Systems: In diesem Fall bleibt der Clientcomputer bei jedem zukünftigen Start davon abhängig, dass der Server läuft. Das Linux Terminal Server Project (LTSP) funktioniert zum Beispiel so.

Diese Seite beschreibt die Installation eines neuen Debian-Systems ohne CD, DVD oder USB. Am Ende des Installationsvorgangs kann der neue Computer ohne Unterstützung des Servers ausgeführt werden. Während der Installation benötigen Sie einen Netzwerk-Boot-Server.

Da es keine Fiducial-Boot-Server in freier Wildbahn gibt, müssen Sie Ihre eigenen einrichten. Dies ist wesentlich komplizierter als die Installation von Debian von CD (Abkürzung für CD oder USB)…). Normalerweise wird das Booten über das Netzwerk nur verwendet, wenn es wirklich keine Möglichkeit gibt, von CD zu booten. Wenn das Booten von CD fehlschlägt, kann dies auf BIOS-Probleme zurückzuführen sein, die das Booten im Netzwerk ebenfalls verhindern (typische Fehlerbehebungsversuche umfassen das Ausschalten des sicheren Bootens, das Umschalten von UEFI in den Legacy-Bootmodus und ähnliches).

Im Web finden Sie mehrere Artikel, die mehr oder weniger detailliert beschreiben, wie Sie einen Netzwerk-Boot-Server einrichten. Sie alle haben die gleiche Schwäche: sie müssen eine lange Liste von Anweisungen ausführen, ohne vor dem Ende des Vorgangs eine Rückmeldung zu erhalten, wenn Sie versuchen zu booten. Wenn es funktioniert, gut. Wenn nicht, wird das Debuggen sehr, sehr schwierig. Daher brechen wir im Folgenden die Prozedur in Schritte auf, die separat debuggt werden können.

http://www.debian.org/releases/stable/amd64/ch04s05 – Debian-Installationsanleitung – 4.5. Dateien für TFTP-Netzstart vorbereiten

Hinweis: Wenn Ihr System iPXE unterstützt, verwenden Sie netboot.xyz ist wahrscheinlich viel einfacher.

Voraussetzungen

Der Computer, auf dem Sie installieren möchten, wird als Client bezeichnet.

Der Computer, von dem aus Sie installieren, wird als Server bezeichnet. Wir gehen davon aus, dass auf dem Server Debian läuft.

Um genau zu sein, gehen wir davon aus, dass der Client und der Server Teil eines LAN mit den folgenden IP-Adressen sind:

Den Wert von x erfahren Sie später.

Beachten Sie, dass viele Router auch einen DHCP-Server bereitstellen: Sie müssen ihn ausschalten, da nur ein DHCP-Server in einem bestimmten LAN ausgeführt werden kann. Es sei denn, Sie können den DHCP-Server Ihres Routers so konfigurieren, dass er der unten aufgeführten ISC-DHCP-Serverkonfiguration entspricht, dies liegt jedoch außerhalb des Geltungsbereichs dieses Dokuments.

Es ist auch möglich, dass der Router und der Server dieselbe Maschine sind, d.h. dass Ihr Debian-Server das Standard-Gateway für dieses LAN ist. Das wird gut funktionieren.

Die folgenden Anweisungen wurden mit Debian 8.2 (Jessie) im September 2015 getestet.

PXE-Boot aktivieren

Richten Sie das BIOS-Bootmenü des Clients ein, um vom Netzwerk zu booten.

Neustart. Auf den meisten Systemen erzeugt dies eine Ausgabe, die die MAC-Adresse des Clients enthält. Dann schlägt es fehl mit

 PXE-E53: no boot filename received.

Notieren Sie sich die MAC-Adresse.

Auf vielen Servern ist es auch möglich, vorübergehend auf PXE-Boot umzuschalten, ohne die BIOS-Einstellungen dauerhaft zu ändern. Es wird eine Art Tastenanschlag geben, den Sie während des BIOS-POSTS treffen müssen. Auf Dell-Servern erledigt F12 den Trick (oder Esc dann @ von einer seriellen oder IPMI-Konsole).

DHCP-Server einrichten

Auf dem Server müssen wir einen DHCP-Server einrichten.

Die derzeitige Best Practice scheint die Verwendung des Pakets isc-dhcp-server zu sein, das einen Daemon dhcpd bereitstellt.

Die Konfigurationsdatei ist /etc/dhcp/dhcpd.conf. Passen Sie IP- und MAC-Adressen an Ihre lokalen Anforderungen an:

Starten Sie den DHCP-Server nach jeder Änderung neu mit

 # /etc/init.d/isc-dhcp-server restart

oder mit dem Systemd-Äquivalent

 # systemctl restart isc-dhcp-server

Überprüfen Sie, ob er tatsächlich ausgeführt wird:

 # pgrep -lf dhcpd 32277 /usr/sbin/dhcpd -q

oder

 # systemctl status isc-dhcp-server

was etwas mehr Informationen gibt.

Vor dem Neustart des Clients können Sie

 # journalctl -fu isc-dhcp-server

ausführen, das Ihnen die letzten Zeilen des DHCP-Serverprotokolls anzeigt und dann den Bildschirm mit jedem neuen Protokolleintrag aktualisiert. (Wenn Sie dem Protokoll nicht „folgen“ möchten, lassen Sie einfach das „f“ weg)

 PXE-E32: TFTP open timeout

und gleichzeitig sehen Sie auf dem Serverbildschirm Protokollmeldungen, die die DHCP-Anforderungen und -Angebote ähnlich der Ausgabe unter dem alternativen Befehl unten anzeigen

Wenn Sie es vorziehen, systemd nicht zu verwenden oder die herkömmliche Protokollausgabe zu Diagnosezwecken zu vergleichen, können Sie /var/log/syslog nachschlagen, zum Beispiel mit diesem Befehl /p>

 # grep DHCP /var/log/syslog
  • wo Sie so etwas sehen sollten:

(Beachten Sie, dass frühere Debian-Versionen /var/log/daemon verwendeten.log statt syslog)

Wenn bei beiden Befehlen nichts im Log erscheint, überprüfen Sie die Netzwerkverbindungen zwischen dem Server und dem Client. Beachten Sie, dass einige Netzwerk-Switches den DHCP-Datenverkehr stark einschränken können; Verwenden Sie für Cisco-Switches nach Möglichkeit „portfast“ (siehe http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a00800b1500.shtml).

TFTP-Server einrichten

Als nächstes müssen wir einen TFTP-Server auf dem Server einrichten.

Auch hier gibt es mehrere Pakete, die TFTP bereitstellen (triviales FTP, unsicher, nur in LANs zu verwenden). Es scheint die beste Vorgehensweise zu sein, das Paket tftpd-hpa zu verwenden. Bei der Installation werden einige Fragen gestellt. Die Antwort auf diese Fragen geht in eine Konfigurationsdatei, /etc/default/tftpd-hpa. Die folgenden Standardinhalte sollten nicht geändert werden müssen:

 TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"

Ignorieren Sie ältere Websites, die Sie anweisen, etwas wie „RUN_DAEMON=“yes““ einzufügen.

Starten Sie nach jeder Änderung der obigen Konfigurationsdatei den TFTP-Server neu mit

 # /etc/init.d/tftpd-hpa restart

oder

 # systemctl restart tftpd-hpa

Unter Jessie wird das Verzeichnis /srv/tftp automatisch erstellt. Dies bedeutet, dass die nächsten beiden Schritte nicht erforderlich sind, wenn Sie Jessie verwenden.

Bei Vor-Jessie-Versionen kann der Neustart des TFTP-Servers zunächst mit einer Meldung wie

 Restarting HPA's tftpd: in.tftpd/srv/tftp missing, aborting.

fehlschlagenErstellen Sie daher als root das Verzeichnis /srv/tftp. Starten Sie den TFTP-Daemon neu. Überprüfen Sie, ob es tatsächlich läuft:

 # pgrep -lf tftpd 12555 /usr/sbin/in.tftpd

oder

 # systemctl status tftpd-hpa

was wiederum ein paar Zeilen des Protokolls gibt und nicht nur die Tatsache, dass die Aufgabe ausgeführt wird.

Es ist nützlich, Ihren TFTP-Server mit einem TFTP-Client zu testen; Sie können einfach das Paket tftp-hpa für diesen Zweck verwenden:

 # cd /tmp # uname -a >/srv/tftp/test # tftp 192.168.0.2 tftp> get test tftp> quit # diff test /srv/tftp/test (nothing, they are identical)

Es ist auch nützlich zu sehen, welche Protokolleinträge Sie erhalten, wenn Sie eine vorhandene Datei herunterladen und wenn Sie versuchen, eine Datei herunterzuladen, die nicht vorhanden ist. Wenn Sie tftp zum Testen Ihres tftpd-Servers verwenden, versuchen Sie, Ihre Experimente mit alten und neuen Formen des Protokollbefehls zu verfolgen, während Sie Ihren TFTP-Client zum Herunterladen von Dateien verwenden, die vorhanden sind, sowie von Dateien, die nicht vorhanden sind.

Der traditionelle Befehl auf Jessie

 # tail -f /var/log/syslog

(Beachten Sie noch einmal, dass frühere Debian-Releases /var/log/daemon verwendeten.log statt syslog.)

Auf systemd

 # journalctl -fu tftpd-hpa

Leider scheinen diese ab Januar 2017 unterschiedliche Ergebnisse zu liefern. Der Befehl systemd zeigt keine Dateianforderungen für nicht vorhandene Dateien an.

Es ist sehr nützlich zu wissen, wonach der Client fragt, da es Ihnen hilft, Dateien an den erwarteten Speicherort zu verschieben, wenn Sie später Fehler machen. Derzeit lohnt es sich wahrscheinlich, die traditionelle Art der Protokollverfolgung für TFTPD zu verwenden.

Starten Sie den Client neu. Sie sollten Fehlermeldungen auf dem Client-Bildschirm sehen, die mit

 PXE-T01: File not found

beginnen, was ziemlich korrekt ist, da wir noch keine Dateien bereitgestellt haben. Auf dem Serverbildschirm sehen Sie genau, wonach der Client gefragt hat.

Stellen Sie das Boot-Image bereit

Laden Sie netboot/netboot herunter.Teer.gz von einem Debian-Spiegel (siehe http://www.debian.org/distrib/netinst#netboot).

Optional: Um die digitale Signatur zu überprüfen, geben Sie die folgenden Befehle ein:

netboot entpacken.Teer.gz nach /srv/tftp, das nun

 debian-installer/ pxelinux.0@ pxelinux.cfg@ version.info

enthalten sollteEs kann notwendig sein, chmod -R a+r * zu setzen, um alle Dateien in diesem Verzeichnis für den TFTP-Daemon lesbar zu machen.

Möglicherweise müssen Sie auch grub/grub bearbeiten.cfg, um bei Bedarf Ihre serielle Konsole einzurichten (ich habe den Abschnitt über das grafische Terminal ersetzt):

serial --speed=115200 --unit=1 --word=8 --parity=no --stop=1terminal_input console serialterminal_output console serial

sowie die serielle Konsole für den Debian-installer, indem Sie diese an die Kernel-Befehlszeile anhängen:

console=ttyS1,115200n8r console=tty1

Starten Sie den TFTP-Dämon neu, und Sie können den Protokolleinträgen folgen, wie sie erscheinen

 # tail -f /var/log/syslog

Starten Sie dann der Kunde. Sie sollten zu einem Debian-Installationsbildschirm gelangen.

Wenn Sie in /var/log/syslog nachschlagen, sehen Sie, was vom PXE-Bootloader und dann von SYSLINUX vom TFTP-Server heruntergeladen wurde. Möglicherweise sehen Sie auch einige „NAK“ -Antworten, wenn SYSLINUX nach Dateien fragt, die nicht existieren (es werden mehrere Speicherorte für einige wichtige Dateien ausprobiert).

Der PXE Loader (die Firmware im BIOS oder der Netzwerkcontroller des Clients) versucht in dieser Reihenfolge zu laden:

  • pxelinux.0 (oder genauer gesagt, was Sie im Feld ‚Dateiname‘ der DHCP-Antwort herunterladen sollten)

Dann versucht SYSLINUX/PXELINUX, seine Konfiguration auf verschiedenen Pfaden zu durchsuchen, von den spezifischsten bis zu den wenigsten:

  • pxelinux.in: cfg/GUID
  • pxelinux.in: cfg/MAC
  • pxelinux.cfg/default

Und wenn das Konfigurationsmenü von anderen Konfigurationselementen abhängt, werden diese ebenfalls heruntergeladen. Debian wird zumindest das ‚Bootmenü‘ benötigen.txt‘ Datei, die das Hauptmenü ist.

Standardmäßig gelangen Sie zum grafischen Debian-Installations-Startmenü. Drücken Sie ‚Enter‘, um die Installation zu starten. Seien Sie geduldig: Es kann über eine Minute dauern, bis der nächste Bildschirm (‚Sprache auswählen‘) erscheint.

Alternative Möglichkeit, das Boot-Image zu erhalten

Wenn Sie ein Debian-System der gleichen Version haben, die Sie installieren möchten, können Sie das Boot-Image mit apt installieren.

Zeigen Sie nun den TFTP-Server auf /usr/lib/debian-installer/images/$VERSION/$ARCH/$INTERFACE, wobei INTERFACE=text für den Textmodus-Installer oder INTERFACE=gtk für den grafischen Installer ist. Eine einfache Möglichkeit, dies zu erreichen, besteht darin, / srv /tftp in einen symbolischen Link umzuwandeln.

Ein anderer Weg – verwenden Sie Dnsmasq

dnsmasq ist ein leichter, einfach zu konfigurierender DNS-Forwarder und DHCP-Server mit BOOTP / TFTP / PXE-Funktionalität. Das heißt, Sie können isc-dhcp-server und tftpd-hpa durch Dnsmasq ersetzen. Es folgt die Datei /etc/dnsmasq.conf bietet die gleiche Funktionalität wie die oben beschriebene Methode zur Installation und Konfiguration von isc-dhcpd-server und tftpd-hpa.

Laden Sie das Netboot herunter.Teer.gz und extrahieren Sie es in / srv / tftp als vorherige Beschreibung.

Mögliche Probleme

Wenn der Kernel im Netboot-Image nicht mehr mit den Kernelmodulpaketen synchronisiert ist, werden die Module nicht geladen und die Installation schlägt fehl. Die üblichen Symptome sind, dass Meldungen über „fehlende Symbole“ in der Strg-Alt-f4-Konsole angezeigt werden.

Um dies zu beheben, aktualisieren Sie den Kernel und die initrd auf dem Netboot-Server.

Es gibt wahrscheinlich ein Debian-BTS-Problem, aber ich kann es jetzt nicht finden.

Siehe auch

  • http://www.debian.org/releases/stable/amd64/ch04s05 – Debian-Installationsanleitung – 4.5. Dateien für TFTP-Netzstart vorbereiten

  • di-netboot-assistant automatisiert die meisten der oben beschriebenen Schritte: DebianInstaller/NetbootAssistant

  • Der Lenny-Installer in netboot.Teer.gz unterstützt jetzt STANDARDMÄßIG KEINE Installation über die serielle Konsole. Weitere Informationen zu diesem Problem und ein Patch zum Aktivieren des seriellen Konsolenzugriffs finden Sie in 309223.

  • https://networkboot.org/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.