PXE Boot und Kickstart
Contents
- 1 Skriptgeführte Installationen mit Linux
- 2 Bootmedium
- 3 Installationsquelle
- 4 Das Kickstart Konfigurations File
- 5 Den Installations Server konfigurieren
- 6 Die Konfiguration des Servers
- 7 NFS-Freigabe einrichten
- 8 Das Kickstart File erstellen
- 9 Booten von CD
- 10 Booten in der PXE Umgebung
- 11 DHCP-Server Konfiguration
- 12 Boot Prozess
- 13 NFS-Freigabe für die Kickstart Files erzeugen
- 14 Links
1 Skriptgeführte Installationen mit Linux
Seit sich Linux im professionellen IT-Umfeld Akzeptanz geschaffen hat, kommen ganz klar auch die Ansprüche an eine automatische Installation ohne Benutzereingriff.
Diese Installationsart wird vor allem in folgenden Gebieten benötigt: Hochverfügbarkeit
Im Falle einer kompromitierung des Systems oder eines unerwarteten Hardware Ausfalls. Hier soll das System innert kürzester Zeit neu installiert zur verfügung stehen. OEM-Installationen & Cluster
Um eine grössere Menge von Systemen aufzusetzen ist eine Skriptbasierte Lösung nicht mehr weg zu denken. =Die Voraussetzungen= (Red Hat Linux) Um eine Skriptgeführte Installation vorzunehmen muss man folgende Voraussetzungen erfüllen:
2 Bootmedium
Um ein Betriebssystem zu Installieren muss das System neu gestartet werden und damit der Datenträger dieses Systems neu Installiert werden kann, darf natürlich nicht von diesem Gebootet werden. Hier werden meisstens Floppy, CD, DVD oder PXE verwendet.
3 Installationsquelle
Hier kann zwischen lokalen Quellen (CD, DVD, Partition) und Netzwerk Freigaben (FTP, HTTP, NFS) gewählt werden. Wobei die Grafische Kickstart Installation nur via CD, DVD und NFS gestartet werden kann. Die übrigen Installtionsmethoden können im Text-Modus gestartet werden.
4 Das Kickstart Konfigurations File
Hier kommt die Steuerdatei zum tragen. Sie enthält im Mindesten die Informationen, welche wir bei der Installation manuell vornehmen würden.
5 Den Installations Server konfigurieren
Als erstes muss der Kickstart-Server mal installiert werden. Hierbei sind keine besonderen Vorkehrungen zu treffen. Aber nun trotzdem einige Punkte, welche die Installation erleichtern:
- Die Partition /var sollte genügend Platz für die Installationsmedien bieten
- Statische IP-Adressierung verwenden.
- NFS-Server installieren.
- Folgende Dienste/Packete sollten Installiert werden:
- nfs server
- tftp server
- dhcp server
- syslinux
6 Die Konfiguration des Servers
In den folgenden Beispielen zeigen wir eine mögliche Serverkonfiguration für einen Installationsserver. Bitte beachten Sie hier, dass Sie die unten genannten Pfade und Netzwerk Adressen gemäss Ihrer Installation vergeben. Die an der Konsole eingegebenen Befehle sind als root auszuführen. Das kopieren der Installationsmedien
mkdir -p /var/ftp/pub/rel4 chmod -R a+rx /var/ftp mount /media/cdrom cd /media/cdrom cp -auf . /var/ftp/pub/rel4 cd eject /media/cdrom mount /media/cdrom cd - cp -auf . /var/ftp/pub/rel4
7 NFS-Freigabe einrichten
echo '/var/ftp/pub 192.168.0.0/255.255.255.0(ro,sync)' >> /etc/exports chkconfig nfs on /etc/init.d/nfs restart
Prüfen, ob die NFS-Freigabe funktioniert
showmount -e 192.168.0.254 mkdir -p /mnt/ks-server mount 192.168.0.254:/var/ftp/pub /mnt/ks-server ll /mnt/ks-server
8 Das Kickstart File erstellen
Unter Red Hat nennt man die Installations Skripte, welche vom Anaconda Setup Installer eingelesen werden als Kickstart-Dateien bezeichnet. Dies sind einfache Text Dateien, welche ohne grosse Vorkenntnisse barbeitet werden können. Eine Ausführliche Erklärung dazu kann man auf der dokumentations CD finden. Ein für unsere Umgebung funktionierendes Bespiel finden Sie im Unten.
Man kann diese mit einem config Tool erstellen, welches die Menus des Anaconda Installers nachbildet. Nach erfolger definition der Installation speichert man diese dann einfach ab (z.B. auf Disketten) und verwendet diese beim Setup.
Ebenfalls liegt nach jeder Installation ein Kickstart-File unter: /root/anaconda-ks.cfg welches die aktuelle Installation beschreibt. In dieser Datei ist die Partitionierung auskommentiert. Das Setup würde hier bei der Partitionierung ganz einfach stehen bleiben und nachfragen, wie das Akutelle System partitioniert werden soll.
9 Booten von CD
Um nun eine Kickstart Installation anzustossen verwenden wir im einfachsten Fall eine CDROM. Zum booten geeignet sind die CD1 der Installations CDs oder das boot.iso, welches sich auf der CD1 im Verzeichnis images befindet.
Nach dem booten erscheint nun der boot: Prompt und erinnert uns, das wir eine Installation beginnen. Hier übergeben wir folgende Option:
boot: linux ks=floppy
Dies bewegt anaconda dazu auf einer eingelegten Diskette nach ks.cfg zu suchen. So können wir ganz leicht verschiedene Konfigurationen auf Diskette ablegen und verwalten.
Die Diskette sollte im Format ext2 oder msdos (fat) formatiert worden sein.
10 Booten in der PXE Umgebung
Um Installationen unabhängig von einem physikalischen Boot Medium durchzuführen kann PXE verwendet werden. In diesem Fall wird eine mini Linux Umgebung via TFTP in den Arbeitsspeicher geladen, welche danach die Linux Installation anstösst.
Eine saubere DNS Umgebung ist hier empfehlenswert, aber nicht zwingend. Wir werden hier eine schnell realisierbare Variante ohne DNS Server installieren.
11 DHCP-Server Konfiguration
Konfigurieren Sie /etc/dhcpd.conf gemäss dem Beispiel im Anhang1 Bitte Beachten Sie, dass die Subnets und Server Adressen angepasst werden.Um MAC-Adressen im Netzwerk einzusammeln können Sie wie folgt vorgehen:
ping -c 3 -b 192.168.0.255 && arp -a
Diese können dann nach Bedarf in dhcpd.conf eingetragen werden.
Danach wird der DHCP-Server aktiviert und geprüft:
chkconfig dhcpd on service dhcpd restart tail /var/log/messages
Wenn Sie am Kickstart Server mehrere Netzwerkkarten installiert haben, dann vergessen Sie nicht, das aktive Interface in /etc/sysconfig/dhcpd zu definieren. z.B. DHCPDARGS=eth0 PXE-Linux Umgebung einrichten
Die benötigten Daten bereitstellen:
cd /var/ftp/pub/rel4/images/pxeboot/ cp -auf * /tftpboot/ cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ mkdir /tftpboot/pxelinux.cfg
Und nun übergeben wir noch via PXE die geeigneten Parameter, welche zur installation benötigt werden.
vi /tftpboot/pxelinux.cfg/default
default linux label linux kernel vmlinuz # append has to be ONE SINGLE line (append ist the last line) append initrd=initrd.img root=/dev/ram3 ramdisk_size=32000 ks=nfs:192.168.0.254:/kickstart/workstation.cfg
12 Boot Prozess
Wenn der Client dann via PXE bootet, wie findet er dann die PXE Konfigurations Datei? Das ganze läuft wie folgt ab:
- Es wird versucht ein Konfigfile mit der MAC-Adresse des Client zu finden. z.B.: 00-90-F5-0D-0C-D2 oder 0090F50D0CD2
- Wird diese MAC abhängige Konfigurationsdatei nicht gefunden, so wird nach der von uns erstellten default Datei gesucht.
- Aus dieser Konfiguration und dem Sinn und Zweck von PXE ist es natürlich nicht sinnvoll das Kickstart-File via Diskette einzulesen! ;)
13 NFS-Freigabe für die Kickstart Files erzeugen
mkdir /kickstart echo '/kickstart 192.168.0.0/255.255.255.0(ro,sync)' >> /etc/exports /etc/init.d/nfs restart
Nun kopieren wir unser Kickstart File einfach nach /kickstart, wo es dan via PXE übergeben wird (/kickstart/workstation.cfg).
Um den Ablauf via PXE ein wenig zu entwirren schauen wir hier mal die Reihenfolge der Prozesse an:
- BIOS der Maschine initialisiert sich
- Gemäss Konfiguration wird via NIC gebootet
- PXE (pxelinux.0) sucht nun nach einer geeigneten Steuerdatei (default)
- Diese wird geladen, und entpackt gemäss unseren Angaben die Initial Ramdisk (initrd.img) in den Arbeitsspeicher (/dev/ram3)
- Nun wird der Kernel (vmlinuz) in die initrd geladen und der init Prozess stösst den Anaconda Installer an.
- Dieser sucht gemäss unseren Angaben das via NFS ausgelegte Kickstart-File
(ks=nfs:192.168.0.254:/kickstart/workstation.cfg).
- Im Kickstart-File ist sind alle zur Installation benötigten Angaben, die Installation beginnt.
Wird via CDROM gebootet, sieht der Ablauf wie folgt aus:
- BIOS der Maschine initialisiert sich
- Gemäss Konfiguration wird via CDROM gebootet
- Der Bootloader fragt uns nach der Art der Installation (linux ks=floppy)
- Die Initial Ramdisk wird von der CD (isolinux/initrd.img) in den Arbeitsspeicher entpackt.
- Der Kernel (isolinux/vmlinuz) wird in die initrd geladen und der init-Prozess stösst den anaconda-Installer an.
- Dieser sucht gemäss unseren angaben auf der Diskette nach der Kickstart-Datei (ks.cfg)
- Im Kickstart-File ist sind alle zur Installation benötigten Angaben, die Installation beginnt.
Anhang1 dhcpd.conf
ddns-update-style none; subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.254; option subnet-mask 255.255.255.0; option domain-name "littau.credo-systems.ch"; option domain-name-servers 192.168.0.254; default-lease-time 21600; max-lease-time 43200; range 192.168.0.1 192.168.0.199; # my dhcp, KS-Server & DNS-Server IP is: 192.168.0.254 # for cdrom booting (linux=ks) # filename "/kickstart/workstation.cfg"; next-server 192.168.0.254; # name of the pxe bootloader program filename "pxelinux.0"; host station2.littau.credo-systems.ch { hardware ethernet 00:C0:9F:4E:47:83; fixed-address 192.168.0.2; } host station1.littau.credo-systems.ch { hardware ethernet 00:C0:9F:4E:49:1B; fixed-address 192.168.0.1; } host station99.littau.credo-systems.ch { hardware ethernet 00:10:A4:E2:11:36; fixed-address 192.168.0.99; } }
Anhang2: workstation.cfg
install nfs –server=server1.littau.credo-systems.ch --dir=/var/ftp/pub/rel4 lang de_DE.UTF-8 langsupport --default=de_CH.UTF-8 de_CH.UTF-8 keyboard sg-latin1 xconfig --card "S3 ProSavage KM133" --resolution 1024x768 --depth 16 --startxonboot --defaultdesktop gnome network --device eth0 --bootproto dhcp # rootpw redhat rootpw --iscrypted $1$tivikuF3$.k22q.uMpAyhWcdy3gIoG/ #reboot #interactive firewall --disabled selinux --disabled authconfig --enableshadow --enablemd5 timezone Europe/Zurich bootloader --location=mbr --append="rhgb quiet" clearpart --all --drives=hda %packages @ admin-tools @ editors @ system-tools @ german-support @ text-internet @ gnome-desktop @ base-x @ web-server @ server-cfg @ graphical-internet kernel lvm2 grub e2fsprogs %pre %post chkconfig firstboot off useradd guest && echo guest | passwd guest --stdin
14 Links
How to Install Red Hat Linux via PXE and Kickstart
PXE Boot Server Installation - Mini Howto bzw. Kurzanleitung