Good to Know Database

CentOS 5: PXE-Server mit graphischem Bootmenü


1. Einleitung

Die Abkürzung PXE steht für Preboot Execution Environment und ist ein Verfahren, mit welchem ein PXE-fähiger Rechner ein Betriebssystem über das Netzwerk starten kann. Dies kann zum Installieren eines Rechners ohne die Verwendung von lokalen Medien (CD/DVD, USB-Stick, FDD, ...) oder zum Aufbau von ThinClients verwendet werden.

2. Vorbereitungen

Für die folgende Anleitung müssen Sie bei einem neu installiertem CentOS 5 System die Pakete gcc und nasm nachinstallieren.

[root@centos5 ~]# yum install gcc nasm

Sollte SYSLINUX bereits installiert sein, empfiehlt es sich dieses Paket wieder zu entfernen.

[root@centos5 ~]# yum remove syslinux

3. SYSLINUX installieren

Zur Installation der aktuellen Version von SYSLINUX (momentan is dies die Version 3.85) wechseln Sie in das Verzeichnis /usr/src, laden den Quellcode herunter und entpacken diesen.

[root@centos5 ~]# cd /usr/src/
[root@centos5 src]# wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.85.tar.gz
[root@centos5 src]# tar xfz syslinux-3.85.tar.gz

Wechseln Sie jetzt in das entpackte Verzeichnis, übersetzen den Quellcode und installieren SYSLINUX.

[root@centos5 src]# cd syslinux-3.85
[root@centos5 syslinux-3.85]# make
[root@centos5 syslinux-3.85]# make install

4. PXELINUX einrichten

Erstellen Sie mit dem folgenden Befehl die Verzeichnisstruktur /tftpboot/pxelinux.cfg.

[root@centos5 ~]# mkdir -p /tftpboot/pxelinux.cfg

Kopieren Sie anschließend die Dateien chain.c32, menu.c32, vesamenu.c32 und pxelinux.0 aus dem Verzeichnis /usr/share/syslinux in das Verzeichnis /tftpboot.

[root@centos5 ~]# cp /usr/share/syslinux/chain.c32 /usr/share/syslinux/menu.c32 /usr/share/syslinux/vesamenu.c32 /usr/share/syslinux/pxelinux.0 /tftpboot/

Legen Sie jetzt die Datei /tftpboot/pxelinux.cfg/default an.

[root@centos5 ~]# vi /tftpboot/pxelinux.cfg/default

In dieser Datei werden die einzelnen Booteinträge definiert, welche Sie später auswählen können.

default vesamenu.c32
timeout 100
prompt 0
noescape 1

menu title PXE Boot Options
menu background menu.png

label centos5
  menu label CentOS 5.4 i386
  kernel /centos5/i386/vmlinuz
  append initrd=/centos5/i386/initrd.img devfs=nomount ramdisk_size=9216 method=ftp://192.168.10.1/pub/centos5/i386/

label centos5_x64
  menu label CentOS 5.4 x86_64
  kernel /centos5/x86_64/vmlinuz
  append initrd=/centos5/x86_64/initrd.img devfs=nomount ramdisk_size=9216 method=ftp://192.168.10.1/pub/centos5/x86_64/

Wie Sie sehen, sind in diesem Beispiel neben allgemeinen Einstellungen zwei Booteinträge definiert, mit welchen Sie die Installation von CentOS 5.4 über das Netzwerk starten können. Die Bedeutung der einzelnen Optionen werden im nächsten Abschnitt erläutert.

5. Bootmenü erstellen

Wie Sie bereits im letzten Listing sehen können, stehen am Anfang der Datei /tftpboot/pxelinux.cfg/default einige allgemeine Optionen welche das Verhalten des Bootmenüs festlegen.

DEFAULT
Mit dieser Option wird das User Interface Module vesamenu.c32 eingebunden.

TIMEOUT
Nach welcher Zeit der Standardeintrag gebootet werden soll.

