Wenn Ihr Rechner mit einem Netzwerk (Local Area Network, LAN) verbunden ist, sind Sie vielleicht in der Lage, über das Netzwerk per TFTP von einem anderen Rechner aus zu booten. Wenn Sie dies vorhaben, müssen die Boot-Dateien in speziellen Verzeichnissen auf diesem entfernten Rechner abgelegt werden und der Rechner muss für das Booten speziell Ihrer Maschine konfiguriert werden.
Sie müssen einen TFTP-Server einrichten und in vielen Fällen auch einen DHCP-Server oder einen BOOTP-Server.
BOOTP ist ein IP-Protokoll, das einem Computer seine IP-Adresse mitteilt und wo er im Netzwerk ein Boot-Image findet. Das Dynamic-Host-Configuration-Protocol (DHCP) ist eine flexiblere, rückwärts-kompatible Erweiterung von BOOTP. Einige Systeme können nur per DHCP konfiguriert werden.
Das Trivial-File-Transfer-Protocol (TFTP) wird benutzt, um dem Client das Boot-Image zur Verfügung zu stellen. Theoretisch könnte jeder Server auf jeder Plattform benutzt werden, der diese Protokolle implementiert hat. In den Beispielen in diesem Abschnitt geben wir Kommandos für SunOS 4.x, SunOS 5.x (a.k.a. Solaris) und GNU/Linux an.
Für einen Debian GNU/Linux-Server empfehlen wir tftpd-hpa
.
Es wurde vom gleichen Autor geschrieben wie der
syslinux
-Bootloader und daher ist die Wahrscheinlichkeit,
dass er Probleme verursacht, hierbei wohl am geringsten. Eine gute Alternative
ist atftpd
.
Ein Free-Software-DHCP-Server ist der ISC-dhcpd.
Für Debian GNU/Linux wird das dhcp3-server
-Paket empfohlen.
Hier eine beispielhafte Konfigurationsdatei (siehe
/etc/dhcp3/dhcpd.conf
):
option domain-name "example.com"; option domain-name-servers ns1.example.com; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; server-name "servername"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option routers 192.168.1.1; } host clientname { filename "/tftpboot.img"; server-name "servername"; next-server servername; hardware ethernet 01:23:45:67:89:AB; fixed-address 192.168.1.90; }
In diesem Beispiel gibt es einen Server servername
,
der alle Aufgaben von DHCP-Server, TFTP-Server und Netzwerk-Gateway
übernimmt. Sie müssen natürlich die Domain-Namen-Einträge ändern wie
auch den Servernamen und die Hardware-Adresse der Clients. Der Eintrag
filename
sollte der Name der Datei sein,
die per TFTP abgerufen wird.
Nachdem Sie die Konfigurationsdatei des dhcpd
verändert haben, starten Sie ihn mit
/etc/init.d/dhcpd3-server restart
neu.
Hier ist ein weiteres Beispiel der dhcpd.conf
, das
die Pre-Boot-Execution-Environment-(PXE)Methode von TFTP nutzt.
option domain-name "example.com"; default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; # Der nächste Abschnitt muss unter Umständen an Ihre # Situation angepasst werden. subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option broadcast-address 192.168.1.255; # die Gateway-Adresse, die bei Ihnen unterschiedlich sein kann # (z.B. für den Zugriff auf das Internet) option routers 192.168.1.1; # Geben Sie die DNS an, die Sie nutzen möchten option domain-name-servers 192.168.1.3; } group { next-server 192.168.1.3; host tftpclient { # Hardware-Adresse des tftp-Clients hardware ethernet 00:10:DC:27:6C:15; filename "/pxelinux.0"; } }
Beachten Sie, dass im Fall von PXE die Client-Datei pxelinux.0
ein Bootloader ist, kein Kernel-Image (siehe Abschnitt 4.5.4, „Die TFTP-Images an ihren Platz befördern“
weiter unten).
Es gibt für GNU/Linux zwei BOOTP-Server: erstens den
bootpd (CMU) und der zweite ist eigentlich
ein DHCP-Server, der dhcpd (ISC).
Sie sind in den Debian GNU/Linux-Paketen bootp
bzw.
dhcp3-server
enthalten.
Um den bootpd (CMU) zu nutzen, müssen Sie als erstes
für die entsprechende Zeile in /etc/inetd.conf
das Kommentarzeichen entfernen (bzw. die Zeile hinzufügen, falls noch
nicht vorhanden). Unter Debian GNU/Linux erledigen Sie das mit
update-inetd --enable bootps
und anschließendem
/etc/init.d/inetd reload
. Für den Fall, dass
Ihr Bootp-Server nicht unter Debian läuft, sollte die
fragliche Zeile so aussehen:
bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
Jetzt müssen Sie die Datei /etc/bootptab
erstellen.
Sie hat das gewohnte kryptische Format wie die guten alten BSD-Dateien
printcap
, termcap
und
disktab
. Mehr Informationen bekommen Sie auf der
Handbuchseite von bootptab
. Beim CMU-bootpd
müssen Sie die Hardware-(MAC)Adresse des Clients kennen. Hier ein Beispiel
für /etc/bootptab
:
client:\ hd=/tftpboot:\ bf=tftpboot.img:\ ip=192.168.1.90:\ sm=255.255.255.0:\ sa=192.168.1.1:\ ha=0123456789AB:
Sie müssen zumindest den Eintrag „ha“ anpassen, der die Hardware-Adresse des Clients angibt. Der Eintrag „bf“ legt fest, welche Datei der Client per TFTP bezieht; Abschnitt 4.5.4, „Die TFTP-Images an ihren Platz befördern“ enthält mehr Details.
Im Unterschied dazu ist es wirklich einfach, den ISC-dhcpd
einzurichten, da dieser BOOTP-Clients gewissermaßen als Spezialfall von
DHCP-Clients behandelt. Einige Architekturen erfordern eine komplexe
Konfiguration, um Clients per BOOTP zu starten. Wenn Sie solch einen Fall
haben, lesen Sie Abschnitt 4.5.1, „Einen DHCP-Server einrichten“. Andernfalls könnte es vielleicht
ausreichen, in der Datei /etc/dhcp3/dhcpd.conf
den
Eintrag allow bootp
zu dem Abschnitt hinzuzufügen,
der das Subnetz konfiguriert, zu dem Ihr Client gehört. Danach muss der
dhcpd mit /etc/init.d/dhcpd3-server
restart
neu gestartet werden.
Um den TFTP-Server einzurichten, sollten Sie als Erstes sicherstellen, dass tftpd aktiv ist.
Im Falle von tftpd-hpa
gibt es zwei Wege, auf dem
der Dienst zum Laufen gebracht werden kann. Er kann bei Bedarf vom
inetd
-Daemon des Systems gestartet werden oder er
kann eingerichtet werden, als eigenständiger Daemon zu laufen. Welche der
beiden Methoden verwendet wird, wird bei der Installation des Pakets ausgewählt
und kann später geändert werden, indem das Paket rekonfiguriert wird.
Früher haben TFTP-Server das Verzeichnis /tftpboot
genutzt, um Images bereitzustellen. Allerdings verwenden Server aus
Debian GNU/Linux-Paketen unter Umständen andere Verzeichnisse, um den
Filesystem Hierarchy Standard
(Festlegungen, an welcher Stelle im Dateisystem bestimmte Daten abgespeichert
werden sollten) zu erfüllen. Zum Beispiel nutzt tftpd-hpa
standardmäßig /var/lib/tftpboot
. Sie müssen also
eventuell die Konfigurationsbeispiele aus diesem Kapitel entsprechend an
Ihre Situation anpassen.
Alle in Debian verfügbaren in.tftpd-Alternativen
sollten standardmäßig Protokolleinträge aller TFTP-Anfragen in das
System-Log schreiben. Einige unterstützen das Argument
-v
, um die Ausführlichkeit der Einträge zu
erhöhen. Es wird empfohlen, im Falle von Boot-Problemen diese Logeinträge
zu kontrollieren; sie sind ein guter Anfang, um der Fehlerursache
auf die Spur zu kommen.
Als nächstes legen Sie die TFTP-Boot-Images, die Sie benötigen und die Sie wie in Abschnitt 4.2.1, „Wo Sie die Installations-Images finden“ beschrieben bekommen können, im tftpd-Boot-Image-Verzeichnis ab. Sie müssen unter Umständen einen Link von diesem Image auf die Datei anlegen, die tftpd benutzt, um einen speziellen Client zu booten. Bedauerlicherweise hängt der Name dieser Datei von dem TFTP-Client ab und es gibt dabei keine festen Standards.
Alles was Sie benötigen, um per PXE zu booten, ist bereits in dem
netboot/netboot.tar.gz
-Tarball eingerichtet.
Entpacken Sie den Tarball einfach in das
tftpd-Boot-Image-Verzeichnis. Stellen Sie sicher, dass
der DHCP-Server konfiguriert ist, pxelinux.0
als
zu bootende Datei zum tftpd weiterzuleiten.