PXE

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen

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:

http://sirlagz.net/?p=341

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

Knoppix_Terminal_Server

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

Wikipedia

http://www.fedorawiki.de/index.php/PXE

http://www.debian-administration.org/articles/478


SuSE installieren über PXE

http://en.opensuse.org/SDB:PXE_boot_installation