PXE-Server unter CentOS 6.x optimieren
Installationsscript für CentOS Installation
Für die weitgehende Automatisierung der Installation unserer Rechner greifen wir auf ein Installationsscript zurück, welches uns entsprechend unterstützen wird. Diese Datei enthält Angaben zu den einzelnen Installationschritten, die wir bei einer manuellen Installation immer angeben oder anklicken müssten. Im Wesentlichen sind dies Angaben zu:
- Systemsprache
- Tastaturlayout
- Netzwerdefinitionen
- Installationsquelle
- Zeitzone
- Paketauswahl
- u.s.w.
Dateierstellung mit Hilfe eines GUI
Eine Variante zur Erstellung eines Installationsscriptes kann die Verwendung der GUI system-config-kickstart sein. Falls noch nicht geschehen, installieren wir das RPM-Paket mittels yum.
# yum install system-config-kickstart -y
Die GUI starten wir mit Hilfe folgenden Aufrufes.
# system-config-kickstart
manuelle Bearbeitung
Die Konfigurationsdatei für die automatisierte Installation können wir natürlich auch selbst erstellen, oder eine vorhandene Datei weiter bearbeiten. Bei der Installation eines unserer Linux-/CentOS-Host wird im Verzeichnis /root/ jeweils eine Datei mit den ausgewählten Optionen abgelegt. Die Datei hat dabei den Namen /root/anaconda-ks.cfg.
Damit nun unsere Installationen künftig weitgehend ablaufen können, werden wir auf ein kickstart-file erstellen und dies später von unserem Webserver, der auch die Auslieferung der Installations-RPMs vornimmt, ausliefern lassen.
Wir werden also erst einmal im Document-Root ein Verzeichnis für die Kickstart-Dateien anlegen, in dem wir später die Dateien anlegen werden.
# mkdir kickstart
Anschließen kopieren wir die vorhanden Kickstart-Datei in das Zielverzeichnis.
# cp /root/anaconda-ks.cfg /data/kickstart/ks_centos60_i386_intra_desktop.cfg
Anschließend bearbeiten wir unsere Konfigurationsdatei und vermerken bei Bedarf Hinweise zu den einzelnen Optionen. Eine ausführliche Beschreibung der einzelnen Optionen finden wir im Red Hat Installation Guide.
# vim /data/kickstart/ks_centos60_i386_intra_desktop.cfg
- /data/kickstart/ks_centos60_i386_intra_desktop.cfg
# Django 2011-11-25 Kickstart-Datei zum automatischen Betanken von Desktop-Intranetmaschinen # System neu installieren install # Systemsprache setzen lang en_US.UTF-8 # Tastaturlayout definieren keyboard de-latin1-nodeadkeys # Definition der Netzwerkeinstellungen network --bootproto=dhcp --device=eth0 --onboot=on # Netzwerkinstallation aus dem eigenen Repository url --url="http://10.0.0.50/centos/6.0/os/i386" # Zeitzone setzen timezone --utc Europe/Berlin # Root-Passwort verschlüsset vorgeben rootpw --iscrypted $6$uFS6SBvSfgaF8L9Z$etsPXUqN1cKuNdBuR$cH1cK$1nD2V0lLD3Pp3Nb3cSUoMDkhaG8AKBzJMdjbgOPnXykKcYMWPfsmAqIPkLvwX7oulNpvQSIaO8/ # Firewall aktivieren und SH freigeben firewall --service=ssh # SELinux deaktivieren selinux --disabled # Authentifizierungsoptionen für das System definieren authconfig --enableshadow --passalgo=sha512 --enablefingerprint # Konfiguration des X Window System überspringen, da Minimalinstallation # skipx # Reboot nach der Installation ausführen # reboot # Konfiguration des System Bootloaders bootloader --location=mbr --driveorder=vda --append="crashkernel=auto quiet" --md5pass=$1$ECJKwraI$F1cKD1cHS3lbSTbUCDFSSXxRf0 # Paketauswahl definieren (Minimalinstallation mit zusätzlichen Paketen) %packages @base @core @debugging @basic-desktop @desktop-debugging @desktop-platform @directory-client @fonts @input-methods @internet-browser @java-platform @legacy-x @network-file-system-client @print-client @remote-desktop-clients @server-platform @server-policy @x11 mtools pax oddjob sgpio abrt-gui certmonger pam_krb5 krb5-workstation nscd pam_ldap nss-pam-ldapd libXmu vim mc bind-utils openssh-clients wget telnet logwatch # Postinstall-Anweisungen %post # default-user anlegen groupadd -g 500 django && useradd django -c "Django" -g 500 -u 500 -m # linuxcounter Verzeichnis anlegen und script downloaden mkdir -p /home/django/bin chown django:django /home/django/bin cd /home/django/bin wget -N --no-cache http://linuxcounter.net/script/lico-update.sh chmod +x /home/django/bin/lico-update.sh
Bei der oben genannten Beispiels-Installation geben wir unter anderem folgende Einstellungen vor:
- Systemsprache : Englisch
- Tastaturlayout : deutsch
- Netzwerk : automatisch per DHCP definiert
- Installationsquelle : Unser eigener Repository-Server (http://10.0.0.50/centos/6.0/os/i386)
- Zeitzone : Europe/Berlin
- Root-Passwort : verschlüsselt hinterlegt
- Firewall : aktiviert und ssh freigegeben
- SELinux : deaktiviert
- Bootloader : grub mit Passwortschutz
- Paketauswahl : Minimal desktop
Nach der Installation legen wir noch den User django an und holen uns das aktuelle Script zum Updaten des Linux-Counters auf den Clientrechner.
Damit nun beim Laden der Menüdatei bei PXE-Boot das richtige Kickstartfile geladen werden kann, erweitern wir nun die Menü-datei unseres PXE-Bootservers.
# vim /var/lib/tftpboot/pxelinux.cfg/default
Dort tragen wir beim betreffenden LABEL die Option ks ein.
LABEL 5 MENU LABEL ^5) CentOS 6.0 (32 Bit) Desktop-Installation (Intranet) KERNEL images/centos/6.0/i386/vmlinuz APPEND ks=http://10.0.0.50/kickstart/ks_centos60_i386_intra_desktop.cfg initrd=images/centos/6.0/i386/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp method=http://10.0.0.50/centos/6.0/os/i386
Anschließend starten wir einen unserer Clients im Netz und überprüfen, ob all unsere Optionen richtig gesetzt wurden.