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 BOOTP-Server oder einen RARP-Server oder einen DHCP-Server.
Das Reverse-Address-Resolution-Protocol (RARP) ist eine Möglichkeit, dem Client mitzuteilen, welche IP-Adresse er selbst verwenden soll. Ein anderer Weg wäre, das BOOTP-Protokoll zu verwenden. 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.
Um RARP einzurichten, benötigen Sie die Ethernet-Adresse (a.k.a. die MAC-Adresse)
des Clients, der gestartet werden soll. Wenn Ihnen diese Informationen nicht
bekannt sind, können Sie
sie aus den OpenPROM-Boot-Meldungen auslesen, den
OpenBoot-Befehl .enet-addr
benutzen oder
in den „Rescue“-Modus booten (z.B. mittels einer Rettungsdiskette) und
dort das Kommando /sbin/ifconfig eth0
verwenden.
Auf einem RARP-Server, der einen 2.2.x-Linux-Kernel benutzt, müssen Sie die RARP-Tabelle des Kernels aktualisieren. Dies erledigen Sie mit:
#/sbin/rarp -s
#client-hostname
client-enet-addr
/usr/sbin/arp -s
client-ip
client-enet-addr
Wenn Sie eine Meldung
SIOCSRARP: Invalid argument
bekommen, müssen Sie möglicherweise noch das RARP-Kernelmodul laden
oder sogar den Kernel neu kompilieren, so dass er RARP unterstützt.
Versuchen Sie modprobe rarp
und danach erneut
das rarp-Kommando.
Auf einem RARP-Server, der einen 2.4.x-Linux-Kernel nutzt, gibt es kein RARP-Kernelmodul; stattdessen sollten Sie das Programm rarpd benutzen. Die Verfahrensweise ist die gleiche, wie Sie im folgenden Abschnitt für SunOS beschrieben wird.
Unter SunOS müssen Sie sicherstellen, dass die Ethernet-Hardwareadresse
des Clients in der „ethers“-Datenbank aufgelistet ist (entweder in
der Datei /etc/ethers
oder per NIS/NIS+) sowie
in der „hosts“-Datenbank. Dann starten Sie den RARP-Daemon. Unter
SunOS 4 benutzen Sie (als root) den Befehl:
/usr/etc/rarpd -a
; unter SunOS 5 ist es
/usr/sbin/rarpd -a
.
Es gibt für GNU/Linux zwei BOOTP-Server: den bootpd (CMU)
und der andere ist vielmehr ein DHCP-Server, der dhcpd (ISC).
Sie sind in den Debian GNU/Linux-Paketen bootp
und
dhcp
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
. Ansonsten 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 Hardwareadresse des Clients angibt. Der Eintrag „bf“ legt fest, welche Datei der Client per TFTP bezieht; Abschnitt 4.4.5, „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.4.3, „DHCP-Server einrichten“. Andernfalls könnte es vielleicht
reichen, in /etc/dhcpd.conf
den Eintrag
allow bootp
zu dem Block der Datei hinzuzufügen,
der das Subnetz konfiguriert, zu dem Ihr Client gehört. Danach muss der
dhcpd mit /etc/init.d/dhcpd restart
neu gestartet werden.
Ein Free-Software-DHCP-Server ist der ISC-dhcpd.
In Debian GNU/Linux ist er im dhcp
-Paket enthalten.
Hier eine beispielhafte Konfigurationsdatei (gewöhnlich
/etc/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/tftpboot.img"; server-name "servername"; next-server servername; hardware ethernet 01:23:45:67:89:AB; fixed-address 192.168.1.90; }
Beachten Sie: der neue (und bevorzugte) dhcp3
benutzt die Konfigurationsdatei /etc/dhcp3/dhcpd.conf
.
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 Hardwareadresse 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/dhcpd restart
neu.
Um den TFTP-Server einzurichten, sollten Sie als Erstes sicherstellen,
dass tftpd aktiv ist. Dies können Sie mit einer Zeile
wie der folgenden in /etc/inetd.conf
erreichen:
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot
Die Debian-Pakete richten dies generell standardmäßig korrekt ein, wenn sie installiert werden.
Schauen Sie sich die Datei an und merken Sie sich das Verzeichnis, das
als Argument hinter in.tftpd eingetragen ist; Sie
werden es später brauchen. Das Argument -l
aktiviert bei einigen Versionen von in.tftpd das
Logging, so dass alle Anfragen im Systemlog protokolliert werden;
dies ist nützlich für die Fehlersuche bei Bootproblemen.
Wenn Sie /etc/inetd.conf
ändern mussten,
ist es nötig, dem laufenden inetd-Prozess
mitzuteilen, dass sich die Konfigurationsdatei geändert hat.
Auf einem Debian-Rechner erledigen Sie das mit
/etc/init.d/inetd reload
; auf anderen Maschinen
müssen Sie die Prozess-ID von inetd herausfinden
und kill -HUP
ausführen.
Prozess-ID
Als nächstes legen Sie die TFTP-Bootimages, die Sie brauchen
und die Sie wie in Abschnitt 4.2.1, „Wo Sie die Installations-Images finden“ beschrieben
finden können, im tftpd-Bootimage-Verzeichnis
ab. Meistens wird dies /tftpboot
sein.
Sie müssen 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.
SPARC-Architekturen nutzen die Namen der Unterarchitekturen,
wie „SUN4M“ oder „SUN4C“; in einigen Fällen bleibt die
Architekturbezeichnung leer, d.h. die Datei, nach der der Client sucht,
ist einfach client-ip-in-hex
. Wenn die Unterarchitektur
Ihres Systems also SUN4C ist und seine IP-Adresse ist 192.168.1.3, wäre
der Dateiname C0A80103.SUN4C
. Eine einfache Art, dies
herauszufinden, ist, den folgenden Befehl in eine Shell einzugeben
(angenommen, die IP-Adresse der Maschine wäre 10.0.0.4):
$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4
Es wird die IP-Adresse in hexadezimal ausgegeben; um den korrekten Dateinamen zu bekommen, müssen Sie alle Buchstaben in Großbuchstaben ändern und falls nötig den Namen der Unterarchitektur hinzufügen.
Manche Sparc-Systeme kann man zwingen, nach einem bestimmten Dateinamen
zu suchen, indem man ihn ans Ende des OpenPROM-Boot-Befehls anhängt, z.B.
boot net my-sparc.image
. Die Datei muss dabei immer
in dem Verzeichnis liegen, in dem der TFTP-Server sucht.