PXElinux und Client-Konfiguration¶
Der Startvorgang eines Clients bis zu und in Stage3 ist stark mit TFTP verknüpft. Die Initialdaten (PXE-Linux und das Menüsystem) sowie die Client-Konfiguration werden mittels dieses Protokolls geholt.
Allgemeines zu PXElinux¶
Die wichtigsten Dateien von PXElinux (Teilprojekt von HPAs Syslinux) sind pxelinux.0 (ein ausführbares Binary) und das Unterverzeichnis pxelinux.cfg (die Lage dieses Verzeichnisses kann mit slxsettings festgelegt werden). Die Dateien bzw. Verzeichnisse sollten vom TFTP-Server erreicht werden können. pxelinux.0 sollte in den meisten Fällen als Boot-File in der dhcpd.conf definiert sein. Um das Menü darstellen zu können benötigt man dann noch die Datei menu.c32 soll es graphisch sein dann vesamenu.c32.
Eine pxelinux.cfg/default könnte beispielsweise so aussehen:
DEFAULT menu.c32
PROMPT 0
NOESCAPE 1
TIMEOUT 100
TOTALTIMEOUT 3000
ONTIMEOUT shutdown
#MENU MASTER PASSWD secret
MENU PASSPROMPT Gesicherter Bereich, bitte Passwort eingeben:
MENU AUTOBOOT Auswahl startet in # Sekunden
MENU TITLE OpenSLX - Hauptmenü
#####
LABEL shutdown
MENU HIDE # verstecke Eintrag
KERNEL kernel-shutdown
APPEND initrd=initramfs-shutdown quiet
LABEL -
MENU LABEL Bitte wählen Sie über die Pfeiltasten aus:
MENU DISABLE
LABEL +
MENU LABEL ++++++++++++++++++++++++++++
MENU DISABLE # deaktiviere Eintrag
MENU SEPARATOR # Leerzeile
#####
LABEL openslx-suse-10.2-main:nfs
MENU DEFAULT
MENU LABEL ^SUSE-10.2-main nfs
KERNEL suse-10.2-main/vmlinuz-2.6.18.8-0.5-default
APPEND initrd=suse-10.2-main/initramfs-1 vga=791 quiet
IPAPPEND 3 # IPAPPEND 3 schreibt die MAC-Adresse der
# bootenden Netzwerkkarte in die Kernel Commandline
LABEL openslx-suse-10.2-main:sqfs-nbd
MENU LABEL SUSE-10.2-main sqfs-^nbd
TEXT HELP # Bereich benutzen: Reihe 10 - 69
Hier kann ein Hilfeintrag stehen welcher z.B. die Besonder-
heit einer Umgebung beschreibt. Es sind mehrere Zeilen
moeglich (6). Bitte Bereich Reihe 10 - 69 verwenden.
Zeilen:
5 Zeilenende>
6
ENDTEXT
KERNEL suse-10.2-main/vmlinuz-2.6.18.8-0.5-default
APPEND initrd=suse-10.2-main/initramfs-2 vga=791 debug=3
IPAPPEND 3
LABEL hauptmenu
MENU LABEL SLX ^Hauptmenü
KERNEL vesamenu.c32
APPEND pxelinux.cfg/someotherconf
PXElinux und OpenSLX¶
Die PXE-Menüstruktur wird durch den slxconfig-demuxer erzeugt. Der Admin kann über slxsettings das Aussehen und Verhalten des Menüs steuern.
...
pxe-passwd='secret'
pxe-timeout='100'
pxe-title='Welcome to OpenSLX'
pxe-totaltimeout='600'
syslinux-theme='openslx'
Weitere Möglichkeiten der Manipulation des Menüs bestehen durch Änderung der Dateien /etc/opt/openslx/boot-env/syslinux/pxemenu-include und pxemenu-bottom. Erste wird direkt nach MENU TITLE und vor den durch Demuxer eingetragenen Systemen eingefügt. Zweite wird an das Ende des Menüs angehängt. Während die Erste sich auch für PXElinux-Konfigurationen eignet, sollten in der Zweiten nur noch Systeme und weiterführende Menüs eingetragen werden. Diese können natürlich auch in die Erste eingetragen werden. Zur Struktur des Menüs siehe source:/openslx/trunk/boot-env/syslinux/README.pxe. Beispiele für pxemenu-include: source:/openslx/trunk/boot-env/syslinux/pxemenu-include.example pxemenu-bottom: source:/openslx/trunk/boot-env/syslinux/pxemenu-bottom.example.
Über slxconfig change-system <system-name> kann das Attribut kernel_params angepasst werden, welches Einträge, wie quiet vga=0x317 für Bootsplash enthalten kann.
Reihenfolge und Aussehen der Bootmenüeinträge¶
Per Default trägt ist für den Menü-Namen im PXE der Systemname angegeben (beispielsweise "suse-11.0-clone::nfs"). Dieser Eintrag kann durch ein Verändern des Attributs label umgestellt werden. Eine Beschreibung des gerade angewählten Boot-Images (die unterhalb des Menü-Fensters eingeblendet wird), kann man mit:
slxconfig change-system suse-11.0-clone::nfs label="OpenSuSE 11.0 - Stateless / NFS -" slxconfig change-system suse-11.0-clone::nfs description="Boots the OpenSuSE 11.0 distro over the net"
eintragen.
Anmerkungen zur Boot-Reihenfolge fehlen noch ...
Theming¶
Mit slxsettings kann ein Theme definiert werden. Das Theme sollte dabei unterhalb von /etc/opt/openslx/boot-env/syslinux/themes liegen. Standardmäßig wird openslx verwendet. Das Theme Besteht aus einer Datei theme.conf und optional einem Bild. In der Datei theme.conf sollte nur das aussehen definiert werden. Für andere Definitionen existiert slxsettings und pxemenu-include s.o. Beispiel theme.conf: source:/openslx/trunk/boot-env/syslinux/themes/openslx/theme.conf
Aussehen siehe Anhänge unten.
Shutdown-Eintrag¶
Ein Rechner kann auf 3 Arten über das PXE-Menü herunter gefahren werden:
- Sichtbar im Menü und über Auswahl (PC fährt über auswahl des Labels herunter):
LABEL shutdown
MENU LABEL Rechner ^ausschalten
KERNEL kernel-shutdown
APPEND initrd=initramfs-shutdown quiet
- Unsichtbar im Menü über ONTIMEOUT (Rechner fährt nach angegebener Zeit und keiner Auswahl herunter):
TIMEOUT 100
TOTALTIMEOUT 3000
ONTIMEOUT shutdown
LABEL shutdown
MENU HIDE # verstecke Eintrag
KERNEL kernel-shutdown
APPEND initrd=initramfs-shutdown quiet
Diese beiden Versionen verwenden eine spezielle (kleine) InitRD und einen speziellen (kleinen) Kernel. Diese befinden sich im SVN. Ein PC kann jedoch auch mit jedem anderen Kernel und einer Standard-SLX-InitRD ausgeschaltet werden. Der einzige Nachteil hierbei ist, dass das herunterfahren ein paar Sekunden dauert (ca. 3), und die Benutzer noch den Anfang des Boots sehen:
- Nach
ONTIMEOUTüber zusätzliche APPEND-Option (shutdown):
TIMEOUT 100
TOTALTIMEOUT 3000
ONTIMEOUT sopenslx-suse-10.2-main:nfs shutdown # zusätzliche Option shutdown fährt Rechner herunter
LABEL openslx-suse-10.2-main:nfs
MENU DEFAULT
MENU LABEL ^SUSE-10.2-main nfs
KERNEL suse-10.2-main/vmlinuz-2.6.18.8-0.5-default
APPEND initrd=suse-10.2-main/initramfs-1 vga=791 quiet
IPAPPEND 3
TFTP-Einstellung¶
Dem Beispiel liegt die folgende TFTP-Konfiguration zugrunde: Als TFTP-Root, das ist das Verzeichnis, welches der TFTP-Server als oberste Ebene (aus Sicherheitsgründen, damit man nicht einfach auf das Dateisystem des Servers unbeschränkt zugreifen kann) annimmt, sei (/srv/openslx)/tftpboot festgelegt. Dieses ist der Default bei den meisten TFT-Konfigurationen. Da der in.tftpd üblicherweise mittels xinetd gestartet wird, erfolgt seine Konfiguration in dessen Zusammenhang (je nach Distribution, bei SuSE beispielsweise in /etc/xinetd.d/tftp):
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s (/srv/openslx)/tftpboot
disable = yes
}
Mit dieser Festlegung des TFTP-Roots beziehen sich alle Pfadangaben aus Clientsicht auf die Ebene unterhalb von /tftpboot. Die vorgenommenen Einstellungen für das Verzeichnis müssen dabei zu den Einstellungen des DHCP-Servers passen. Die DHCP-Server-Variable filename sollte dann auf (/tftpboot/)pxe/pxelinux.0 lauten. Das Prefix /tftpboot kann man mit angeben, ist aber wegen der TFTP-Root-Einstellung nicht notwendig. So sieht in einer typischen SLX-Installation dieses Verzeichnis aus:
tftpboot/client-config tftpboot/client-config/suse-11.0-x60:sqfs-nbd tftpboot/client-config/suse-11.0-x60:sqfs-nbd/01-<MAC>.tgz tftpboot/client-config/suse-11.0-x60:sqfs-nbd/default.tgz tftpboot/client-config/<system>/... tftpboot/ tftpboot/vesamenu.c32 tftpboot/pxelinux.0 tftpboot/suse-11.0-clone tftpboot/suse-11.0-clone/initramfs-1 tftpboot/suse-11.0-clone/vmlinuz tftpboot/<vendor-os>/... tftpboot/...
Alle Dateien müssen vom TFTP-Server erreicht werden können, so dass eine Ablage unterhalb eines gemeinsamen TFTP-Roots, beispielsweise /tftpboot notwendig ist. Zusätzliche Dateien (die von pxelinux.0 beschafft werden), wie vesamenu.32 etc. müssen auf derselben Ebene liegen, wie pxelinux.0 selbst, wenn nicht explizit ein anderer Pfad angegeben wurde. Wichtig ist, dass kein Kernel mit *.0 endet, da er sonst als PXE-Binary erkannt und behandelt werden würde.
Für den Gesamtüberblick der SLX-Verzeichnisstruktur, siehe BootRootVerzeichnisse.