Good to Know Database

CentOS 6: PXE-Server mit graphischem Bootmenü


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.

SYSLINUX installieren

SYSLINUX installieren Sie einfach durch den folgenden Befehl.

[root@centos6 ~]# yum install syslinux

PXELINUX einrichten

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

[root@centos6 ~]# 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@centos6 ~]# 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@centos6 ~]# 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 centos6_i386
  menu label CentOS 6.0 i386
  kernel /centos6/i386/vmlinuz
  append initrd=/centos6/i386/initrd.img devfs=nomount ramdisk_size=9216

label centos6_x86_64
  menu label CentOS 6.0 x86_64
  kernel /centos6/x86_64/vmlinuz
  append initrd=/centos6/x86_64/initrd.img devfs=nomount ramdisk_size=9216

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

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.

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@centos6 ~]# sha1pass password
$4$5PYldEns$VQ734WkU1NgaQ3LpjbHcxVjPq8c$

Bootimage hinterlegen

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

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

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

Anschließend laden Sie sich die benötigten PXE-Bootdateien von einem CentOS 6 Mirror herunter.

[root@centos6 ~]# rsync -av rsync.hrz.tu-chemnitz.de::ftp/pub/linux/centos/6/os/i386/images/pxeboot/ /tftpboot/centos6/i386/
[root@centos6 ~]# rsync -av rsync.hrz.tu-chemnitz.de::ftp/pub/linux/centos/6/os/x86_64/images/pxeboot/ /tftpboot/centos6/x86_64/

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. Dazu können Sie entweder die Installations-DVDs auf den Server kopieren oder einen lokalen CentOS 6 Mirror erstellen und dann den Zugriff über FTP, HTTP oder NFS einrichten.

SELinux konfigurieren

Bei CentOS 6 ist standardmäßig SELinux (Security Enhanced Linux) aktiviert und läuft im Enforcing Modus. Falls Sie SELinux nicht deaktivert haben (siehe SELinux: SELinux deaktivieren) oder im Permissive Modus betreiben (siehe SELinux: SELinux-Betriebsmodus ändern), müssen Sie den Security Context für das Verzeichnis /tftpboot anlegen.

Damit Sie einen neuen Security Context erstellen können, benötigen Sie das Programm semanage. Dieses befindet sich im Paket policycoreutils-python und kann wie folgt installiert werden.

[root@centos6 ~]# yum install policycoreutils-python

Erstellen Sie jetzt einen neuen Security Context für das Verzeichnis /tftpboot. Dieser wird von semanage in der Datei /etc/selinux/targeted/contexts/files/file_contexts.local abgelegt.

[root@centos6 ~]# semanage fcontext -a -t tftpdir_rw_t '/tftpboot(/.*)?'

Anschließend versehen Sie das Verzeichnis /tftpboot und dessen Inhalt mit dem neuen Security Context.

[root@centos6 ~]# restorecon -R -v /tftpboot

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@centos6 ~]# yum install tftp-server

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

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

Suchen Sie nun die Option disable und ändern den Wert auf no.

disable                 = no

Durch die Option server_args wird das Root-Verzeichnis für den TFTP-Server angegeben. Wie Sie sehen, wird standardmäßig das Verzeichnis /var/lib/tftpboot verwendet.

server_args             = -s /var/lib/tftpboot

Damit das Verzeichnis /tftpboot als Root-Verzeichnis für den TFTP-Server genutzt wird, müssen Sie die Option wie folgt anpassen.

server_args             = -s /tftpboot

Nachdem Sie die Änderungen an der /etc/xinetd.d/tftp vorgenommen haben, müssen Sie den xinetd starten beziehungsweise neu starten wenn dieser bereits im Hintergrund läuft.

[root@centos6 ~]# service xinetd restart

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

[root@centos6 ~]# chkconfig xinetd on

Anschließend müssen Sie noch den UDP-Port 69 in der Firewall freigeben. Dazu erstellen Sie die Firewall-Regel direkt mit dem Befehl iptables.

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

Speichern Sie anschließend die erstellte Firewall-Regel mit dem folgenden Befehl dauerhaft in die /etc/sysconfig/iptables.

[root@centos6 ~]# service iptables save

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 /etc/dhcp/dhcpd.conf anpassen. Sollten Sie noch keinen DHCP-Server konfiguriert haben, lesen Sie bitte die Anleitung CentOS 6: DHCP-Server konfigurieren.

[root@centos6 ~]# vi /etc/dhcp/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@centos6 ~]# service dhcpd restart


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

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

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer