PXE
PXE
Preeboot Execution Environment
Betriebssystem booten über Netzwerk.
Dienste bereitstellen
Folgende Services müssen installiert sein und (manuell) gestartet werden, damit PXE funktionieren kann.
- TFTP Server
- NFS Server
- DHCP Server
- XINETD
TFTP Server
TFTP Server installieren - mit YAST
- Trivial File Transfer Protocol.
- Es wird ein Verzeichnis
/srv/tftpboot
angelegt.
- Firewall
Es ist notwendig, den UDP Port 69 freizugeben - YAST Firewall.
- Xinetd für TFTP konfigurieren
Da der TFTP Server über den Xinetd gestartet wird, muss Xinetd aktiviert werden - mit YAST
- Xinetd gegebenenfalls beim Booten starten - YAST Runlevel Editor bzw. Services Editor
- Bootimage kopieren
cp /usr/share/syslinux/pxelinux.0 /srv/tftpboot
DHCP Server - für PXE
- DHCP Server für TFTP konfigurieren
/etc/dhcpd.conf
Zwei Zeilen einfügen:
# Beispiel: next-server 10.0.0.140; filename "pxelinux.0";
Oft ist ein Router im LAN zugleich ein DHCP Server, den man aber nicht für PXE anpassen kann. Man kann jedoch einen zweiten DHCP Server konfigurieren, der nur auf PXE Anfragen reagiert:
default-lease-time 600; max-lease-time 7200; ddns-update-style none; ddns-updates off; allow booting;
option domain-name "mydomain"; option domain-name-servers 195.3.96.67, 213.33.98.136; option routers 10.0.0.138;
# define rules to identify DHCP Requests from PXE and Etherboot clients. class "pxe" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; } class "etherboot" { match if substring (option vendor-class-identifier, 0, 9) = "Etherboot"; } subnet 10.0.0.0 netmask 255.255.255.0 { option broadcast-address 10.0.0.255; pool { default-lease-time 180; # no long lease time required for booting max-lease-time 360; # booted system does its own dhcp request server-name "suserver"; next-server suserver.; # in case your local DNS only handles # unqualified domains keep trailing '.' filename "pxelinux.0"; allow members of "pxe"; allow members of "etherboot"; # allow etherboot, too range 10.0.0.201 10.0.0.211; } }
Siehe: http://en.opensuse.org/SDB:PXE_boot_installation
Suse Linux installieren über PXE
Die Installations CD (Net-Version) oder DVD downloaden und die ISO Datei als Loopback Device mounten - ISO Image. Dieses Verzeichnis, im folgenden Beispiel /mnt/suse_NET, wird als NFS Share freigegeben. PXE holt sich von dieser NFS Freigabe die Installationsdateien.
- Folgende Dateien von der Suse DVD kopieren nach /tftpboot:
suse_isopath=/mnt/suse_NET cp $suse_isopath/boot/x86_64/loader/initrd /srv/tftpboot/suse cp $suse_isopath/boot/x86_64/loader/linux /srv/tftpboot/suse
... oder downloaden:
source="ftp5.gwdg.de::pub/opensuse/distribution/15.3/repo/oss/boot/i386/loader" rsync -av $source/initrd $source/linux /srv/tftpboot/suse
Details: Siehe http://www.gtkdb.de/index_7_1822.html
- Die zwei Doppelpunkte bedeuten, dass der rsyncd auf dem Server angesprochen werden soll.
- Menü konfigurieren
Dateien übertragen
rsync -av $suse_isopath/boot/x86_64/loader/* /srv/tftpboot/pxelinux.cfg/default
- Menü erstellen / ergänzen
/srv/tftpboot/message
Puppy Linux starten über PXE
Die Pfade in der folgenden Anleitung beziehen sich auf Suse Linux
- TFTP Verzeichnis für Puppy anlegen
mkdir /srv/tftpboot/puppy
- ISO Datei oder CD mounten:
# Beispiel für ISO Datei mount -o loop lupu-525.iso /mnt
- Dateien kopieren
cd /mnt cp /initrd.gz /srv/tftpboot/puppy/ cp /vmlinuz /srv/tftpboot/puppy/ cp /lupu_525.sfs /srv/tftpboot/puppy/
- Init Ramdisk entpacken
mkdir /srv/tftpboot/puppy/temp cd /srv/tftpboot/puppy/temp zcat /srv/tftpboot/puppy/initrd.gz | cpio -i -H newc -d
- SFS Datei einfügen und neue initrd.gz erzeugen
mv /srv/tftpboot/puppy/lupu_525.sfs /srv/tftpboot/puppy/temp find | cpio -o -H newc | gzip -4 > ../newinitrd.gz
- Eintrag im PXE Menü für Puppy
# puppy label pup kernel puppy/vmlinuz append initrd=puppy/newinitrd.gz pmedia=atahd psubdir=puppy nosmp
Siehe:
Knoppix starten über PXE
Knoppix bereitet von sich aus alles vor, damit man es über PXE booten kann. Dazu muss man lediglich den Knoppix Terminal Server starten.
- Knoppix Terminalserver
Knoppix von CD/DVD starten. Im Startmenü den Eintrag Knoppix Terminalserver suchen und diesen starten und konfigurieren.
Knoppix startet einen DHCP Server, daher kann es während dieses Vorgangs zu Störungen im Netzwerk kommen. Also am besten diese Aktion dann durchführen, wenn Ruhe im Netzwerk herrscht ...
Nachdem Knoppix den Terminalserver eingerichtet hat, findet man in der Knoppix Session im Verzeichnis /tftpboot
alle Dateien, die für den Start von Knoppix über PXE notwendig sind.
- Startdateien kopieren
Die Knoppix Startdateien per scp oder über einen USB Stick auf den TFTP Server kopieren, von dem aus gebootet werden soll. Diese Aktion in Knoppix als root durchführen.
Knoppix rasch beenden - wegen dem DHCP Server ...
- Boot Image
In /tftpboot
am Server hat man nun den Kernel und die Initial Ramdisk, damit überhaupt der Bootvorgang von Knoppix über PXE beginnen kann.
Vom Kernel wird dann das Knoppix Boot Image geladen.
Das legt man am besten auf einem NFS Share ab.
Die KNOPPIX DVD als ISO File auf den Server kopieren, dieses ISO File als Loopback Device mounten und über NFS freigeben.
Im PXE Startmenü /tftpboot/isolinux.cfg/default
muss man einen Verweis auf das Bootimage angeben.
Infos
http://pxe.dev.aboveaverageurl.com/index.php/PXE_Booting/Knoppix
Troubleshooting
- NFS Server testen
Mit einem anderen Computer, Notebook oder einer VM testen, ob die NFS Freigaben tatsächlich gemountet werden können
## Beispiel mit Knoppix mount -t nfs -o nolock 192.168.1.4:/mnt/suse32bit /mnt
- Unter Ubuntu muss das Paket nfs-common nachinstalliert werden, damit der Zugriff auf ein NFS Share funktioniert.
sudo apt-get install nfs-common
Info
http://www.fedorawiki.de/index.php/PXE
http://www.debian-administration.org/articles/478