Das Intel® Preboot eXecution Environment
(PXE) erlaubt es dem Betriebssystem über das
Netzwerk zu starten. Zum Beispiel kann ein FreeBSD-System, ohne
lokale Festplatte, über das Netzwerk gestartet und betrieben
werden. Die Dateisysteme werden dabei über einen
NFS-Server eingehangen.
PXE-Unterstützung steht in der Regel im
BIOS zur Verfügung. Um
PXE beim Systemstart zu verwenden, müssen Sie
im BIOS des Rechners die Option Über
das Netzwerk starten
aktivieren. Alternativ können
Sie während der PC-Initialisierung auch eine Funktionstaste
drücken.
Um die notwendigen Dateien für ein Betriebssystem für den Start über das Netzwerk bereitzustellen, benötigt ein PXE-Setup einen richtig konfigurierten DHCP-, TFTP- und NFS-Server, wobei:
Die initialen Parameter, wie IP-Adresse, Dateiname und Speicherort der ausführbaren Bootdateien, Servername sowie Root-Pfad vom DHCP-Server bezogen werden.
Der Loader für das Betriebssystem über TFTP gestartet wird.
Die Dateisysteme über NFS geladen werden.
Sobald das Gastsystem über PXE startet,
erhält es vom DHCP-Server Informationen, wo
der initiale Bootloader per TFTP zu bekommen
ist. Nachdem das Gastsystem diese Informationen erhalten hat,
lädt es den Bootloader über TFTP herunter und
führt diesen anschließend aus. In FreeBSD ist
/boot/pxeboot
der Bootloader. Nachdem
/boot/pxeboot
ausgeführt und der
FreeBSD-Kernel geladen wurde, wird mit dem Rest der
FreeBSD-Bootsequenz, wie in Kapitel 12, FreeBSDs Bootvorgang beschrieben,
fortgefahren.
Dieser Abschnitt beschreibt, wie Sie diese Dienste auf einem FreeBSD-System so konfigurieren, sodass andere Systeme FreeBSD über PXE starten können. Weitere Informationen finden Sie in diskless(8).
Wie beschrieben, ist das System, welches diese Dienste bereitstellt, unsicher. Daher sollte es in einem geschützten Bereich des Netzwerks aufgestellt und von anderen Hosts als nicht vertrauenswürdig eingestuft werden.
Die in diesem Abschnitt dargestellten Schritte
konfigurieren die in FreeBSD enthaltenen NFS-
und TFTP-Server. Der folgende Abschnitt
beschreibt die Installation und Konfiguration des
DHCP-Servers. In diesem Beispiel verwenden
wir /b/tftpboot/FreeBSD/install
, welches
die Dateien für PXE-Benutzer enthält. Es
ist wichtig, dass dieses Verzeichnis existiert und das der
gleiche Verzeichnisname ebenfalls in
/etc/inetd.conf
und
/usr/local/etc/dhcpd.conf
gesetzt
wird.
Erstellen Sie das Root-Verzeichnis, welches eine FreeBSD-Installation enthält und über NFS eingehangen werden kann:
#
export NFSROOTDIR=/b/tftpboot/FreeBSD/install
#
mkdir -p ${NFSROOTDIR}
Aktivieren Sie den NFS-Server,
indem Sie folgende Zeile in
/etc/rc.conf
hinzufügen:
nfs_server_enable="YES"
Exportieren Sie das Root-Verzeichnis über
NFS, indem Sie folgende Zeile in
/etc/exports
hinzufügen:
/b -ro -alldirs -maproot=root
Starten Sie den NFS-Server:
#
service nfsd start
Aktivieren Sie inetd(8), indem Sie folgende Zeile
in /etc/rc.conf
hinzufügen:
inetd_enable="YES"
Kommentieren Sie die folgende Zeile in
/etc/inetd.conf
aus, indem Sie
sicherstellen, dass die Zeile nicht mit einem
#
-Zeichen beginnt:
tftp dgram udp wait root /usr/libexec/tftp tftp -l -s /b/tftpboot
Einige PXE-Versionen benötigen
die TCP-Version von
TFTP. In diesem Fall können Sie
die zweite tftp
-Zeile, welche
stream tcp
enthält,
auskommentieren.
Starten Sie inetd(8):
#
service inetd start
Installieren Sie das Basissystem nach
${NFSROOTDIR}
, indem Sie die
offiziellen Archive entpacken, oder ein neues
Basissystem und einen FreeBSD-Kernel erstellen. Detaillierte
Anweisungen hierzu finden Sie im Abschnitt 23.5, „FreeBSD aus den Quellen aktualisieren“. Vergessen Sie jedoch nicht
DESTDIR=
hinzuzufügen, wenn Sie die Kommandos
${NFSROOTDIR}
make installkernel
und
make installworld
ausführen.
Testen Sie den TFTP-Server und vergewissern Sie sich, dass Sie den Bootloader herunterladen können, der über PXE bereitgestellt wird:
#
tftp localhost
tftp>get FreeBSD/install/boot/pxeboot
Received 264951 bytes in 0.1 seconds
Bearbeiten Sie
${NFSROOTDIR}/etc/fstab
und
erstellen Sie einen Eintrag, um das Root-Dateisystem
über NFS einzuhängen:
# Device Mountpoint FSType Options Dump Pass$
myhost.example.com
:/b/tftpboot/FreeBSD/install / nfs ro 0 0
Ersetzen Sie
myhost.example.com
durch den
Hostnamen oder die IP-Adresse des
NFS-Servers. In diesem Beispiel wird
das Root-Dateisystem schreibgeschützt eingehangen, um
ein potenzielles Löschen des Inhalts durch die
NFS-Clients zu verhindern.
Setzen Sie das root-Passwort in der PXE-Umgebung für Client-Maschinen, die über PXE starten:
#
chroot ${NFSROOTDIR}
#
passwd
Falls erforderlich, aktivieren Sie ssh(1)
root-Logins für Client-Maschinen, die über
PXE starten, indem Sie die
Option PermitRootLogin
in
${NFSROOTDIR}/etc/ssh/sshd_config
aktivieren. Dies ist in sshd_config(5)
dokumentiert.
Führen Sie alle weiteren Anpassungen der
PXE-Umgebung in
${NFSROOTDIR}
durch,
wie zum Beispiel die Installation weiterer Pakete, oder
dass Bearbeiten der Passwortdatei mit vipw(8).
Booten Sie von einem NFS-Root-Volume,
so erkennt /etc/rc
dies und startet
daraufhin das /etc/rc.initdiskless
Skript. Lesen Sie die Kommentare in diesem Skript um zu
verstehen, was dort vor sich geht. Weil das
NFS-Root-Verzeichnis schreibgeschützt ist,
wir aber Schreibzugriff für /etc
und
/var
benötigen, müssen wir diese
Verzeichnisse über Speicher-Dateisysteme (memory backed file
system) einbinden.
#
chroot ${NFSROOTDIR}
#
mkdir -p conf/base
#
tar -c -v -f conf/base/etc.cpio.gz --format cpio --gzip etc
#
tar -c -v -f conf/base/var.cpio.gz --format cpio --gzip var
Wenn das System bootet, werden Speicher-Dateisysteme
für /etc
und
/var
erstellt und eingehangen.
Anschließend wird der Inhalt der
cpio.gz
-Dateien in diese Dateisysteme
kopiert. Standardmäßig haben diese Dateisysteme eine maximale
Kapazität von 5 Megabyte. Wenn die Archive nicht passen, was
für gewöhnlich bei /var
der Fall ist,
erhöhen Sie die Kapazität indem Sie die Anzahl der benötigten
512 Byte Sektoren (5 Megabyte sind 10240 Sektoren) in
${NFSROOTDIR}/conf/base/etc/md_size
und
${NFSROOTDIR}/conf/base/var/md_size
für
die Dateisysteme /etc
und
/var
eintragen.
Der DHCP-Server muss nicht auf derselben Maschine laufen wie der TFTP- und NFS-Server, aber er muss über das Netzwerk erreichbar sein.
DHCP ist nicht Bestandteil des FreeBSD Basissystems, kann jedoch über den Port net/isc-dhcp43-server oder als Paket nachinstalliert werden.
Einmal installiert, bearbeiten Sie die
Konfigurationsdatei
/usr/local/etc/dhcpd.conf
.
Konfigurieren Sie die next-server
,
filename
und root-path
Einstellungen, wie in diesem Beispiel zu sehen ist:
subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.3; option subnet-mask 255.255.255.0; option routers 192.168.0.1; option broadcast-address 192.168.0.255; option domain-name-servers 192.168.35.35, 192.168.35.36; option domain-name "example.com"; # IP address of TFTP server next-server192.168.0.1
; # path of boot loader obtained via tftp filename "FreeBSD/install/boot/pxeboot
"; # pxeboot boot loader will try to NFS mount this directory for root FS option root-path "192.168.0.1:/b/tftpboot/FreeBSD/install/
"; }
Die Anweisung next-server
wird benutzt,
um die IP-Adresse des
TFTP-Servers anzugeben.
Die Anweisung filename
definiert den
Pfad zu /boot/pxeboot
. Da hier der
relative Dateiname verwendet wird, bedeutet das, dass
/b/tftpboot
nicht im Pfad enthalten
ist.
Die Option root-path
bestimmt den
Pfad zum NFS root-Dateisystem.
Sobald die Änderungen gespeichert werden, aktivieren
Sie DHCP beim Systemstart, indem Sie die
folgende Zeile in /etc/rc.conf
hinzufügen:
dhcpd_enable="YES"
Starten Sie anschließend den DHCP-Dienst:
#
service isc-dhcpd start
Sobald alle Dienste konfiguriert und gestartet wurden, sollten PXE-Clients in der Lage sein, FreeBSD automatisch über das Netzwerk zu starten. Wenn ein bestimmter Client beim hochfahren keine Verbindung herstellen kann, sehen Sie im BIOS nach, ob die Option für den Start über das Netzwerk konfiguriert ist.
Dieser Abschnitt gibt einige Tipps zu Fehlerbehebung und zeigt, wie Sie Konfigurationsprobleme eingrezen können für den Fall, dass PXE-Clients nicht in der Lage sind über das Netzwerk zu starten.
Benutzen Sie den net/wireshark Port um Fehler im Netzwerkverkehr während des Bootvorgangs von PXE zu finden. Der Bootvorgang wird im folgenden Diagramm schematisch dargestellt.
Client sendet eine
| |
Der DHCP-Server antwortet
mit einer IP-Adresse, sowie
den Werten für | |
Der Client sendet eine
TFTP-Anfrage an
| |
Der TFTP-Server antwortet
und sendet | |
Der Client führt |
Schauen Sie in /var/log/xferlog
auf dem TFTP-Server und vergewissern
Sie sich, dass die pxeboot
-Datei von
der richtigen Adresse heruntergeladen wurde. Um die obige
Konfiguration von
/usr/local/etc/dhcpd.conf
zu testen,
geben Sie folgendes ein:
#
tftp 192.168.0.1
tftp>get FreeBSD/install/boot/pxeboot
Received 264951 bytes in 0.1 seconds
Weitere Informationen finden Sie in tftpd(8) und
tftp(1). Die BUGS
-Sektionen dieser
Seiten dokumentieren einige Einschränkungen von
TFTP.
Achten Sie darauf, dass Sie das Root-Dateisystem über
NFS einhängen können. Auch hier können
Sie Ihre Einstellungen aus
/usr/local/etc/dhcpd.conf
wie folgt
testen:
#
mount -t nfs 192.168.0.1:/b/tftpboot/FreeBSD/install /mnt
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.