PXE-Server unter CentOS 7.x einrichten
Im folgenden Kapitel befassen wir uns eingehender mit der Konfiguration unseres PXE-Bootservers.
Grund-Konfiguration
Order und Dateien anlegen
Mit Unterstützung des TFTP-Servers und dem xinet-daemon muss dem anfragendem Client-System ein minimales Betriebssystem mit einem Auswahlmenü über das Netzwerk zur Verfügung gestellt werden. Diese Minimalanforderung werden wir nun im ersten Schritt umsetzen. Hierzu kopieren wir aus dem Verzeichnis /usr/share/syslinux/ nachfolgende Dateien in das Zielverzeichnis /var/lib/tftpboot/:
- chain.c32
- mboot.c32
- memdisk
- menu.c32
- pxelinux.0
- vesamenu.c32
# cp -a /usr/share/syslinux/{chain.c32,mboot.c32,memdisk,menu.c32,pxelinux.0,vesamenu.c32} /var/lib/tftpboot
Anaxgließend erstellen wir uns noch einen Ordner, in dem die Bootmenüs abgelegt werden, die später beim PXE-Boot dem Client präsentiert werden sollen.
# mkdir /var/lib/tftpboot/pxelinux.cfg
Im Anschluss daran legen wir uns noch die Verzeichnisse für die Image-Dateien, die beim Bootvorgang benötigt werden, an. Bei unserer Installation wollen wir für folgende CentOS-Versionen und Architekturen später jeweils einen entsprechenden Eintrag im Bootmenü vorhalten.
- CentOS 8 - x86_64
- CentOS 7 - x86_64
- CentOS 6 - x86_64
- CentOS 6 - i386
# mkdir /var/lib/tftpboot/images/centos/8/x86_64 -p
# mkdir /var/lib/tftpboot/images/centos/7/x86_64 -p
# mkdir /var/lib/tftpboot/images/centos/6/x86_64 -p
# mkdir /var/lib/tftpboot/images/centos/6/i386 -p
Als abschliessenden Punkt werden wir nun in die gerade angelegten und entsprechenden Verzeichnisse jeweils das zugehörige initrd.img und vmlinuz aus dem Repository laden.
# cd /var/lib/tftpboot/images/centos/8/x86_64
# wget http://repository.nausch.org/centos/8/BaseOS/x86_64/kickstart/images/pxeboot/initrd.img
# wget http://repository.nausch.org/centos/8/BaseOS/x86_64/kickstart/images/pxeboot/vmlinuz
# cd /var/lib/tftpboot/images/centos/7/x86_64
# wget http://repository.nausch.org/centos/7/os/x86_64/images/pxeboot/initrd.img
# wget http://repository.nausch.org/centos/7/os/x86_64/images/pxeboot/vmlinuz
# cd /var/lib/tftpboot/images/centos/6/x86_64/
# wget http://repository.nausch.org/centos/6/os/x86_64/images/pxeboot/initrd.img
# wget http://repository.nausch.org/centos/6/os/x86_64/images/pxeboot/vmlinuz
# cd /var/lib/tftpboot/images/centos/6/i386/
# wget http://repository.nausch.org/centos/6/os/i386/images/pxeboot/initrd.img
# wget http://repository.nausch.org/centos/6/os/i386/images/pxeboot/vmlinuz
Somit ergibt sich vorerst folgende Verzeichnis- und Dateistruktur.
/var/lib/tftpboot/ ├── chain.c32 ├── images │ └── centos │ ├── 6 │ │ ├── i386 │ │ │ ├── initrd.img │ │ │ └── vmlinuz │ │ └── x86_64 │ │ ├── initrd.img │ │ └── vmlinuz │ ├── 7 │ │ └── x86_64 │ │ ├── initrd.img │ │ └── vmlinuz │ └── 8 │ └── x86_64 │ ├── initrd.img │ └── vmlinuz ├── mboot.c32 ├── memdisk ├── menu.c32 ├── pxelinux.0 ├── pxelinux.cfg └── vesamenu.c32
einfaches Bootmenü erstellen
Für die Auswahl der unterschiedlichen Systeme, die wir später zur Installation anbieten wollen, benötigen wir noch ein passendes Auswahlmenü. Dieses Bootmenü wird mit Hilfe der Datei /var/lib/tftpboot/pxelinux.cfg/default bereitgestellt. Wir legen uns also für eine erste „spartanische Variante“ nachfolgende Datei an.
# vim /var/lib/tftpboot/pxelinux.cfg/default
- /var/lib/tftpboot/pxelinux.cfg/default
# Django 2020-06-11 # erstes einfaches Bootmenü für PXE-Boot # Einbinden des User-Interface-Module menu.c32 default menu.c32 # starten des Standardeintrages nach 10 Sekunden timeout 100 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definition der Überschrift unseres Bootmenüs menu title *** PXE Boot-Auswahl Menue *** # Definition einer Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) # menu background bootgraphik.png # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Boot from ^HD (default) localboot 0 LABEL 2 MENU LABEL ^2) Installation von CentOS 8 (64 Bit) KERNEL images/centos/8/x86_64/vmlinuz APPEND initrd=images/centos/8/x86_64/initrd.img ip=dhcp method=http://10.0.0.57/centos/8/BaseOS/x86_64/os/ LABEL 3 MENU LABEL ^2) Installation von CentOS 7 (64 Bit) KERNEL images/centos/7/x86_64/vmlinuz APPEND initrd=images/centos/7/x86_64/initrd.img ip=dhcp method=http://10.0.0.57/centos/7/os/x64_86 LABEL 4 MENU LABEL ^3) Installation von CentOS 6 (64 Bit) KERNEL images/centos/6/x86_64/vmlinuz APPEND initrd=images/centos/6/x86_64/initrd.img ip=dhcp method=http://10.0.0.57/centos/6/os/x86_64 LABEL 5 MENU LABEL ^4) Installation von CentOS 6 (32 Bit) KERNEL images/centos/6/i386/vmlinuz APPEND initrd=images/centos/6/i386/initrd.img ip=dhcp method=http://10.0.0.57/centos/6/os/i386
DHCP-Server anpassen
Damit der TFTP-Server vom DHCP-Server im Netz bei den Clientanfragen veröffentlicht werden kann, müssen wir unseren bestehenden DHCP-Server noch entsprechend erweitern. Hierzu verwenden wir wie immer unseren Lieblingseditor vim.
# vim /etc/dhcp/dhcpd.conf
Folgende Zeilen tragen wir nach:
# Django : 2011-11-22 bootflag für PXE-Boot setzen allow booting; # Django : 2011-11-22 bootp-flag setzen für Antwortmöglichkeit auf bootp-Anfragen der Clients allow bootp; # Django : 2011-11-22 Adresse des TFTP-Servers für PXE-Boot setzen next-server 10.0.0.57; # Django : 2011-11-22 Dateinamen auf initiale Boot-Datei setzen filename "pxelinux.0";
Somit ergibt sich eine vorläufige Gesamtkonfigurationsdatei unseres DHCP-Servers.
- /etc/dhcp/dhcpd.conf
subnet 10.0.10.0 netmask 255.255.255.192 { option routers 10.0.10.1; option subnet-mask 255.255.255.192; option domain-name "nausch.org"; option domain-search "dmz.nausch.org", "intra.nausch.org"; option domain-name-servers 10.0.10.1; # Django : 2011-11-22 bootflag für PXE-Boot setzen allow booting; # Django : 2011-11-22 bootp-flag setzen für Antwortmöglichkeit auf bootp-Anfragen der Clients allow bootp; # Django : 2011-11-22 Adresse des TFTP-Servers für PXE-Boot setzen next-server 10.0.0.57; # Django : 2011-11-22 Dateinamen auf initiale Boot-Datei setzen filename "pxelinux.0"; option time-offset -18000; # Eastern Standard Time option ntp-servers 10.0.10.1; range dynamic-bootp 10.0.10.50 10.0.10.62; default-lease-time 21600; max-lease-time 43200; } host vml010006 { hardware ethernet 52:54:00:ba:ba:ba; fixed-address 10.0.10.6; }
Bevor wir nun die Konfigurationsänderungen an unseren DHCP-Server aktivieren, überprüfen wir unsere Konfiguration mit:
# dhcpd -t
Internet Systems Consortium DHCP Server 4.2.5 Copyright 2004-2013 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Da keine Syntaxfehler angezeigt wurden, steht einen Neustart des DHSP-Servers nichts mehr im Weg.
# systemctl restart dhcpd.service
Clienttest
Starten wir nun einen neuen vHOST dann wird uns ein entsprechendes Bootmenü angezeigt.
Zur Versorgung unserer Maschinen reicht dies natürlich, die Optik ist natürlich nicht gerade umwerfend. Wir können damit auch schon die ersten CentOS 6 Maschinen betanken.
Im Gengensatz zu CentOS 6, bei dem der PXE-Boot und die Installation ohne weitere Konfigurationsmaßnahmen bereits möglich ist, müssen wir bei CentOS 7 noch ein wenig Hand anlegen. Der Versuch jetzt schon eine Maschine zu betanken würde nämlich mit folgender bzw. gleichlautender Fehlermeldung scheitern.
dracut-initqueue [666] RTNETLINK answers: File exists dracut-initqueue [666] Warning: can't find installer mainimage path in .treeinfo
Bei CentOS 7 benötigen wir noch ein passendes kickstart-File, welches wir uns im Kapitel PXE Optimierung - Installationsscript für CentOS Installation erstellen werden!
erweiterte Konfiguration
graphisches Bootmenü erstellen
Wie bei der Grundkonfiguration bereits angeschnitten, macht unser Bootmenü noch einen spartanischen nicht individualisierten Eindruck. Diesen „Mangel“ wollen nun abstellen.
Wir bearbeiten also wieder unsere Menüdatei /var/lib/tftpboot/pxelinux.cfg/default mit unserem Lieblingseditor vim.
# vim /var/lib/tftpboot/pxelinux.cfg/default
- /var/lib/tftpboot/pxelinux.cfg/default
# Django 2011-11-24 # erweitertes graphisches Menü für PXE-Boot # Einbinden des User-Interface-Module vesamenu.c32 default vesamenu.c32 # starten des Standardeintrages nach 10 Sekunden timeout 100 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definitionen des Bootmenü-Bildschirms: # # background : Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) # border : Rahmen # cmdline : Kommandozeile # cmdmark : Kommandozeile (Marker) # disabled : Menüeintrag (nicht aktiviert) # help : Hilfe Text # hotkey : Hotkey (nicht ausgewählt) # hotsel : Hotkey (ausgewählt) # msgXX : Nachricht (Funktionstaste) Datei-Attribut XX # pwdborder : Passwortbox (Rahmen) # pwdheader : Passwortbox (Überschrift) # pwdentry : Passwortbox (Inhalt) # sel : Selektionsbalken # screen : Bildschirmhintergrund # scrollbar : Scroll-Balken # tabmsg : "Press [Tab]" Nachricht # timeout_msg : Timeout Nachricht # timeout : Timeout Zähler # title : Überschriftsbalken # unsel : Menüeintrag (nicht ausgewählt) # Definition der Überschrift unseres Bootmenüs menu title *** PXE Boot-Auswahl Menue *** # Definition einer Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) menu background bootgraphik.png menu color title 1;36;44 #0824b5 #00000000 std menu color sel * #00000000 #0824b5 * menu color hotsel 1;7;37;40 #00000000 #999999ff * menu color unsel 1;36;44 #0824b5 #00000000 std menu color hotkey 1;36;44 #0824b5 #00000000 std menu color tabmsg 1;36;44 #ed7500 #00000000 std menu color cmdline 1;36;44 #0824b5 #00000000 std menu color timeout_msg 1;36;44 #0824b5 #00000000 std menu color timeout 1;36;44 #0824b5 #00000000 std # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Boot from ^HD (default) localboot 0 LABEL 2 MENU LABEL ^2) Installation von CentOS 7 (64 Bit) KERNEL images/centos/7/x86_64/vmlinuz APPEND ks=http://10.0.0.57/kickstart/ks_centos_7_x86_64_dmz.cfg initrd=images/centos/7/x86_64/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp --hostname=vml000250.dmz.nausch.org method=http://10.0.0.57/centos/7/os/x86_64 SERVERNAME= LABEL 3 MENU LABEL ^3) Installation von CentOS 6 (64 Bit) KERNEL images/centos/6/x86_64/vmlinuz APPEND initrd=images/centos/6/x86_64/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.57/centos/6/os/x86_64 LABEL 4 MENU LABEL ^4) Installation von CentOS 6 (32 Bit) KERNEL images/centos/6/i386/vmlinuz APPEND initrd=images/centos/6/i386/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.57/centos/6/os/i386
Als Graphik verwenden wir eine passende selbstgemachte Graphik mit den Abmessungen 640 x 480 und speichern diese im Format PNG ab.
# mv /home/django/bootgraphik.png /var/lib/tftpboot/
Clienttest
Starten wir nun erneut einen neuen vHOST, dann wird uns ein entsprechends Bootmenü angezeigt.
Im Vergleich zur reinen Textvariante sieht dies schon wesentlich ansprechender und für das Einsatzgebiet individueller aus.
Untermenü erstellen
Hat man sehr viele unterschiedliche Menüpunkte, ist es in aller Regel sehr zweckmässig, einzelne Bootpunkte zu gruppieren und auf einzelne Untermenüs aufzuteilen. So könnte man z.B. alle CentOS 6 und alle CentOS 7 spezifischen Bootoptionen zusammenfassen und auf einzelne Seiten aufzuteilen. Im nachfolgenden Konfigurationsbeispiel wollen wir uns dies nun genauer ansehen.
Als erstes erstellen wir uns unser Hauptmenü - dazu bearbeiten wir unsere bereits bestehende Konfigurationsdatei /var/lib/tftpboot/pxelinux.cfg/default und passen diese wie folgt an.
# vim /var/lib/tftpboot/pxelinux.cfg/default
- /var/lib/tftpboot/pxelinux.cfg/default
# Django 2011-11-24 # erstes einfaches Bootmenü für PXE-Boot # Einbinden des User-Interface-Module vesamenu.c32 default vesamenu.c32 # starten des Standardeintrages nach 10 Sekunden timeout 100 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definitionen des Bootmenü-Bildschirms: # # background : Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) # border : Rahmen # cmdline : Kommandozeile # cmdmark : Kommandozeile (Marker) # disabled : Menüeintrag (nicht aktiviert) # help : Hilfe Text # hotkey : Hotkey (nicht ausgewählt) # hotsel : Hotkey (ausgewählt) # msgXX : Nachricht (Funktionstaste) Datei-Attribut XX # pwdborder : Passwortbox (Rahmen) # pwdheader : Passwortbox (Überschrift) # pwdentry : Passwortbox (Inhalt) # sel : Selektionsbalken # screen : Bildschirmhintergrund # scrollbar : Scroll-Balken # tabmsg : "Press [Tab]" Nachricht # timeout_msg : Timeout Nachricht # timeout : Timeout Zähler # title : Überschriftsbalken # unsel : Menüeintrag (nicht ausgewählt) menu background bootgraphik.png menu title *** PXE Boot-Auswahl Menue *** menu color title 1;36;44 #0824b5 #00000000 std menu color sel * #00000000 #0824b5 * menu color hotsel 1;7;37;40 #00000000 #999999ff * menu color unsel 1;36;44 #0824b5 #00000000 std menu color hotkey 1;36;44 #0824b5 #00000000 std menu color tabmsg 1;36;44 #ed7500 #00000000 std menu color cmdline 1;36;44 #0824b5 #00000000 std menu color timeout_msg 1;36;44 #0824b5 #00000000 std menu color timeout 1;36;44 #0824b5 #00000000 std menu color help 1;36;30 #ff0000 #00000000 std menu helpmsgrow 20 # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Boot from ^HD (default) localboot 0 LABEL 2 MENU LABEL ^2) Untermenue Intranet (32 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/intra-32 LABEL 3 MENU LABEL ^3) Untermenue Intranet (64 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/intra-64 LABEL 4 MENU LABEL ^4) Untermenue DMZ (32 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/dmz-32 LABEL 5 MENU LABEL ^5) Untermenue DMZ (64 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/dmz-64 LABEL A MENU LABEL ^A) Untermenue DBAN: Festplatten sicher loeschen KERNEL vesamenu.c32 APPEND pxelinux.cfg/dban LABEL B MENU LABEL ^B) Untermenue Clonezilla (i686-PAE) KERNEL vesamenu.c32 APPEND pxelinux.cfg/clonezilla_i686-pae LABEL C MENU LABEL ^C) Untermenue Clonezilla (AMD-64) KERNEL vesamenu.c32 APPEND pxelinux.cfg/clonezilla_amd-64 LABEL D MENU LABEL ^D) Untermenue Utilities KERNEL vesamenu.c32 APPEND pxelinux.cfg/utilities
Für jedes der benannten Untermenüs legen wir uns nun eine zugehörige Konfigurationsdatei an.
# vim /var/lib/tftpboot/pxelinux.cfg/utilities
- /var/lib/tftpboot/pxelinux.cfg/utilities
# Django 2014-07-02 # verschachteltes Untermenü mit graphischer Auswahlmöglichkeit für PXE-Boot # Einbinden des User-Interface-Module vesamenu.c32 default vesamenu.c32 # starten des Standardeintrages nach 10 Sekunden timeout 100 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definitionen des Bootmenü-Bildschirms: # # background : Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) # border : Rahmen # cmdline : Kommandozeile # cmdmark : Kommandozeile (Marker) # disabled : Menüeintrag (nicht aktiviert) # help : Hilfe Text # hotkey : Hotkey (nicht ausgewählt) # hotsel : Hotkey (ausgewählt) # msgXX : Nachricht (Funktionstaste) Datei-Attribut XX # pwdborder : Passwortbox (Rahmen) # pwdheader : Passwortbox (Überschrift) # pwdentry : Passwortbox (Inhalt) # sel : Selektionsbalken # screen : Bildschirmhintergrund # scrollbar : Scroll-Balken # tabmsg : "Press [Tab]" Nachricht # timeout_msg : Timeout Nachricht # timeout : Timeout Zähler # title : Überschriftsbalken # unsel : Menüeintrag (nicht ausgewählt) menu background bootgraphik.png menu title *** Installations-Menue DMZ 64-Bit *** menu color title 1;36;44 #0824b5 #00000000 std menu color sel * #00000000 #0824b5 * menu color hotsel 1;7;37;40 #00000000 #999999ff * menu color unsel 1;36;44 #0824b5 #00000000 std menu color hotkey 1;36;44 #0824b5 #00000000 std menu color tabmsg 1;36;44 #ed7500 #00000000 std menu color cmdline 1;36;44 #0824b5 #00000000 std menu color timeout_msg 1;36;44 #0824b5 #00000000 std menu color timeout 1;36;44 #0824b5 #00000000 std menu color help 1;36;30 #ff0000 #00000000 std menu helpmsgrow 20 # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Zurueck zum Hauptmenue KERNEL vesamenu.c32 APPEND pxelinux.cfg/default LABEL 2 MENU LABEL ^2) Memory-Test KERNEL images/clonezilla/memtest TEXT HELP Run memory test using Memtest86+ ENDTEXT LABEL 3 MENU LABEL ^3) FreeDOS KERNEL images/clonezilla/memdisk APPEND initrd=images/clonezilla/freedos.img TEXT HELP Run FreeDOS ENDTEXT LABEL 4 MENU LABEL ^4) Network boot via iPXE KERNEL images/clonezilla/ipxe.lkn TEXT HELP Run iPXE to enable network (PXE) boot ENDTEXT
# vim /var/lib/tftpboot/pxelinux.cfg/dmz-64
- /var/lib/tftpboot/pxelinux.cfg/dmz-64
# Django 2020-06-11 # verschachteltes Untermenü mit graphischer Auswahlmöglichkeit für PXE-Boot # Einbinden des User-Interface-Module vesamenu.c32 default vesamenu.c32 # starten des Standardeintrages nach 10 Sekunden timeout 100 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definitionen des Bootmenü-Bildschirms: # # background : Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) # border : Rahmen # cmdline : Kommandozeile # cmdmark : Kommandozeile (Marker) # disabled : Menüeintrag (nicht aktiviert) # help : Hilfe Text # hotkey : Hotkey (nicht ausgewählt) # hotsel : Hotkey (ausgewählt) # msgXX : Nachricht (Funktionstaste) Datei-Attribut XX # pwdborder : Passwortbox (Rahmen) # pwdheader : Passwortbox (Überschrift) # pwdentry : Passwortbox (Inhalt) # sel : Selektionsbalken # screen : Bildschirmhintergrund # scrollbar : Scroll-Balken # tabmsg : "Press [Tab]" Nachricht # timeout_msg : Timeout Nachricht # timeout : Timeout Zähler # title : Überschriftsbalken # unsel : Menüeintrag (nicht ausgewählt) menu background bootgraphik.png menu title *** Installations-Menue DMZ 64-Bit *** menu color title 1;36;44 #0824b5 #00000000 std menu color sel * #00000000 #0824b5 * menu color hotsel 1;7;37;40 #00000000 #999999ff * menu color unsel 1;36;44 #0824b5 #00000000 std menu color hotkey 1;36;44 #0824b5 #00000000 std menu color tabmsg 1;36;44 #ed7500 #00000000 std menu color cmdline 1;36;44 #0824b5 #00000000 std menu color timeout_msg 1;36;44 #0824b5 #00000000 std menu color timeout 1;36;44 #0824b5 #00000000 std menu color help 1;36;30 #ff0000 #00000000 std menu helpmsgrow 20 # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Boot from ^HD (default) localboot 0 LABEL 2 MENU LABEL ^2) Zurueck zum Hauptmenue KERNEL vesamenu.c32 APPEND pxelinux.cfg/default LABEL 3 MENU LABEL ^3) Installation von CentOS 8 (64 Bit) KERNEL images/centos/8/x86_64/vmlinuz APPEND ks=http://10.0.0.57/kickstart/ks_centos_8_x86_64_dmz.cfg initrd=images/centos/8/x86_64/initrd.img ksdevice=eth0 ip=dhcp --hostname=vml000250.dmz.nausch.org method=http://10.0.0.57/centos/8/BaseOS/x86_64/os/ SERVERNAME= LABEL 4 MENU LABEL ^3) Installation von CentOS 7 (64 Bit) KERNEL images/centos/7/x86_64/vmlinuz APPEND ks=http://10.0.0.57/kickstart/ks_centos_7_x86_64_dmz.cfg initrd=images/centos/7/x86_64/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp --hostname=vml000250.dmz.nausch.org method=http://10.0.0.57/centos/7/os/x86_64 SERVERNAME= LABEL 5 MENU LABEL ^4) Installation von CentOS 6 (64 Bit) KERNEL images/centos/6/x86_64/vmlinuz APPEND initrd=images/centos/6/x86_64/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.57/centos/6/os/x86_64
Clienttest
Starten wir nun erneut einen neuen vHOST, dann wird uns unser neues angepasstes und mit den definierten Untermenüseiten jeweils ein individuelles angepasstes Bootmenü angezeigt.
- Hauptmenü
- Untermenü Utilities:
- Untermenü DMZ 64 bit:
Nun haben wir ein wesentlich aufgeräumteres und struktierteres Bootmenü.
Hilfeseiten und -texte erstellen
Was nun noch fehlt sind Hilfeseiten mit zusätzlichen Informationen zu den einzelnen Untermenüs und Bootoptionen. Mit diesen werden wir uns nun noch in dem abschliessenden Konfigurationsbeispiel befassen.
Zuerst erweitern wir wieder unserer Hauptmenüseite /var/lib/tftpboot/pxelinux.cfg/default und tragen am Ende folgende Zeile(n) nach.
# Zusätzliche Hilfeseiten auf Tastendruck einblenden. F1 pxelinux.cfg/about.txt
# vim /var/lib/tftpboot/pxelinux.cfg/default
- /var/lib/tftpboot/pxelinux.cfg/default
# Django 2014-07-02 # erweitertes graphisches Bootmenü mit Untermenüs und Hilfeseite (F1) für PXE-Boot # Einbinden des User-Interface-Module vesamenu.c32 default vesamenu.c32 # starten des Standardeintrages nach 10 Sekunden timeout 100 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definitionen des Bootmenü-Bildschirms: # # background : Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) # border : Rahmen # cmdline : Kommandozeile # cmdmark : Kommandozeile (Marker) # disabled : Menüeintrag (nicht aktiviert) # help : Hilfe Text # hotkey : Hotkey (nicht ausgewählt) # hotsel : Hotkey (ausgewählt) # msgXX : Nachricht (Funktionstaste) Datei-Attribut XX # pwdborder : Passwortbox (Rahmen) # pwdheader : Passwortbox (Überschrift) # pwdentry : Passwortbox (Inhalt) # sel : Selektionsbalken # screen : Bildschirmhintergrund # scrollbar : Scroll-Balken # tabmsg : "Press [Tab]" Nachricht # timeout_msg : Timeout Nachricht # timeout : Timeout Zähler # title : Überschriftsbalken # unsel : Menüeintrag (nicht ausgewählt) menu background bootgraphik.png menu title *** PXE Boot-Auswahl Menue *** menu color title 1;36;44 #0824b5 #00000000 std menu color sel * #00000000 #0824b5 * menu color hotsel 1;7;37;40 #00000000 #999999ff * menu color unsel 1;36;44 #0824b5 #00000000 std menu color hotkey 1;36;44 #0824b5 #00000000 std menu color tabmsg 1;36;44 #ed7500 #00000000 std menu color cmdline 1;36;44 #0824b5 #00000000 std menu color timeout_msg 1;36;44 #0824b5 #00000000 std menu color timeout 1;36;44 #0824b5 #00000000 std menu color help 1;36;30 #ff0000 #00000000 std menu helpmsgrow 20 # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Boot from ^HD (default) localboot 0 LABEL 2 MENU LABEL ^2) Untermenue Intranet (32 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/intra-32 LABEL 3 MENU LABEL ^3) Untermenue Intranet (64 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/intra-64 LABEL 4 MENU LABEL ^4) Untermenue DMZ (32 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/dmz-32 LABEL 5 MENU LABEL ^5) Untermenue DMZ (64 Bit) KERNEL vesamenu.c32 APPEND pxelinux.cfg/dmz-64 LABEL A MENU LABEL ^A) Untermenue DBAN: Festplatten sicher loeschen KERNEL vesamenu.c32 APPEND pxelinux.cfg/dban LABEL B MENU LABEL ^B) Untermenue Clonezilla (i686-PAE) KERNEL vesamenu.c32 APPEND pxelinux.cfg/clonezilla_i686-pae LABEL C MENU LABEL ^C) Untermenue Clonezilla (AMD-64) KERNEL vesamenu.c32 APPEND pxelinux.cfg/clonezilla_amd-64 LABEL D MENU LABEL ^D) Untermenue Utilities KERNEL vesamenu.c32 APPEND pxelinux.cfg/utilities # Zusätzliche Hilfeseiten auf Tastendruck einblenden. F1 pxelinux.cfg/about.txt
Den Hilfetext packen wir dann in nachfolgende Datei: about.txt Hier ist es wichtig, dass diese Datei in der Originalstruktur beibehalten und nur die entsprechenden Textpassagen ausgetauscht werden! Keinenfalls versuchen, die Datei per Hand anzulegen - die nötigen Formatierungen würden zerstört und das Ergebnis zu wünschen übrig lassen!
Clienttest
Starten wir nun erneut einen neuen vHOST, dann wird uns unser bereits bekanntes Bootmenü angezeigt.
Drücken wir nun die Taste F1 wir unsere zuvor neu definierte Hilfeseite eingeblendet.
Mit einem erneuten Druck auf die Taste F1 verlassen wir den eingeblendeten Hilfetext wieder.
automatische Installation
Einen weiteren Schritt zur Komfortablen und automatisierten Installation werden wir mit Hilfe einer Kickstartdatei vornehmen. Wie dies geht, ist im Kapitel PXE-Server unter CentOS 7.x optimieren (Kickstartfile) beschrieben.