PXE-Server

Aus Arktur
(Weitergeleitet von Betrieb:PXE-Server)
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

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.

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.

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.

Einbinden

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

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.

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.

Betrieb

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.

Menu

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.ä.

strukturiertes Textmenu

Aufruf in der "default"-Datei im Verzeichnis "/tftpboot/pxelinux.cfg"

 
default menu.c32
prompt  0

o.ä.

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.

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

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.

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.

DHCPD

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

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

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

DOS-Diskette

Ungepackt oder gepackt nach "/tftpboot/images"

Aufruf:

label dos
   kernel memdisk
   append initrd=images/freedos.img

iso-Image

Nach "/tftpboot/iso"

Aufruf:

label udpcast
   kernel memdisk
   append iso raw
   initrd iso/updcd.iso

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:

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

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.

FOG

Knoppix

Bezug:

Anleitung:

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
#


RIP

Quelle:

Anpassung:

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

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

udpcast

Quelle:

Anpassung:

  • Datei udcp.iso ins Verzeichnis /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

Betrieb

"udpcast" erlaubt (wie auch Clonezilla) das Kopieren von

  1. einzelnen Partitionen
  2. der gesamten Platte
  3. 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.

Weblinks