PROMPT
Durch den Wert 1 wird das Boot-Prompt standardmäßig angezeigt, durch den Wert 0 wird es ausgeblendet.

NOESCAPE
Ist hier der Wert 0 gesetzt, kann man das Boot-Prompt mit Esc öffnen. Durch den Wert 1 wird diese Funktion deaktiviert.

Nach diesen Optionen folgen einige allgemeine Einstellungen welche das Aussehen des Bootmenü betreffen.

MENU TITLE
Hier können Sie eine Überschrift für das Bootmenü angeben.

MENU BACKGROUND
Mit dieser Option können Sie ein Hintergrundbild angeben. Das Hintergrundbild muss die Auflösung 640x480 haben und im PNG-Format vorliegen.

Anschließend folgen die einzelnen Booteinträge.

LABEL
Jeder Booteintrag benötigt eine eindeutige Bezeichnung welche Sie mit dieser Option festlegen.

MENU LABEL
Damit im Bootmenü nicht der LABEL angezeigt wird, können Sie mit dieser Option eine aussagekräftigere Beschreibung angeben.

KERNEL
Hier wird das zu bootende Kernel Image angegeben.

APPEND
Benutzerspezifische Kerneloptionen können Sie hier angeben.

Neben den hier aufgeführten Optionen bietet SYSLINUX noch weitere interessante Optionen an. Informationen hierzu finden Sie in der Dokumentation von SYSLINUX.

[root@centos5 ~]# less /usr/src/syslinux-3.85/doc/menu.txt

Sollten Sie die Optionen MENU PASSWD und MENU MASTER PASSWD zum Schutz eines einzelnen Eintrages beziehungsweise des Bootprompts verwenden, benötigen Sie zum Beispiel einen SHA1-Passwort Hash welchen Sie mit dem folgenden Befehl erstellen können.

[root@centos5 ~]# /usr/src/syslinux-3.85/utils/sha1pass password
$4$OYD7WUej$DL3u6sTI/B691xH4UewTgQkggCI$

Sollte dieser Befehl zu Fehlermeldungen führen, müssen Sie gegebenenfalls noch das Perl-Modul Digest::SHA1 installieren.

[root@centos5 ~]# perl -MCPAN -e shell
cpan> install Digest::SHA1
cpan> exit

6. Bootimage hinterlegen

Damit Sie nicht nur das Bootmenü angezeigt bekommen, sondern auch ein System via PXE booten können, müssen Sie noch ein Bootimage hinterlegen. In diesem Abschnitt soll deshalb gezeigt werden, wie Sie die CentOS 5 Installations DVD's einbinden.

Erstellen Sie zuerst die Verzeichnisse /tftpboot/centos5/i386 und /tftpboot/centos5/x86_64.

[root@centos5 ~]# mkdir -p /tftpboot/centos5/i386 /tftpboot/centos5/x86_64

Mounten Sie anschließend die 32bit Installations DVD (hier wird das ISO-Image verwendet) und kopieren die Dateien initrd.img und vmlinuz in das Verzeichnis /tftpboot/centos5/i386.

[root@centos5 ~]# mount -o loop CentOS-5.4-i386-bin-DVD.iso /mnt
[root@centos5 ~]# cp /mnt/images/pxeboot/initrd.img  /mnt/images/pxeboot/vmlinuz /tftpboot/centos5/i386/
[root@centos5 ~]# umount /mnt

Wiederholen Sie diese Schritte für die 64bit Installations DVD.

[root@centos5 ~]# mount -o loop CentOS-5.4-x86_64-bin-DVD.iso /mnt
[root@centos5 ~]# cp /mnt/images/pxeboot/initrd.img  /mnt/images/pxeboot/vmlinuz /tftpboot/centos5/x86_64/
[root@centos5 ~]# umount /mnt

