Dateien vorbereiten für TFTP-Netzwerk-Boot
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.
Auf VMEbus-Systemen existiert noch eine andere Möglichkeit:
die IP-Adresse kann manuell im Boot-ROM eingestellt werden.
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.
Auf PowerPCs, wenn Sie einen NewWorld-PowerMac haben, ist es eine
gute Idee, DHCP statt BOOTP zu benutzen. Einige der Maschinen der letzten
Generationen können nicht per BOOTP starten.
Im Gegensatz zu OpenFirmware auf Sparc- und PowerPC-Maschinen kann
die SRM-Konsole RARP nicht nutzen, um eine IP-Adresse
zu beziehen; deswegen müssen Sie BOOTP verwenden, wenn Sie Ihren Alpha-Rechner
per Netzwerk booten wollen
Alpha-Systeme können auch per Netzwerk gebootet werden, indem man das
DECNet MOP (Maintenance-Operations-Protocol) benutzt, aber dies wird
hier nicht behandelt. Wahrscheinlich wird ein OpenVMS-Service vor Ort
Sie gerne unterstützen, wenn Sie Probleme haben, Linux mit MOP auf
Ihrem Alpha-Rechner zu booten.
Sie können ebenfalls die IP-Konfiguration für
Netzwerk-Schnittstellen direkt in der SRM-Konsole eingeben.
Einige ältere HPPA-Maschinen (wie z.B. 715/75) funktionieren eher
mit RBOOTD als mit BOOTP. Ein rbootd-Paket ist in
Debian verfügbar.
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 die Pre-Boot-Execution-Environment- (PXE) Methode von TFTP zu nutzen,
benötigen Sie einen TFTP-Server mit Unterstützung für
tsize. Auf einem &debian;-Server sind dies
atftpd und tftpd-hpa;
wir empfehlen, tftpd-hpa zu verwenden.
&tftp-rarp.xml;
&tftp-bootp.xml;
&tftp-dhcp.xml;
Den TFTP-Server aktivieren
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 benötigen. 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 Prozess-ID
ausführen.
Wenn Sie vorhaben, Debian auf einer SGI-Maschine zu installieren, und Ihr
TFTP-Server ist ein GNU/Linux-Rechner mit Linux 2.4, müssen Sie auf dem
Server Folgendes ausführen
# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
um Path MTU discovery
auszuschalten, andernfalls kann der PROM des SGI
den Kernel nicht herunterladen. Außerdem müssen Sie sicherstellen, dass
TFTP-Pakete von einem Quellport nicht größer als 32767 verschickt werden,
sonst wird der Download nach dem ersten Paket stoppen. Es ist wieder
der Linux-Kernel 2.4.x, der diesen Fehler im PROM auslöst, aber Sie können
dies vermeiden, indem Sie
# echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range
ausführen; dies stellt den Bereich der Quellports ein, den der Linux-TFTP-Server
benutzt.
Die TFTP-Images an ihren Platz befördern
Als nächstes legen Sie die TFTP-Bootimages, die Sie benötigen
und die Sie wie in 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.
Auf NewWorld-PowerMacs müssen Sie den yaboot-Bootloader
als TFTP-Bootimage einstellen. Yaboot wird dann
selbst das Kernel- und RAM-Disk-Image per TFTP abrufen. Für Netzwerk-Boot
benutzen Sie die Datei yaboot-netboot.conf;
benennen sie sie einfach in yaboot.conf im TFTP-Verzeichnis
um.
Um per PXE zu booten, müssen Sie nur den
netboot/netboot.tar.gz-Tarball einrichten.
Entpacken Sie den Tarball einfach in das
tftpd-Bootimage-Verzeichnis. Stellen Sie sicher, dass
der DHCP-Server konfiguriert ist, /pxelinux.0 als
zu bootende Datei zum tftpd weiterzuleiten.
Um per PXE zu booten, müssen Sie nur den
netboot/netboot.tar.gz-Tarball einrichten.
Entpacken Sie den Tarball einfach in das
tftpd-Bootimage-Verzeichnis. Stellen Sie sicher, dass
der DHCP-Server konfiguriert ist, /debian-installer/ia64/elilo.efi
als zu bootende Datei zum tftpd weiterzuleiten.
DECstation-TFTP-Images
Für DECstations gibt es tftp-Image-Dateien für jede Unterarchitektur,
die sowohl Kernel wie auch den Installer in einer Datei enthalten.
Sie sind nach dem Schema
subarchitecture/netboot-boot.img
benannt. Kopieren Sie die tftp-Image-Datei, die Sie benutzen wollen,
nach /tftpboot/tftpboot.img (wenn Sie das obige Beispiel
mit BOOTP/DHCP verwenden).
Die DECstation-Firmware bootet per TFTP mit dem Befehl
boot #/tftp, wobei
# die Nummer des TurboChannel-Gerätes ist,
von dem gebootet werden soll. Auf den meisten DECstations ist dies
3
.
Wenn der BOOTP-/DHCP-Server den Dateinamen nicht angibt oder falls Sie
zusätzliche Parameter angeben müssen, können Sie folgende Syntax verwenden:
boot #/tftp/filename param1=value1 param2=value2 ...
Mehrere Versionen der DECstation-Firmware haben ein Problem betreffend das
Booten per Netzwerk: die Übertragung beginnt, aber nach einiger Zeit stoppt
sie mit einem Fehler (a.out err).
Dies kann verschiedene Gründe haben:
Die Firmware antwortet nicht auf ARP-Anfragen während des TFTP-Transfers.
Dies führt zu einem ARP-Timeout und der Transfer stoppt. Die Lösung
ist, die MAC-Adresse von der Ethernet-Karte der DECstation fest in die
ARP-Tabelle des TFTP-Servers einzutragen. Dies erledigen Sie mit
arp -s IP-address
MAC-address als root auf dem
Rechner, der als TFTP-Server agiert. Die MAC-Adresse der DECstation
können Sie auslesen, indem Sie cnfg am Firmware-Prompt
eingeben.
Die Firmware hat ein Limit für die Größe der Dateien, die per TFTP
gebootet werden.
Es gibt ebenfalls Firmware-Versionen, die überhaupt nicht per TFTP booten
können. Auf den NetBSD-Websites finden Sie einen Überblick über die
verschiedenen Firmware-Versionen:
.
TFTP-Boot von Alpha-Systemen
Auf Alpha-Systemen müssen Sie den Dateinamen angeben (als relative
Pfadangabe zum Bootimage-Verzeichnis), indem Sie entweder den
SRM-boot-Befehl mit dem Parameter
-file benutzen, oder Sie setzen die
Umgebungsvariable BOOT_FILE.
Alternativ können Sie auch den Dateinamen per BOOTP übergeben
(benutzen Sie im ISC dhcpd die Anweisung
filename). Im Unterschied zu OpenFirmware
gibt es auf SRM keinen Standard-Dateinamen,
Sie müssen also mit einer dieser Methoden einen
Dateinamen angeben.
TFTP-Boot von SPARC-Systemen
Einige SPARC-Architekturen fügen die Namen der Unterarchitekturen
wie SUN4M
oder SUN4C
zum Dateinamen hinzu;
Wenn Sie also ein System der Unterarchitektur SUN4C haben und die IP-Adresse
ist 192.168.1.3, wäre der Dateiname C0A80103.SUN4C.
Allerdings gibt es auch Unterarchitekturen, wo die Datei, nach der der
Client sucht, einfach client-ip-in-hex ist. Ein
einfacher Weg den Hexadezimal-Code für die IP-Adresse 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
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.
TFTP-Boot von BVM-/Motorola-Systemen
Auf BVM- und Motorola VMEbus-Systemen kopieren Sie die Dateien
&bvme6000-tftp-files; nach /tftpboot/.
Als nächstes konfigurieren Sie Ihr Boot-ROM oder Ihren BOOTP-Server,
so dass zunächst die Datei tftplilo.bvme bzw.
tftplilo.mvme vom TFTP-Server geladen wird.
Lesen Sie die tftplilo.txt-Datei für Ihre
Unterarchitektur, falls Sie zusätzliche Informationen zur
Konfiguration benötigen.
TFTP-Boot von SGI-Systemen
Auf SGI-Maschinen können Sie sich auf den bootpd-Dienst
verlassen, um den Namen der TFTP-Datei festzulegen. Er wird entweder als
Wert für bf= in /etc/bootptab
oder als Angabe für filename= in
/etc/dhcpd.conf angegeben.
TFTP-Boot von Broadcom BCM91250A- und BCM91480B-Systemen
Sie müssen DHCP nicht speziell konfigurieren, weil der komplette Pfad zur
Boot-Datei beim CFE angegeben wird.