Inhaltsverzeichnis

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/:

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

  1.  # mkdir /var/lib/tftpboot/images/centos/8/x86_64 -p 
  2.  # mkdir /var/lib/tftpboot/images/centos/7/x86_64 -p 
  3.  # mkdir /var/lib/tftpboot/images/centos/6/x86_64 -p 
  4.  # 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.

  1.  # 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 
  2. # 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 
  3. # 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 
  4. # 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. Bild: Bildschirmhardcopy des Bootmenüs

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.

Bild: Bildschirmhardcopy des graphischen Bootmenüs

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.

Bild: Bildschirmhardcopy des graphischen Bootmenüs

Bild: Bildschirmhardcopy des graphischen Bootmenüs

Bild: Bildschirmhardcopy des graphischen Bootmenüs

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.

Bild: Bildschirmhardcopy des graphischen Bootmenüs

Drücken wir nun die Taste F1 wir unsere zuvor neu definierte Hilfeseite eingeblendet.

Bild: Bildschirmhardcopy des graphischen Bootmenüs mit eingeblendetem Hilfetext

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.

Links