Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:pxe:pxe_1 [27.11.2011 19:37. ] – [Clienttest] djangocentos:pxe:pxe_1 [22.07.2019 15:00. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== PXE-Server unter CentOS 6.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 mun 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
 +
 +Als nächstes erstellen wir uns noch einen Odrner, 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 5.7 - i386**
 +  * **CentOS 6.0 - i386**
 +  * **CentOS 6.0 - x86_64**
 +
 +  - <code># mkdir /var/lib/tftpboot/images/centos/5.7/i386 -p </code>
 +  - <code># mkdir /var/lib/tftpboot/images/centos/6.0/i386 -p </code>
 +  - <code># mkdir /var/lib/tftpboot/images/centos/6.0/x86_64 -p </code>
 +
 +Als abschließenden Punkt werden wir nun in die gerade angelegten und entsprechenden Verzeichnisse jeweils das zugehörige **initrd.img** und **vmlinuz** aus dem Repository laden.
 +  - <code># cd /var/lib/tftpboot/images/centos/5.7/i386 </code> <code># wget http://repository.nausch.org/centos/5.7/os/i386/images/pxeboot/initrd.img </code> <code># wget http://repository.nausch.org/centos/5.7/os/i386/images/pxeboot/vmlinuz </code>
 +  - <code># cd /var/lib/tftpboot/images/centos/6.0/i386/ </code> <code># wget http://repository.nausch.org/centos/6.0/os/i386/images/pxeboot/initrd.img </code> <code># wget http://repository.nausch.org/centos/6.0/os/i386/images/pxeboot/vmlinuz </code>
 +  - <code># cd /var/lib/tftpboot/images/centos/6.0/x86_64/ </code> <code># wget http://repository.nausch.org/centos/6.0/os/x86_64/images/pxeboot/initrd.img </code> <code># wget http://repository.nausch.org/centos/6.0/os/x86_64i386/images/pxeboot/vmlinuz </code>
 +
 +==== einfaches Bootmenü erstellen ====
 +Für die Auswahl der unterschiedlichen Systeme, die wir später installieren wollen, benötigen wir noch ein passendes Bootmenü. Dieses Menü 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
 +<file bash /var/lib/tftpboot/pxelinux.cfg/default>
 +# Django 2011-11-24
 +# 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 6.0 (64 Bit)
 +   KERNEL images/centos/6.0/x86_64/vmlinuz
 +   APPEND initrd=images/centos/6.0/x86_64/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.50/centos/6.0/os/x64_86
 +
 +LABEL 3
 +   MENU LABEL ^3) Installation von CentOS 6.0 (32 Bit)
 +   KERNEL images/centos/6.0/i386/vmlinuz
 +   APPEND initrd=images/centos/6.0/i386/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.50/centos/6.0/os/i386
 +
 +LABEL 4
 +   MENU LABEL ^4) Installation von CentOS 5.7 (32 Bit)
 +   KERNEL images/centos/5.7/i386/vmlinuz
 +   APPEND initrd=images/centos/5.7/i386/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.50/centos/5.7/os/i386
 +</file>
 +
 +==== DHCP-Server anpassen ====
 +Damit der TFTP-Server vom [[centos:dhcp_c6|DHCP-Server]] im Netz bei den Clientanfragen veröffentlicht werden kann, müssen wir unseren bestehenden [[centos:dhcp_c6#konfiguration|DHCP-Server]] noch entsprechend erweitern. Hierzu verwenden wir wie immer unseren Lieblingseditor **vim**.
 +
 +   # vim /etc/dhcp/dhcpd.conf
 +
 +Folgende Zeilen tragen wir nach:
 +<code>
 +        # 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.50;
 +        # Django : 2011-11-22 Dateinamen auf intitiale Boot-Datei setzen
 +        filename "pxelinux.0";
 +</code>
 +Somit ergibt sich eine vorläufige Gesamtkonfigurationsdatei unseres DHCP-Servers.
 +<file bash /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.50;
 +        # Django : 2011-11-22 Dateinamen auf intitiale 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;
 +  }
 +</file>
 +Zur Aktivierung unserer Konfigurationsänderungen starten wir unseren DHCP-Server nun einmal durch.
 +   # service dhcpd restart
 +
 +   Shutting down dhcpd:                                        OK  ]
 +   Starting dhcpd:                                            [  OK  ]
 +
 +==== Paketfilter anpassen ====
 +Damit unser PXE-Boot-Server die BootTP aus dem Netz be- und verarbeiten kann, werden wir nun den Paketfilter noch erweitern und anpassen.
 +
 +Als erstes überprüfen wir unsere aktuelle iptables-Regeln.
 +   # iptables -L
 +<code>Chain INPUT (policy ACCEPT)
 +target     prot opt source               destination         
 +ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
 +ACCEPT     icmp --  anywhere             anywhere            
 +ACCEPT     all  --  anywhere             anywhere            
 +ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
 +ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http 
 +ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:tftp
 +REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
 +
 +Chain FORWARD (policy ACCEPT)
 +target     prot opt source               destination         
 +REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
 +
 +Chain OUTPUT (policy ACCEPT)
 +target     prot opt source               destination
 +</code>
 +Die Konfigurationsdatei unseres Paketfilters passen wir nun wie folgt an.
 +   # vim /etc/sysconfig/iptables
 +<file bash /etc/sysconfig/iptables>
 +# Firewall configuration written by system-config-firewall
 +# Manual customization of this file is not recommended.
 +*filter
 +:INPUT ACCEPT [0:0]
 +:FORWARD ACCEPT [0:0]
 +:OUTPUT ACCEPT [0:0]
 +-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 +-A INPUT -p icmp -j ACCEPT
 +-A INPUT -i lo -j ACCEPT
 +-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 +# Django : 2011-11-16 htpp für Apache Webserver freigeschaltet
 +-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
 +#
 +# Django : 2011-11-16 Freischalten des TFTP-servers
 +-A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT
 +#
 +# Django : 2011-11-22 BootTP Server und Client freigeschaltet
 +-A INPUT -m state --state NEW -m udp -p udp --dport 67 -j ACCEPT
 +-A INPUT -m state --state NEW -m udp -p udp --dport 68 -j ACCEPT
 +#
 +-A INPUT -j REJECT --reject-with icmp-host-prohibited
 +-A FORWARD -j REJECT --reject-with icmp-host-prohibited
 +COMMIT
 +</file>
 +Anschließend starten wir den Paketfilter 1x durch.
 +   # service iptables restart
 +<code>
 +iptables: Flushing firewall rules:                          OK  ]
 +iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
 +iptables: Unloading modules:                                OK  ]
 +iptables: Applying firewall rules:                          OK  ]
 +iptables: Loading additional modules: ip_conntrack_tftp ip_[  OK  ] 
 +</code>
 +Überprüfen wir anschließend unseren Paketfilter, werden unsere neuen Regeln entsprechend angezeigt.
 +   # iptables -L
 +<code>
 +Chain INPUT (policy ACCEPT)
 +target     prot opt source               destination         
 +ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
 +ACCEPT     icmp --  anywhere             anywhere            
 +ACCEPT     all  --  anywhere             anywhere            
 +ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
 +ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http 
 +ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:tftp 
 +ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:bootps 
 +ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:bootpc 
 +LOG        all  --  anywhere             anywhere            LOG level warning 
 +REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
 +
 +Chain FORWARD (policy ACCEPT)
 +target     prot opt source               destination         
 +REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
 +
 +Chain OUTPUT (policy ACCEPT)
 +target     prot opt source               destination
 +</code>
 +
 +==== Clienttest ====
 +Starten wir nun einen neuen vHOST dann wird uns ein entsprechends Bootmenü angezeigt.
 +
 +{{ :centos:pxe:pxe_bootscreen_textmode.png?600 |Bildschirmhardcopy des Bootmenüs}}
 +
 +Zur Versorgung unserer Maschinen reicht dies natürlich, die Optik ist natürlich nicht gerade umwerfend.
 +
 +===== erweiterte Konfiguration =====
 +==== graphisches Bootmenü erstellen ====
 +Wie bei der [[centos:pxe:pxe_1#clienttest|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
 +
 +<file bash /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
 +
 +# 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 6.0 (64 Bit)
 +   KERNEL images/centos/6.0/x86_64/vmlinuz
 +   APPEND initrd=images/centos/6.0/x86_64/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.50/centos/6.0/os/x64_86
 +
 +LABEL 2
 +   MENU LABEL ^3) Installation von CentOS 6.0 (32 Bit)
 +   KERNEL images/centos/6.0/i386/vmlinuz
 +   APPEND initrd=images/centos/6.0/i386/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.50/centos/6.0/os/i386
 +
 +LABEL 2
 +   MENU LABEL ^4) Installation von CentOS 5.7 (32 Bit)
 +   KERNEL images/centos/5.7/i386/vmlinuz
 +   APPEND initrd=images/centos/5.7/i386/initrd.img ramdisk_size=128000 ip=dhcp method=http://10.0.0.50/centos/5.7/os/i386
 +</file>
 +
 +Als Graphik verwenden wir eine passende selbstgemachte Graphik mit den Abmessungen **640 x 480** und speichern diese im Format **PNG** ab.
 +
 +==== Clienttest ====
 +Starten wir nun erneut einen neuen vHOST, dann wird uns ein entsprechends Bootmenü angezeigt.
 +
 +{{ :centos:pxe:pxe_bootscreen_grafikmode.png?666 |Bildschirmhardcopy des Bootmenüs}}
 +
 +Im Vergleich zur reinen Textvariante sieht dies schon wesentlich ansprechender und für das Einsatzgebiet individueller aus.
 +
 +==== automatische Installation ====
 +Einen weiteren Schritt zur Komfortablen und automatisierten Installation werden wir mit Hilfe einer Kickstartdatei vornehmen. Wie dies geht, ist im Kapitel [[centos:pxe:pxe_2|PXE-Server unter CentOS 6.x optimieren (Kickstartfile)]] beschrieben.
 +====== Links ======
 +  * **[[centos:pxe:start|Zurück zum Kapitel >>PXE-Boot-Server unter CentOS 6.x einrichten<<]]**
 +  * **[[wiki:start|Zurück zu Projekte und Themenkapitel]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
 +