Betrieb:PXE-Server
Aus Arktur
Inhaltsverzeichnis |
[Bearbeiten] Installation
Das "tftp"-Paket von H. Peter Anvin ist bereits installiert, seit Arktur 5.2.04 wird auch das Paket "odspxe.tgz" automatisch mitinstalliert.
Es ergänzt die Installation um die meisten hier erwähnten Vorgaben und Empfehlungen.
[Bearbeiten] Verzeichnis
Üblich ist, dass das Startverzeichnis "/tftpboot" heisst und "ganz oben" im Wurzelverzeichnis liegt. Wenn dort aber viele Images zum Booten angebooten werden, wird es eng; da hilft oft ein Symlink nach "/home/tftpboot":
mkdir -p /home/tftpboot cd / ln -s /home/tftpboot
solange noch kein Verzeichnis "/tftpboot" existiert. Sonst muss dieses Verzeichnis erst nach "/home/tftpboot" verschoben werden.
[Bearbeiten] PXE-Linux
In dieses Verzeichnis "/tftpboot" wird die Datei "pxelinux.0" (oder "gpxelinux.0") kopiert. Sie ist Bestandteil von syslinux sowie des o.g. "odspxe"-Pakets.
[Bearbeiten] Einbinden
[Bearbeiten] ISC-DHCP
Der meistens beste Aufruf geht über einen Eintrag in "/etc/inetd.conf"; da dürfte bereits ein Eintrag "tftp" vorbereitet (aber noch nicht freigegeben) sein:
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -v -s /tftpboot
(das 6.Feld ist so richtig! also nicht wie bei vielen anderen Einträgen mit tcpd)
Wenn bereits Rembo oder Linbo oder ein Terminalserver installiert ist, dann muss vermutlich vor allem das Zielverzeichnis kontrolliert werden.
Der "inetd"-Dämon muss nach einer Änderung die neue Konfiguration einlesen, z.B. per
killall -HUP inetd
[Bearbeiten] dnsmasq
Wenn dnsmasq als Nameserver und DHCP-Server benutzt wird, geht die Einrichtung sehr schnell und einfach:
- kein tftp-Eintrag in "/etc/inetd.conf" (notfalls per # ausblenden, "inetd" neu starten)
- "tftp" in "/etc/dnsmasq.d/Arktur.conf" aktivieren:
dhcp-boot=pxelinux.0,boothost,192.168.0.1 enable-tftp tftp-root=/tftpboot
Diese 3 Zeilen sind "ab Werk" per # ausgeblendet. Nach der Aktivierung muss der Nameserver neu gestartet werden.
[Bearbeiten] next server
Es kann sinnvoll sein, das "tftpboot"-Verzeichnis auf einen anderern Server mit anderer IP-Adresse zu legen; dann wird von dem Rechner, der nach obiger Anleitung eingerichtet wird, zuerst die IP-Adresse des rufenden Client ermittelt (i.a. per DHCP), und dann wird der Client zum "next server" weitergeleitet.
Beispiel für "dnsmasq":
dhcp-boot=gpxelinux.0,Arktur,192.168.0.1 # dhcp-boot=gpxelinux.0,Gienah,192.168.0.5 # fuer FOG
Normalerweise wird also Arktur alle Anfragen erledigen.
Wenn die "Arktur"-Zeile ausgeblendet und stattdessen die "Gienah"-Zeile freigegeben wird, dann werden (nachdem die Änderungen per "/etc/init.d/named restart" neu eingelesen worden sind) alle Anfragen von Gienah bearbeitet.
[Bearbeiten] Betrieb
[Bearbeiten] IP-Liste
In "/tftpboot/pxelinux.cfg" muss mindestens eine Datei "default" liegen, die steuert, was zum PXE-Boot angeboten wird.
Dort können weitere Dateien liegen, z.B. "C0A800"; das ist die hexadezimale Darstellung des Netzes 192.168.0.x; sie würde also für alle Rechner in diesem Netz gelten. Wenn (z.B.) auch eine Datei "C08A0030" existiert, dann würde diese Datei nur für den Rechner mit der IP-Adresse 192.168.0.48 gelten; die IP-Adressen sind entweder fest beim jeweiligen Client eingestellt oder werden beim Booten vom DHCP-Server vergeben.
[Bearbeiten] Menu
[Bearbeiten] simples Menu
Ein simples Menu kann in der Datei "/tftpboot/menu" angelegt werden:
memtest Speichertest (abbrechen: Hauptschalter oder Esc-Taste) dos freeDOS-Diskette local bootet von lokaler Festplatte clonezilla_de Clonezilla-Linux klont ganze Festplatten oder Partitionen ntpasswd NT-Passwort loeschen rip-32 rip baldar Mini-Linux von Frank Böhm
Aufruf in der "default"-Datei im Verzeichnis "/tftpboot/pxelinux.cfg"
display menu prompt 1 KBDMAP german.kbd F1 menu F2 f2.txt F3 f3.txt
o.ä.
[Bearbeiten] strukturiertes Textmenu
Aufruf in der "default"-Datei im Verzeichnis "/tftpboot/pxelinux.cfg"
default menu.c32 prompt 0
o.ä.
[Bearbeiten] grafisches Menu
Aufruf in der "default"-Datei im Verzeichnis "/tftpboot/pxelinux.cfg"
default vesamenu.c32 prompt 0 MENU BACKGROUND Arktur.jpg
o.ä.
Das Bild "Arktur.jpg" muss in "/tftpboot" liegen und 640x480 Bildpunkte haben.
[Bearbeiten] include-Dateien
Seit einigen "syslinux"-Versionen können Teilskripts per
include <Datei>
eingebunden werden, alle Pfade sind relativ zu "/tftpboot".
Im Paket "odspxe.tgz" von Arktur sind viele Konfigurationsdateien in "/tftpboot/conf" abgelegt; damit wird die Pflege der einzelnen Programme, die per PXE abgerufen werden können, übersichtlicher.
Einbindung ins Menu:
LABEL Klonen MENU LABEL ^Klonen kernel menu.c32 append conf/clonen.conf zurueck.txt
[Bearbeiten] Struktur für Multi-Boot
Wenn im o.g. Menu mehrere "Images" zum Booten angeboten werden, dann lohnt sich eine Struktur
/tftpboot |-/images |-balder.img |-memtest |-/iso |-udpcast.iso |-/clonezilla |-initrd.img, vmlinuz, filesystem.squashfs |-/rip-non-X |-initrd, Kernel |-/baldar |-initrd, Kernel |-/nordahl |-initrd, Kernel
- Die Disketten-Images (1,44 oder 2,88 MByte gross) können getrost allesamt in "images" liegen.
- Wenn eine Linux-Distribution (wie RIP oder baldar) gebootet werden soll, dann lohnt sich jeweils ein eigenes Verzeichnis. Oft reicht es, in dieses Verzeichnis alle Dateien von der Installations-CD zu kopieren, die dort unterhalb von "/boot" liegen.
[Bearbeiten] Aufruf
Der in "/tftpboot/menu" vorbereitete Kernel wird in "/tftpboot/pxelinux.cfg/default" oder einer speziellen Datei definiert:
timeout 600
display menu
prompt 1
ontimeout local
onerror local
KBDMAP german.kbd
F1 menu
F2 f2
F3 f3
default dos
label memtest
kernel images/memtest
label dos
kernel memdisk
append initrd=images/balder.img
label local
localboot 0
label clonezilla
KERNEL clonezilla/vmlinuz
append initrd=clonezilla/initrd.img boot=live union=aufs noswap noprompt vga=788 ocs_live_keymap="/usr/share/keymaps/i386/qwertz/de-latin1-nodeadkeys.kmap.gz" ocs_lang=de_DE.UTF-8 fetch=tftp://192.168.0.1/filesystem.squashfs
label ntpasswd
KERNEL nordahl/vmlinuz
APPEND rw vga=1 initrd=nordahl/initrd.cgz,nordahl/scsi.cgz
LABEL rip-CLI
KERNEL rip-non-X/kernel
APPEND vga=normal xlogin initrd=rip-non-X/rootfs.cgz root=/dev/ram0 rw
label baldar
KERNEL baldar/bzImage
append initrd=baldar/initrd.gz load_ramdisk=1 prompt_ramdisk=0 ro ramdisk_size=150000 noread-writecheck loadkeys=de-latin1-nodeadkeys netdate=help.baldar.de TZ=Europe/Berlin pnpbios=off vga=769 runlevel=4
#
- Die Einträge bei "rip-32", "ntpasswd" und "baldar" sind von der Installations-Datei kopiert worden; dort steht er meistens in "/boot/syslinux.cfg" oder einer ähnlichen Datei. Einzig die Pfade zu Kernel (vmlinuz, bzImage o.ä.) und Init-RAM-Disk (initrd, initrd.gz o.ä.) müssen sicher geändert werden.
[Bearbeiten] DHCPD
[Bearbeiten] ISC-DHCP
Der dhcp-Server auf Arktur muss dem rufenden Client mitteilen, wo er die PXE-Datei findet. Dazu sind in der Datei /etc/dhcpd.conf zwei Einträge zu ergänzen - zum Beispiel vor der Zeile "authoritative;":
# fuer tftpd... next-server 192.168.0.1; filename "/pxelinux.0"; # ...fuer tftpd
[Bearbeiten] dnsmasq
"dnsmasq" erfordert (wie oben erwähnt) eine etwas andere Konfiguration:
Datei "/etc/dnsmasq.d/Arktur.conf"
dhcp-boot=pxelinux.0,boothost,192.168.0.1 enable-tftp tftp-root=/tftpboot
[Bearbeiten] einzelne Programme
Grundsätzlich:
- GROSS- oder Kleinschreibung ist bei den Variablen egal
- Anstelle von "kernel" kann auch "linux" benutzt werden
- bei DOS-/Windows-nahen *.iso-Images sollte allemal die "append"-Option "raw" benutzt werden, woanders scheint sie nicht zu stören
- Oft reicht es aus, den Aufruf aus
- pxelinux.cfg/default
- isolinux.cfg
- syslinux.cfg
- sinngemäss in die eigene "default"-Datei zu übernehmen sowie die im jeweiligen Aufruf benutzten Dateien in ein passendes Verzeichnis unterhalb von "/tftpboot" zu kopieren
[Bearbeiten] DOS-Diskette
Ungepackt oder gepackt nach "/tftpboot/images"
Aufruf:
label dos kernel memdisk append initrd=images/freedos.img
[Bearbeiten] iso-Image
Nach "/tftpboot/iso"
Aufruf:
label udpcast kernel memdisk append iso raw initrd iso/updcd.iso
[Bearbeiten] Clonezilla
Clonezilla hat nur wenige Optionen und eine recht gute Benutzerführung, es eignet sich deshalb besonders für Systembetreuer, die nur selten mit diesem Programm arbeiten.
Quelle:
[Bearbeiten] Installation
Anpassung:
- Das *.iso-Image holen, "öffnen"
- Verzeichnis "/tftpboot/clonezilla" erzeugen
- aus dem Paket die Dateien
- /live/vmlinuz
- /live/initrd
- auf die Festplatte nach "/tftpboot/clonezilla" kopieren
- /live/filesystem/squashfs
- nach "/srv/ftp" kopieren
- Aufruf
LABEL Clonezilla kernel /clonezilla/live/vmlinuz append initrd=/clonezilla/live/initrd.img boot=live union=aufs noswap noprompt vga=788 fetch=ftp://192.168.0.1/filesystem.squashfs
nach "/tftpboot/pxelinux.cfg/default" kopieren
[Bearbeiten] Betrieb
Bei grösseren Platten als Muster lohnt es sich, sie zuerst "auszunullen" und dann gepackt zu transferieren.
Bei Arktur ist "Clonezilla" ein Menupunkt beim PXE-Boot.
[Bearbeiten] FOG
[Bearbeiten] Knoppix
Bezug:
Anleitung:
[Bearbeiten] Linbo
Das Linbo-Paket benutzt nach Vor-Einstellung das Verzeichnis "/var/linbo".
cd /tftpboot; ln -s /var/linbo
erzeugt einen (brav funktionierenden) Symlink ins "tftpboot"-Verzeichnis.
Aus der Datei "/var/linbo/pxelinux.cfg/default" kann der passende "LINBO"-Block für die Arktur-Konfigurationsdatei übernommen werden; einzig die Pfade müssen angepasst werden.
LABEL LINBO KERNEL linbo/linbo APPEND initrd=linbo/linbofs.gz acpi=off noapic nolapic irqpoll pci=routeirq pnpbios=off nomce vga=785 server=192.168.0.1 #
[Bearbeiten] RIP
Quelle:
Anpassung:
[Bearbeiten] iso
- *.iso-Image holen, nach "/tftpboot/iso" kopieren
- Symlink anpassen (nach "rip.iso")
- Rechte anpassen: "chmod a+r /tftpboot/iso/*.iso"
- Aufruf im Menu (oder der passenden *.conf-Datei):
LABEL RIP MENU LABEL RIP (CLI) KERNEL memdisk APPEND iso raw INITRD iso/rip.iso
[Bearbeiten] ausgewickelt
- Das PXE-Paket RIPxxx.zip holen, "öffnen"
- Verzeichnis "/tftpboot/rip-X" bzw. "/tftpboot/rip-non-X" erzeugen
- aus dem Paket die Dateien
- /tftpboot/kernel32
- /tftpboot/kernel64
- /tftpboot/rootfs.cgz
- sowie das Verzeichnis
- /tftpboot/pxelinux.cfg
- auf die Festplatte nach "/tftpboot/rip-X" bzw. "/tftpboot/rip-non-X" kopieren
- den gewünschten Aufruf
- von /tftpboot/rip-X/pxelinux.cfg/default
- nach /tftpboot/pxelinux.cfg/default
- kopieren, Pfad anpassen ("rip-X" oder "rip-non-X" davor setzen)
LABEL rip-CLI KERNEL rip-non-X/kernel32 APPEND vga=normal initrd=rip-non-X/rootfs.cgz root=/dev/ram0 rw
[Bearbeiten] udpcast
Quelle:
Anpassung:
- udcp.iso nach /home/tftpboot/iso kopieren
- (sicherheitshalber)
chmod -R a+r /home/tftpboot/iso
- Aufruf (in /home/tftpboot/pxelinux.cfg/default)
LABEL udpcast (iso) KERNEL memdisk APPEND iso INITRD iso/udcp.iso
[Bearbeiten] Betrieb
"udpcast" erlaubt (wie auch Clonezilla) das Kopieren von
- einzelnen Partitionen
- der gesamten Platte
- einzelnen Dateien (die auch wiederum Images von Partitionen oder einer Platte sein können)
von 1 Rechner oder aus einem Verzeichnis auf einen oder viele andere Rechner
"Sender" kann irgendein Rechner sein, oder auch per "sysadm"-Menu (ab Arktur 5.2.04) oder dem Befehl
upd-sender -f </Pfad/zu/Datei>
der Server "Arktur"
"Empfänger" sind meistens viele andere Rechner; wenn ein Muster-Image gespeichert werden soll, dann wird "Arktur" per "sysadm"-Menu oder dem Befehl
upd-receiver -f </Pfad/zu/Datei>
als Empfänger geschaltet.
Die einzelnen Rechner werden per PXE-Boot oder aber per updcast-Boot-CD gestartet.
[Bearbeiten] Weblinks
- https://help.ubuntu.com/community/PXEInstallMultiDistro
- http://www.etherboot.org/wiki/appnoted
- Netzboot von Alfred Bergkemper
- ausf. Erklärung A. Heinz, Uni Freiburg
- fli4l
- BartPE-PXE-Boot mit vielen Erläuterungen
- Computer_Mutter_GmbH auch für NFS-Freigaben
- Syslinux-Webseite
- RFCs
- RFC 1350, TFTP-Protokoll
- RFC 2132, DHCP-Optionen