Damit haben Sie die benötigten Bootdateien hinterlegt. Allerdings können Sie bis jetzt nur die Installationsumgebung starten, zur Installation benötigen Sie auch eine Quelle mit den RPM-Paketen. Deshalb kopieren wir den gesamten Inhalt der Installations DVD's in die Verzeichnisse /var/ftp/pub/centos5/i386 und /var/ftp/pub/centos5/x86_64. Da sich diese Verzeichnisse im FTP-Rootpfad befinden, können Sie später über das FTP-Protokoll auf die RPM-Pakete zugreifen.

Zuerst erstellen Sie die beiden Verzeichnisse.

[root@centos5 ~]# mkdir -p /var/ftp/pub/centos5/i386 /var/ftp/pub/centos5/x86_64

Mounten Sie anschließend die DVD's beziehungsweise ISO-Image und kopieren den Inhalt in das jeweilige Verzeichnis.

[root@centos5 ~]# mount -o loop CentOS-5.4-i386-bin-DVD.iso /mnt
[root@centos5 ~]# cp -a /mnt/* /var/ftp/pub/centos5/i386/
[root@centos5 ~]# umount /mnt
[root@centos5 ~]# mount -o loop CentOS-5.4-x86_64-bin-DVD.iso /mnt
[root@centos5 ~]# cp -a /mnt/* /var/ftp/pub/centos5/x86_64/
[root@centos5 ~]# umount /mnt

7. TFTP-Daemon einrichten

Für einen PXE-Server wird ein TFTP-Daemon benötigt, welcher für die Datenübertragung beim Bootvorgang zuständig ist. Installieren Sie deshalb das Paket tftp-server aus den CentOS Repositories.

[root@centos5 ~]# yum install tftp-server

Nach der Installation müssen Sie den TFTP-Daemon in der Datei /etc/xinetd.d/tftp aktivieren.

[root@centos5 ~]# vi /etc/xinetd.d/tftp

Suchen Sie nun die folgende Zeile und ändern den Wert auf no.

disable = yes

Jetzt müssen Sie den xinetd neu starten.

[root@centos5 ~]# service xinetd restart

Sollten Sie den xinetd noch keinem Runlevel zugeordnet haben, holen Sie dies bitte nach.

[root@centos5 ~]# chkconfig --level 35 xinetd on

Anschließend müssen Sie noch den UDP-Port 69 in der Firewall freigeben. Dazu können Sie entweder das Firewall-Konfigurationstool system-config-securitylevel-tui verwenden, oder die Firewall-Regel direkt mit iptables erstellen.

[root@centos5 ~]# iptables -I INPUT -p udp -m state --state NEW -m udp --dport 69 -j ACCEPT

Wenn Sie die Firewall-Regel mit iptables erstellt haben, müssen Sie diese noch speichern.

[root@centos5 ~]# service iptables save

8. DHCP-Server konfigurieren

Da dem PXE-Client auch mitgeteilt werden muss unter welcher IP-Adresse der PXE-Server erreichbar ist und wo der Bootloader von PXELINUX liegt, müssen Sie nun die dhcpd.conf anpassen. Sollten Sie noch keinen DHCP-Server konfiguriert haben, lesen Sie bitte die Anleitung CentOS 5: DHCP-Server konfigurieren.

[root@centos5 ~]# vi /etc/dhcpd.conf

Fügen Sie nun die folgenden Zeilen in die dhcpd.conf ein. Mit der folgenden Option geben Sie die IP-Adresse des PXE-Servers an.

next-server 192.168.10.1;

Mit der Option filename wird der Bootloader angegeben. Da wir PXELINUX verwenden muss dieser Eintrag wie folgt aussehen.

filename "pxelinux.0";

Nachdem Sie die Konfigurationsdatei dhcpd.conf angepasst haben, müssen Sie den DHCP-Server neu starten.

[root@centos5 ~]# service dhcpd restart


Dieser Eintrag wurde am 07.03.2010 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_884.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer