Kickstart
Aus Fedorawiki.de
Die identische Installation von mehreren Systemen oder das Erzeugen einer gleichen Neuinstallieren eines bereits bestehenden Systems ist eine zeitintensive Angelegenheit. Mit Hilfe von Kickstart lässt sich dieser Prozess jedoch soweit automatisieren, dass man gerade noch beim Start anwesend sein muss. Im Extremfall liesse sich die Sache mit PXE auch gänzlich ohne Eingriff bewerkstelligen. Alle relevante Informationen sind in einer einzigen textbasierenden Steuerdatei zusammengefasst. Die Kickstart-Installation lässt sich mit allen angebotenen Installations-Methoden verwenden, jedoch ist sie nur bei Netzwerkinstallationen und DVD-Installationen "personalfrei", da ansonsten die CD-ROMs gewechselt werden müssen.
Kickstart-Datei
Wie bereits erwähnt ist die Kickstart-Datei eine Text-Datei, welche alle Informationen enthält. Die Reihenfolge ist entscheidend, sonst kommt es zu Fehlern. Zum bequemen Anpassen der Kickstart-Datei kann das GUI, system-config-kickstart, unter Anwendungen -> Systemwerkzeuge -> System -> Administration -> Kickstart verwendet werden. Falls es nicht installiert ist, lässt es sich mit yum installieren.
Aber wenn mit einer bestehenden Datei aus einer existierenden Fedora-Installation gearbeiten werden will, reicht auch ein Text-Editor. Kommentar-Zeilen beginnen mit einem Hash-Zeichen ("#") und werden bei der Ausführung ignoriert.
Allgemeine Einstellungen
Als erstes wird die Installations-Art definiert, es kann install oder upgrade sein. Die upgrade-Variante benötigt weniger Informationen, mehr dazu später. Das Passwort für root muss md5-crypted sein. Der Rest dieser Punkte sind selbsterklärend oder für den erfahrenern Anwender sicher nachvollziehbar.
install nfs --server=192.168.0.15 --dir=/data/fedora lang de_DE.UTF-8 keyboard sg-latin1 timezone Europe/Berlin rootpw --iscrypted $7$3wGCzzaQ$48/ALRtVx.nBowQC1KS5l.
X-Server-Einstellungen
Die Definition der Video-Einstellungen sollte eine erprobte Variante sein, sonst sitzt der Benutzer vor einem schwarzen Bildschirm.
xconfig --driver "ati" --videoram 4096 --resolution 800x600 --depth 16 --startxonboot monitor --hsync 30-121 --vsync 48-160
Netzwerk-Einstellungen
Hier wird mit statischer IP-Adresse gearbeitet. Die IP-Adresse, die Subnetz-Maske, der Gateway und auch der Name-Server müssen an die lokalen Gegebenheiten angepasst werden.
network --device eth0 --bootproto static --ip 192.168.0.91 --netmask 255.255.255.0 --gateway 192.168.0.11 --nameserver 192.168.0.11
Sicherheitseinstellungen
Die Firewall sollte im Normalfall auch in LANs eingeschaltet sein. Denn so ist die Sicherheit auch gewahrt, wenn sich ein Angreifer im lokalen Netz befindet. Der Einsatz von SELinux ist zu empfehlen, auch wenn es gewisse Einschränkungen in der Bedienungsfreundlichkeit des Systems mit sich bringt.
firewall --enabled --port=https:tcp --port=ssh:tcp authconfig --enableshadow --enablemd5 selinux --enforcing
--enableshadow sollte auch jeden Fall aktiviert werden.
Bootloader Partitionseinstellungen
Der Bootloader-Eintrag wird in diesem Fall in den Master-Boot-Record geschrieben.
bootloader --location=mbr --driveorder=sda,sdb,sdc,sdd
Wenn statt GRUB LiLO verwendet werden soll, kann dies mit der Option --useLilo gemacht werden.
| | Wichtig: Bei einer Neupartitionierung werden alle Daten auf der Harddisk gelöscht, deshalb ist es wichtig, dass vorgängig eine Datensicherung gemacht wird. |
Folgende Zeile löscht alle Partionen.
clearpart --all
So könnten die Partitionsinformationen aussehen, wenn ein Software-Raid gemacht werden soll und mit LVM gearbeitet wird. Beim ersten Mal sollte dieser Teil weggelassen werden und die Partitionierung der Harddisk von Hand gemacht werden.
part /boot --fstype ext3 --size=120 --ondisk=sda part swap --size=3330 --ondisk=sdc part /tmp --fstype ext3 --size=1000 --ondisk=sdc part pv.34 --size=100 --grow --ondisk=sda part raid.32 --size=100 --grow --ondisk=sdd part raid.31 --size=100 --grow --ondisk=sdb raid /backup --fstype ext3 --level=RAID0 --device=md0 raid.31 raid.32 volgroup VolGroup00 --pesize=32768 pv.34 logvol /var --fstype ext3 --name=LogVol02 --vgname=VolGroup00 --size=2496 logvol /usr --fstype ext3 --name=LogVol01 --vgname=VolGroup00 --size=6496 logvol /home --fstype ext3 --name=LogVol03 --vgname=VolGroup00 --size=24768 logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=800
Paketauswahl
Nach %packages stehen die zu installierenden Pakete. Dieser Auswahl wird bei der Akutalisierung nicht unterstützt. Da die gewünschten Gruppen und nicht die einzelnen Pakete angeben werden müssen, vereinfacht sich das Installieren von Paketen wesentlich. Standardmässig immer die Core- und Base-Gruppen ausgewählt werden, daher ist es nicht notwendig, dass sie im Abschnitt %packages angegeben werden. Die Datei ../repodata/comps.xml beinhaltet mehr Informationen zu den Gruppen.
Beispiel eines %packages-Bereich
%packages @admin-tools @base-x @editors @german-support @gnome-desktop @graphical-internet @printing @server-cfg @system-tools @text-internet comps-extras rmt tzdata
Wenn nicht alle Pakete aus einer Gruppe installiert werden sollen, kann nach der Gruppe das nicht zu installierende Paket mit einem vorangestellten Minus gekenntzeichnet werden
@Games and Entertainment -kdegames
nach der Installationsbereich
Im %post-Bereich können weitere Befehle angegeben werden, die nach der Installation ausgeführt werden. Die Möglichkeiten sind extrem vielfältig und auch leistungsfähig.
Einbauen von Meldungen
Wenn die Kickstart-Installation zum ersten Mal gestartet wird, kann es praktisch sein, wenn das System mitteilt, was es gerade macht. Solche Meldungen lassen sich wie folgt machen.
echo "Dienste werden aktiviert..."
Aktivieren und Deaktivieren von Diensten
Die Dienste lassen sich wie folgt aktivieren.
/sbin/chkconfig --level 345 httpd on /sbin/chkconfig --level 345 mysqld on
Deaktivieren
/sbin/chkconfig --level 345 telnet off /sbin/chkconfig --level 345 bluetooth off
Installation von weiteren Paketen
Wenn bekannt, dass spezielle Pakete benötigt werden, können diese ganz einfach angegeben und installiert werden.
rpm -ihv http://rpm.livna.org/livna-release-9.rpm
Konfiguration von Netzwerk-Einstellungen
Wenn alle Informationen per DHCP verteilt werden, kann es praktisch sein, wenn die Name-Server in /etc/resolve.conf.predhclient eingetragen sind.
cat > /etc/resolve.conf.predhclient <<EON search localdomain nameserver 192.168.0.18 nameserver 192.168.0.19 EON
Anpassen des System-Namens in /etc/hosts
cat >/etc/hosts <<EOFhosts 127.0.0.1 localhost.localdomain localhost EOFhosts
Versenden eines Mail beim Erreichen des Endes
Die Möglichkeiten zum Benachrichtigen sind eine praktische Funktion, wenn nicht alle Systeme mit der gleichen Hardware ausgestattet sind und es so zu unterschiedlich langer Installationsdauer kommen kann.
mail -s "System ist installiert, aktualisiert und bereit" root@server < /dev/null
Nachrichten für root umleiten
Meistens loggt sich root nur sehr selten auf Systemen ein, deshalb sollten die E-Mails an einen Benutzer weitergeleitet werden, der regelmässig die Nachrichten liest.
RESPONSIBLE='user@localhost'
echo "\${RESPONSIBLE}" > /root/.forward
Root-Zugang per ssh mit Public Key
Diese Option ist eher für fortgeschrittene Anwender gedacht. Der passwortlose SSH-Zugang ist eine einfache Möglichkeit Angriffe auf den root-Account zu verunmöglichen.
mkdir /root/.ssh echo "Publix-Key root@localhost" > /root/.ssh/authorized_keys
Einen neuen Benutzer hinzufügen
Das Passwort muss md5-crypted sein, welches zum Account hinzugefügt wird.
/usr/sbin/useradd hugo /usr/bin/chfn -f "Hugo Meier" hugo /usr/sbin/usermod -p 'f8d90g0r/ ' hugo
Kopieren von yum.repo-Files
Es ist praktisch, wenn man nach der Installation direkt ein Update durchführt, da diverse Pakete nicht mehr aktuell sind. Diese Aktion ist mit dem Servern, welche in dem Files unter /etc/yum.repos.d/ eingetragen sind, etwas langsam und benötigt viel Bandbreite. Einfacher ist es ein lokales Repository zu benutzen und die Konfigurations-Dateien entsprechend anzupassen. Die Dateien müssen aber vor der Verwendung von yum nach /etc/yum.repos.d/ kopiert werden, ebenso müssen gegebenenfalls die GPG-Keys importiert werden, speziell bei anderen Repositories als Fedora Core und Fedora Extra um Fehler zu verhindern. In diesem Beispiel sind die Dateien auf dem NFS-Server, der auch für die Installation benötigt wurde.
mkdir /mnt/temp mount 192.168.0.15:/core5/data/yum-conf /mnt/temp cp /mnt/temp/*.repo /etc/yum.repos.d/ rpm -ihv rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* yum -y update umount /mnt/temp
Log auf ttyX
Mit folgendem Eintrag kann ein Log-File erzeugt werden, dass während des %post-Bereiches auf einer anderen Konsole ausgegeben wird.
exec >/tmp/ks_post_install.log 2>&1 tail -f /tmp/ks_post_install.log >/dev/tty6 &
Zeit-Abgleich
Oftmals hat die System-Uhr nicht die gleiche Zeit wie das Handy und das Handy nicht wie die Küchen-Uhr. Die System-Uhr sollte jedoch genau sein und als Referenz dienen.
/sbin/chkconfig --level 345 ntpd on cat >> /etc/ntp.conf << EOF server 129.132.2.21 EOF
Als Zeit-Server wurde hier ein Server der ETH in der Schweiz angegeben, dies sollte an den eigenen Standort angepasst werden.
Ausführen einer Kickstart-Installation
Die Übersicht aller Boot-Optionen stellt unter Kickstart ein Zusammenfassung der möglichen Start-Optionen zusammen.
Nach dem Booten des Installationsmedium muss in der Kommandozeile der Befehl zum Laden der Kickstart-Dateien gegeben werden. Bei der Verwendung eines NFS-Server würde der Befehl so lauten
ks=nfs:192.168.0.15:/core6/data/kickstart/ks.cfg
Sind alle Einstellungen korrekt in der Kickstart-Datei, läuft die Installation durch und am Ende hat man ein einsatzbereites System. Sind Einstellungen nicht definiert oder falsch, wartet das System auf eine Eingabe. Für das Installieren einer grösseren Umgebung sollte vor dem Einsatz auf produktiven Systemen ein Testlauf gemacht werden. Die Kickstart-Installation lässt sich auch mit anderen Boot-Optionen kombinieren, wie zum Beispiel vnc.
Upgrade anstelle einer Neuinstallation
Wenn upgrade verwendet wird, brauchen die Pakete nicht mehr angegeben zu werden, falls doch ein %packages-Bereich vorhanden ist, wird dieser ignoriert. Folgende Punkte sind erforderlich.
- Sprache
- Sprach-Support
- Installationsart
- Geräteangabe (wenn das Gerät zum Durchführen der Installation erforderlich ist)
- Tastaturkonfiguration
- Bootloaderkonfiguration

