Linux auf vielen Rechnern manuell installieren ist für jeden Administrator ein Graus. Zum Glück gibt es mit FAI ein Werkzeug, das diese monotone, zeitraubende und fehleranfällige Arbeit zumindest für Debian-Systeme automatisiert.
Vielfalt und Reichtum sind eigentlich nützliche Eigenschaften. Für die Fakultät Elektronik und Informatik der Hochschule für Technik und Wirtschaft Aalen [1] bedeuten sie jedoch erst einmal viel Arbeit. Denn sie betreibt in ihren Pools und Laboren rund 200 Linux-Systeme auf Basis von Debian [2]. Das ist aufwändig und zeitintensiv.
Das an der Universität zu Köln entwickelte Framework Fully Automatic Installation (FAI) erleichtert den Aalener Admins künftig die zeitaufwändige Wartung, da es die verteilte Neuinstallation von Systemen übernimmt. Die neue Version 3.2.9 [3] unterstützt auch Debian Lenny und bringt ein neues Partitionierungswerkzeug mit. Für neue Admins eine gute Gelegenheit, um sich mit den neuen Features auseinanderzusetzen, für erfahrene, um ihre Installation auf den neusten Stand zu bringen.
FAI automatisiert den Installationsprozess, indem es versucht die typischen Schritte einer Debian-Installtion zu automatisieren (siehe Abbildung 1). Die FAI-Clients mit PXE-Netzwerkkarten installieren sich daher über das Netzwerk. Das PXE fragt per DHCP nach einer IP und der Adresse eines TFTP-Servers.

Abbildung 1: Die Fully Automated Installation (FAI) durchläuft mehrere Phasen, um auf einem Client ein vollwertiges Debian aufzuspielen. Dabei orientiert es sich an den Schritten einer manuellen Installation.
Installation ferngesteuert
FAI arbeitet auch mit älteren Rechnern ohne PXE. In diesem Fall startet der Administrator das Einrichten händisch durch ein Bootimage auf Floppy, CD-ROM oder USB-Stick. Mit oder ohne PXE holt sich die Startroutine einen bootfähigen Kernel. Nach dessen Start kontaktiert der Client den FAI-Server und bindet dessen Wurzel- und das Konfigurationsverzeichnis via NFS ein. Diese enthalten alle notwendigen Informationen, um den Client zu installieren.
Ein Init-Skript startet die lokale Installation. Es ermittelt anhand des Hostnamens und der gemounteten Konfigurationsdaten so genannte Installationsklassen. Jede enthält eine Liste von Paketen sowie Konfigurationsdateien und Skripte zum Setup. Der Installtionsprozess partitioniert die Festplatte des Clients und lädt die vorgegebenen Pakete von einem Debian-Mirror herunter und spielt sie über den Apt-Mechanismus ein. Schließlich passt er den Client individuell nach Vorgaben des FAI-Servers an.
Server aufsetzen
Bevor also Admins ihre Clients installieren dürfen, steht das Aufsetzen eines FAI-Servers an, der aus mehreren Komponenten besteht. Abbildung 2 illustriert diese Schritte. Als Erstes gilt es, den Serverdienst aufzusetzen, der die Konfigurationen verteilt. Der Admin benötigt dazu einen Debian-Rechner und rüstet ihn mit NFS, TFTP und DHCP aus. Zusätzlich sind die FAI-Pakete »fai-server«, »fai-doc«, »fai-quickstart« und »fai-nfsroot« empfohlen. Sie sind über die normalen Debian-Repositories erhältlich. Das Paket »fai-client« braucht später nur der Client.

Abbildung 2: Eine FAI-Installation will gut geplant sein. Das Diagramm leitet den Administrator durch die vier Vorbereitungsphasen. Gerade die Planung entscheidet mit über den Erfolg.
Eine FAI-Installation besteht nicht nur aus technischen Konfigurationen, sondern auch aus planerischen Prozess-Schritten. Daher überlegt der Admin als Nächstes, welche Hardware und welche Software er auf welchem Client benötigt. Dazu nimmt der er den Bestand an Hardware auf und gruppiert Rechner mit baugleicher oder ähnlicher Ausstattung. Die Auswahl der Software hängt vom Einsatzgebiet des Rechners ab. Ganz nach Debian-Art stellt der Systemverwalter dazu Listen von DEB-Paketen zusammen.
Steht der Computer beispielsweise in einem Informatik-Pool, ist ein umfangreiches Software-Angebot wünschenswert, angefangen von Office-Anwendungen über verschiedene Windowmanager und Entwicklungsumgebungen. Auch die Hardware beeinflusst die Paketauswahl. So ergibt die Installation von Brennprogrammen wie etwa K3B nur dann einen Sinn, wenn der betreffende Rechner einen CD- oder DVD-Brenner besitzt.
Im dritten Schritt widmet sich der Systemverwalter der praktischen Konfiguration der Rechnergruppen, die sich an seinen Planungen orientiert. Weiterhin gibt er vor, wie FAI das Netz einrichtet und die Festplatte aufteilt. Details erklärt der Kasten “Verbesserte Partitionierung”. Als Letztes trägt er definierte Paketklassen in Konfigurationsdateien ein und legt so fest, welche Debian-Pakete und Shellskripte für eine Gruppe von Rechnern gelten.
|
Verbesserte |
|---|
|
Frühere FAI-Versionen partitionierten die Festplatten des Clients mit dem Skript »setup-harddisks«. Das Tool arbeitet mit normalen Festplatten, verweigert aber bei Raid-Systemen seinen Dienst und unterstützt keinen Logical Volume Manager (LVM2). Ab der Version 3.2.8 liefert FAI das Tool »setup-storage« als Alternative zu »setup_harddisks« mit. Das neue Werkzeug behebt die beiden Defizite. Findet FAI die Zeile »USE_SETUP_STORAGE=1« in einer Konfigurationsklasse, verwendet es »setup-storage« statt »setup_harddisks«, um die Festplatten zu partitionieren. Leider ist das neue Tool nicht abwärtskompatibel zu seinem Vorgänger, da es für seine Konfigurationsdateien eine andere Syntax vorgibt. Automatisiert aufteilenListing 6 ist ein Konfigurationsbeispiel für »setup-storage«. Es partitioniert die erste Festplatte eines Dualboot-Systems, wobei die erste Partition Windows XP enthält. Jede Zeile des Skripts enthält einen Befehl mit zugehörigen Optionen. Der Befehl »disk_config« legt globale Einstellungen zur Partitionierung der gesamten Festplatte fest. Die Option »disk 1« wählt die erste Festplatte aus. Handelt es sich um eine IDE-Festplatte, verwendet »setup-storage« intern die Partitionsbezeichner »hda«, bei SATA- oder SCSI-Festplatten entsprechend die Bezeichner »sda«. Die Option »preserve_always:1« bestimmt, die erste primäre Partition nicht zu verändern und somit das installierte Windows zu erhalten. Alle anderen Partitionen löscht »setup-storage«. Die Option »bootable:2« aktiviert die zweite Partition als Bootpartition. Mit den Befehlen »primary« und »logical« legt »setup-storage« eine primäre beziehungsweise logische Partition an. Die Nummerierung der Partitionen ergibt sich aus der Reihenfolge der in der Datei eingetragenen Befehle. In Listing 6 erzeugt der Eintrag »setup-storage« in der Zeile 2 mit Hilfe des »primary«-Befehls die Partition »sda2« mit einer Größe von 200 MByte. Die Partition erhält ein Ext-2-Dateisystem und den Mountpoint »/boot«. Der erste »logical«-Befehl in Zeile 3 erzeugt in der ersten logischen Partition »sda5« ein Swap-Dateisystem mit 4000 MByte Größe. Es folgen die logischen Partitionen »sda6« und »sda7« für »/tmp« beziehungsweise »/var«. Der letzte Befehl erzeugt die Partition »sda8«. Der Parameter »3000-« weist das Programm an, den restlichen Plattenplatz, jedoch mindestens 3000 MByte, für die Partition zu nutzen. Ist nicht hinreichend Platz vorhanden, bricht die Installation mit einer Fehlermeldung ab. Die Partitionsnamen findet FAI übrigens selbst heraus, der Systemverwalter braucht nur festzulegen, ob er primäre oder logische Partitionen wünscht. Ausfallsicher dank Mirroring mit Raid 1Listing 7 ist ein Beispiel für Partitionierung eines Raid 1 mit zwei SCSI-Festplatten. Zuerst partitioniert »setup-storage« die Festplatten »sda« und »sdb« auf identische Weise, wobei das Tool weder Dateisysteme noch Mountpoints zuweist. Anhand der Befehle des Blocks »disk_config raid« baut »setup-storage« ein Raid-System mit drei Partitionen auf und formatiert die Partitionen gemäß den Vorgaben. Das Tool »setup-storage« ist ein mächtiges Werkzeug, dessen Funktionsumfang weit über die Möglichkeiten von »setup_harddisks« hinausgeht. Die Syntax der Konfigurationsbefehle spezifiziert der Admin durch EBNF-Regeln. Diese Regeln und weitere Informationen zur Bedienung von »setup-storage« erläutern die Manpage und das FAI-Wiki [6]. |
Grundausstattung
Das Paket »fai-server« ist Ausgangspunkt der Installation für den Server. Seine Abhängigkeitsliste beinhaltet bereits Pakete für NFS, DHCP und TFTP-Server. FAI benötigt alle diese Dienste, der Admin muss sie also noch konfigurieren. Erwähnenswert ist der Befehl »fai-setup« für die zentrale Konfiguration des Servers. Der Befehl »make-fai-bootfloppy« erzeugt Bootmedien wie zum Beispiel CD-ROMs oder Floppys für Hardware ohne PXE-Boot. Das Paket »fai-client« liefert die Programme, die der Client während der Installation ausführt.
Die Programme »setup_harddisks« und »setup-storage« partitionieren die Festplatte. Zudem befinden sich in diesem Paket die Befehle »fcopy« und »ftar«, die abhängig von einer Paketklasse Dateien auf den Client kopieren. Die Dokumentation von FAI mit Konfigurationsbeispielen ist der Inhalt des Pakets »fai-doc«. Nach Einspielen des Pakets sind die entsprechenden Dateien im Verzeichnis »/usr/share/doc/fai-doc« zu finden.
Das Paket »fai-nfsroot« ist nicht für die Installation auf einem normalen Rechner gedacht. Stattdessen lädt die FAI-Setup-Prozedur dieses Paket während der Konfiguration des Servers vom Mirror herunter und integriert dessen Inhalt in das Verzeichnis »/srv/fai/nfsroot«. Die Clients binden das Verzeichnis via NFS als Wurzelverzeichnis ein.
FAI-Server startklar
Das Paket »fai-quickstart« vereinfacht die Installation von FAI, indem es alle obigen Pakete installiert und die Beispielkonfigurationen an die richtige Stelle kopiert. Es installiert alle notwendigen Pakete und legt im Verzeichnis »/etc/fai« Konfigurationsvorlagen an. Die Parameter in der Datei »fai.conf« legen die zentralen Einstellungen des FAI-Servers fest. Der Admin braucht diese Werte aber nur zu ändern, wenn er einen Debian-Mirror über NFS einbindet.
Der Systemverwalter gibt in »make-fai-nfsroot.conf« vor, wie FAI das NFS-Root konfiguriert. Falls der FAI-Server keinen DNS-Eintrag hat, kommentiert er in der Datei die Zeile mit dem Eintrag »NFSROOT_ETC_HOSTS« aus. Die Datei enthält schon eine Vorgabe der IP-Adresse und Namen, die der Admin auf die lokalen Gegebenheiten anpasst. Darüber hinaus trägt er den Mirror ein, von dem das Skript die Pakete lädt, um daraus das NFS-Root zu erzeugen.
Nutzen von Debian-Normen
FAI nutzt das normale Apt-System von Debian, dessen Repositories in »/etc/apt/sources.list« aufgeführt sind. FAI hat dort bereits die Standard-Spiegelserver der Distributionsanbieter und die der Universität Köln eingetragen. Wer andere Spiegelserver einsetzen will, passt die Datei entsprechend an. Vorsicht: Um unnötige Komplikationen zu vermeiden, sollte FAI das NFS-Root mit derselben Debian-Version erzeugen, die der Admin auch für die Clients vorsieht.
Sind alle Parameter korrekt konfiguriert, steht der Erzeugung des NFS-Wurzelverzeichnisses nichts mehr im Wege: Der Administrator führt nur den Befehl »fai-setup -v« aus. Nach dem Download von gut 330 MByte Paketdaten enthält das Verzeichnis »/srv/fai/nfsroot/live/filesystem.dir« das fertige NFS-Root. Das Skript gibt auch die für die Client-Installation notwendigen Verzeichnisse über NFS frei und legt ein passendes Kernelimage im Verzeichnis »/srv/tftp« ab.
Eine kurze Probefahrt
Zum Test des Servers führt der Administrator eine einzelne Client-Installation durch. Hierzu bietet sich die mitgelieferte Paketklasse »DEMOHOST« an, die ein Minimalsystem beinhaltet. Die Voraussetzungen an die Hardware des Clients sind minimal: Ein Standard-PC mit einer mindestens 500 MByte großen Festplatte und (der Einfachheit halber) mit einer PXE-tauglichen Netzwerkkarte.
Auf dem FAI-Server hat der Systemverwalter alle benötigten Netzdienste wie Nameserver und NFS bereits installiert. Um den Clients beim Booten zu assistieren, richtet er auf dem DHCP-Server einen Eintrag in »/etc/dhcp3/dhcpd.conf« wie in Listing 1 ein. Er weist einer MAC-Adresse eine IP und einen DNS-Namen zu und benennt das TFTP-Image zum Booten des Clients.
|
Listing 1: |
|---|
01 group {
02 allow booting;
03 next-server 192.168.0.100;
04 filename "pxelinux.0";
05 option root-path "/srv/fai/nfsroot";
06 host demohost {
07 hardware ethernet 00:e0:81:5c:aa:82;
08 fixed-address 192.168.1.25;
09 }
10 }
|
Dazu rechnet der Admin die IP-Adresse des Clients in die hexadezimale Darstellung um – hier COA80119 für 192.168.1.25. Er legt die Datei »/srv/tftp/fai/pxelinux.cfg/COA80119« mit dem Inhalt von Listing 2 an. Die Einstellung »default« steuert das Bootverhalten des Clients, zunächst wählt er hier »fai-generated«. Nach Booten des Clients übernimmt FAI die Kontrolle und installiert ein einfaches Debian-System ohne grafische Oberfläche. Ist das erledigt, stellt der Administrator das Bootverhalten von »fai-generated« auf »localboot« um und startet den nun betriebsfertigen Client neu.
|
Listing 2: |
|---|
01 # Auswahl des Bootverhaltens 02 # (bitte genau eine der folgenden zwei Zeilen auskommentieren) 03 default fai-generated 04 # default localboot 05 06 # Netzwerk Boot und Start von FAI 07 label fai-generated 08 kernel vmlinuz-2.6.25-2-486 09 append initrd=initrd.img-2.6.25-2-486 ip=dhcp 10 root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live 11 FAI_FLAGS=verbose,sshd,createvt 12 13 # Booten von der Festplatte 14 label localboot 15 localboot 0 |
|
Listing 3: Aufbau von |
|---|
01 #!/bin/bash 02 # assign classes hosts 03 case $HOSTNAME in 04 # L0.24 - CC_SUN (computer class _ sun) 05 L024-*) 06 echo "BC_LINUX CC_SUN BC_X11 BC_KDE BC_BASE RC_L024 SC_LDAP" ;; 07 # Linux Debian VMware - Klasse: CC_VMWARE 08 vmware-1|vmware-2) 09 echo "BC_LINUX CC_VMWARE SC_LDAP" ;; 10 # default class 11 *) 12 echo "BC_LINUX" ;; 13 esac 14 (ifclass I386 || ifclass AMD64) && echo GRUB 15 exit 0 |
Spieglein, Spieglein
Neben dem offiziellen Debian-Mirror arbeitet FAI auch mit lokalen Spiegelservern zusammen, die sich mit dem Paket »debmirror« aufsetzen lassen [4]. Wer viele Clients hat und häufig installieren muss, wird die Vorzüge eines eigenen Mirrors bald schätzen, da FAI auf diese Weise nicht alle Pakete immer wieder über die Internetverbindung lädt. Außerdem nimmt eine lokale Installation über eine Fast- oder Gigabit-Ethernet weniger Zeit in Anspruch.
Ein weiterer Vorteil ist, dass der Admin den Inhalt des lokalen Mirrors einfrieren kann. So koppelt er die lokale Installation vom aktuellen Stand des Repository ab und garantiert identische Software auf allen Clients unabhängig vom Zeitpunkt der Installation. Außerdem lässt sich der Spiegelserver um ein eigenes Repository erweitern, um darüber selbst gestrickte Pakete zu verteilen.
Nachdem der Admin die Funktionalität von FAI mittels Testclient »demohost« geprüft hat, plant er weitere Installationen. Ganz nach dem Motto von FAI “Plan your installation, and FAI installs your plans”, ist eine Erweiterung in den meisten Fällen zwingend erforderlich.
Das Klassenkonzept von FAI stellt flexibel für jeden Client ein individuelles Setup bereit. Meist fasst der Systembetreuer aber aus Effizienzgründen mehrere Rechner zu Gruppen zusammen. Er gruppiert sie sowohl nach Hardware wie nach vorhandener Netzwerktopologie.
Klassengesellschaft
In der Fakultät Elektronik und Informatik sind Rechner auf Pools und Labore verteilt. In vielen Räumen stehen baugleiche Geräte, es gibt aber auch Labore mit Computern verschiedener Architekturen. Die Fakultät verwendet für jeden Rechnertyp eigene Kernel mit Hardware-spezifischen Treibern. Jeder Rechnertyp benötigt also eine eigene Klasse. Die Konfiguration unterscheidet Raum- (gleiche Installation für einen bestimmten Raum) und Computer-Klassen (gleiche Installation für einen Rechnertyp). Da die Fakultät FAI auch für die Installation von VMware-Maschinen einsetzt, erhalten auch diese virtuellen Rechner eine eigene Computer-Klasse. Bei einigen Räumen mit verschiedenen Rechner-Architekturen kombinieren die Admins auch Raum- und Computer-Klassen.
Sie unterscheiden auf Software-Ebene mehrere Klassentypen: Es gibt eine Basisklasse (BC), eine Serviceklasse (SC), sowie eine Programmklasse (PC). Die Basisklasse beinhaltet das Debian-Grundsystem, Programme, Konfigurationsdateien sowie Skripte, die für alle Pool- und Labor-Rechner gültig sind. Für Clients mit grafischer Oberfläche gibt es die Basisklassen »BC_X11«, »BC_KDE« und »BC_GNOME«. Eine Serviceklasse beinhaltet alle Information, um einen Client für die Nutzung eines bestimmten Dienstes vorzubereiten. Beispielsweise enthält die Klasse »SC_LDAP« alle Pakete und Konfigurationsdaten für den Zugriff auf den fakultätsinternen OpenLDAP-Verzeichnisdienst.
Auswahl von Software
Oft erfordern studentische Projekte zusätzliche Programmen auf einer Gruppe von Rechnern. Hierfür definiert der Admin für jedes Projekt eine eigene Programmklasse. Ein anderes Anwendungsbeispiel für die Nutzung einer Programmklasse ist das Deaktivieren der Bildschirmsperre unter KDE bei allen Pool-Rechnern. Solche Einstellungen erledigt üblicherweise kein Debian-Paket, sondern entweder ein Eintrag in einer bestehenden Datei oder ein Skript, das diese Einträge vornimmt. Sind also solche Einstellungen notwendig, fügen sie eine weitere Klasse den betreffenden Rechnern hinzu.
Das Aufschlüsseln der jeweiligen Programme in eigene Klassen eröffnet die Möglichkeit, sie leicht zu aktivieren oder zu deaktivieren. Es gilt allerdings darauf zu achten, nicht zu viele Programmklassen zu definieren, da sonst leicht der Überblick verloren geht. Besser ist es, auch hier Gruppen zu bilden. Tabelle 1 bietet eine Übersicht aller definierten Klassen mit zugehörigen Beispielen.
|
Tabelle 1: |
|---|
Im Konfigurationsverzeichnis »/srv/fai/config/« und seinen Unterverzeichnissen sind alle Informationen abgelegt, die FAI für die Installation eines Clients benötigt. Jedem Unterverzeichnis obliegt dabei eine andere Aufgabe. Im Unterverzeichnis »class/« befinden sich alle Dateien und Skripte zur Definition der einzelnen Klassen und Variablen. Hervorzuheben ist hier die Datei »50-host-classes«. In ihr speichert der Verwalter für jede Clientgruppe die zugeordneten Klassen.
Listing 3 enthält ein Beispiel für die »50-host-classes«. Die Datei ist ein Shellskript, das abhängig von der Variablen »$HOSTNAME« die Klassennamen anzeigt. Beginnt der Hostname des Clients etwa mit »L024-«, so handelt es sich um einen Rechner des Labors L0.24. Auf einem solchen Client installiert FAI die Basisklassen »BC_LINUX«, »BC_X11«, »BC_KDE«, »BC_BASE«, die Computerklasse »CC_SUN«, die Raumklasse »RC_L024« und die Serviceklasse »SC_LDAP«. Erkennt FAI den Client als »vmware-1« oder »vmware-2«, handelt es sich um eine virtualisierte Maschine. In diesem Fall wählt FAI die Klassen »BC_LINUX«, »CC_VMWARE« und »SC_LDAP« aus.
Lokale Gegebenheiten
Für jede Klasse darf der Administrator Vorgaben für Tastaturlayout, Zeitzone und Benutzerpasswörter oder Ähnliches festlegen. Die entsprechenden Werte speichert er in der Datei »Klassenname.var«. Listing 4 enthält beispielsweise Vorgaben für die Klasse »BC_LINUX«. FAI arbeitet die von »50-host-classes« ausgegebene Klassenliste von links nach rechts ab. Definieren mehrere dieser Klassen dieselbe Variable, so zählt der Wert der am weitesten rechts stehenden Klasse in der Liste. Der clevere Administrator nutzt diese Eigenschaft, um allgemeine Vorgaben durch speziellere zu ersetzen.
|
Listing 4: Parameter von |
|---|
01 # Auch nichtsignierte Repository erlauben: 02 FAI_ALLOW_UNSIGNED=1 03 04 # Deutsche Tastatur: 05 FAI_KEYMAP=de-latin1-nodeadkeys 06 07 # UTC=yes, wenn die Systemuhr auf UTC läuft. 08 UTC=yes 09 TIMEZONE=Europe/Berlin 10 time_zone=Europe/Berlin 11 12 # Root-Passwort durch "openssl passwd -1" für das neue System 13 # erzeugen, als Formate sind md5 und crypt möglich: 14 rootpw='$1$865YxXkZ$xRxd/WUBLPU4gZfVmi1ax1' 15 servicepw='$1$arm/uRPR$5w0Q7Z3i2cRSq1tOq/zyK/' |
Sollen zum Beispiel die Rechner des Labors L0.24 die Einstellungen der Klasse »BC_LINUX« erhalten, jedoch andere Passwörter, legt er eine neue Datei »RC_L024.var« an, die lediglich die Zeilen 12 bis 15 aus Listing 4 mit einem neuen Passwort enthält. Da »50-host-classes« die Klasse »RC_L024« nach der Klasse »BC_LINUX« aufführt, haben deren Vorgaben Vorrang.
Das Unterverzeichnis »debconf/« dient zur klassenabhängigen Konfiguration der Parameter des Debconf-Systems. Mittels Debconf speichert Debian systemweite Einstellungen wie etwa den Standard-Editor oder den Standard-Webbrowser. Die Speichermedien teilt der Administrator im Unterverzeichnis »disk_config« auf (siehe Kasten “Verbesserte Partitionierung”).
Das Verzeichnis »package_config/« definiert für jede Klasse die Pakete, die das Zielsystem benötigt. Dies erledigt normalerweise der Befehl »PACKAGES aptitude Paketname …«. Auch eine Deinstallation ist mit dem Befehl »PACKAGES remove Paketname …« möglich. Listing 5 zeigt, wie sich Abhängigkeiten zwischen Klassen definiert lassen. Der Befehl »PACKAGES aptitude BC_KDE« installiert die nachfolgenden Pakete nur unter der Bedingung, dass sie auch Teil der Klasse »BC_KDE« sind. Diese Art der Definition erlaubt es, Konzepte feingliedrig zu strukturieren und umzusetzen.
|
Listing 5: Paketkonfiguration in |
|---|
01 # packages for all systems 02 PACKAGES aptitude 03 alsa-base 04 alsa-utils 05 discover 06 ... 07 08 PACKAGES aptitude BC_KDE 09 firefox-locale-de-de 10 thunderbird-locale-de |
|
Listing 6: Partitionierung einer |
|---|
01 disk_config disk1 preserve_always:1 bootable:2 02 primary /boot 200 ext2 rw 03 logical swap 4000 swap rw 04 logical /tmp 10000 ext2 defaults 05 logical /var 5000 ext3 defaults 06 logical / 3000- ext3 defaults,errors=remount-ro |
|
Listing 7: Partitionierung eines |
|---|
01 disk_config sda 02 primary - 256 - - 03 primary swap 1024 swap sw 04 primary - 0- - - 05 06 disk_config sdb 07 primary - 256 - - 08 primary - 1024 - - 09 primary - 0- - - 10 11 disk_config raid bootable:1 12 raid1 /boot sda1,sdb1 ext2 rw,errors=remount-ro 13 raid2 swap sda2,sdb2 swap rw 14 raid3 / sda3,sdb3 ext3 rw |
Nach eigenem Gusto
Im Verzeichnis »files/« legt der Administrator alle Dateien ab, die FAI später auf das Zielsystem kopiert. Er teilt die Dateien anhand der Klassen auf. Die Hierarchie innerhalb von »files/« orientiert sich an der Verzeichnishierarchie von Debian. Ein Beispiel illustriert dies: Wer die Klasse »CC_HPCOMPAQ« auswählt, erwartet die Datei »menu.lst« später in dem Verzeichnis »/boot/grub« des Clients. Um das zu erreichen, kopiert der Administrator den Inhalt von »menu.lst« in das Verzeichnis »files/boot/grub/menu.lst/CC_HPCOMPAQ/«. Die benutzerdefinierten Dateien unter »files/« kopiert FAI nicht automatisch auf das Zielsystem, sondern nur, wenn der Befehl »fcopy« in einem Konfigurationsskript auftaucht. Der Aufruf von
fcopy -iM /boot/grub/menu.lst
verfrachtet beispielsweise die Konfigurationsdatei »menu.lst« des Bootloaders Grub auf den Client. Sie ist Teil der Klasse »BC_LINUX«.
Das Verzeichnis »/hooks« enthält Programme oder Skripte, die sich für eigene Zwecke nutzen lassen. Sie passen den Installationsprozess individuell an. Zu guter Letzt befinden sich im Verzeichnis »scripts/« alle Skripte, die FAI während der Installation ausführt. Es ist leicht machbar, Dateien klassenbasiert mit »fcopy« zu kopieren oder einen Befehl mit »${ROOTCMD}« so auszuführen, als ob er auf dem Client abliefe.
Für eigene Skripte hat der Administrator die für Unix typische Qual der Wahl. Neben klassischen Shellskripten arbeitet FAI auch Perl- oder Cfengine-Skripte ab. Letztere eignen sich vorzüglich dazu, Konfigurationsdateien zu bearbeiten [5].
Diagnose
Hat der Admin Klassen geplant und zusammengefasst sowie Installationsdateien und -skripte konfiguriert, ist FAI einsatzbereit für die automatisierte Installation auf vielen Rechnern. Im letzten Arbeitsschritt erweitert der Administrator noch die DHCP- und TFTP-Konfiguration derart, dass die neuen Clients über das Netzwerk booten und automatisch die FAI-Installation starten. Dazu passt er die Einstellungen des ersten Testlaufs an. Hat der FAI-Client seine Installation erfolgreich beendet, zeigt er auf dem Bildschirm eine Zusammenfassung an und wartet auf die Eingabe von [Return], um einen Neustart durchzuführen (siehe Abbildung 3).
Die Fakultät Elektronik und Informatik installiert jedes Semester über 200 Rechner mit FAI. Dabei fehlt den Admins die Zeit, jeden Rechner während der Installation zu überwachen. Das wäre auch nicht im Sinne von FAI. Das Deployment Framework speichert auf dem Server alle Installationsvorgänge in Logdateien. Der Systemverwalter wertet sie bei Bedarf aus und sucht nach auftretenden Fehlern. Die Dateien liegen getrennt nach Hostnamen und Installationsdatum im Verzeichnis »/var/log/fai/«.
![Abbildung 3: Am Ende der Installation zeigt FAI auf dem Client eine Zusammenfassung der Installation an. Ein Druck auf [Return] startet das vollständig eingerichtete Debian-System neu.](https://www.linux-magazin.de/wp-content/uploads/2008/12/abb3_jpg-4-300x182.jpg)
Abbildung 3: Am Ende der Installation zeigt FAI auf dem Client eine Zusammenfassung der Installation an. Ein Druck auf [Return] startet das vollständig eingerichtete Debian-System neu.
Fernsteuerung
FAI ist ein komplexes Werkzeug zur automatischen Installation von DEB-basierten Linux-Distributionen. Neben x86-Systemen unterstützt der Installationsautomat auch die Sparc- und PowerPC-Architektur. Dank seiner Flexibilität ist FAI in vielen Bereichen einsetzbar, angefangen von einem Rechner-Cluster bis hin zu heterogenen IT-Infrastrukturen in Unternehmen. Hat er die Einarbeitungshürde überwunden, hält der Administrator ein mächtiges Werkzeug in der Hand, das nahezu alle Rechnerinstallationen automatisiert. (mg)
|
Infos |
|---|
|
[1] Fakultät Elektronik und Informatik der Hochschule für Technik und Wirtschaft Aalen: [http://www.htw-aalen.de/hochschule/fakultaeten/elektronik-und-informatik/] [2] Debian: [http://www.debian.org] [3] Fully Automatic Installation (FAI):[http://www.informatik.uni-koeln.de/fai/] [4] Debian-Anwenderhandbuch, Spiegelserver: [http://debiananwenderhandbuch.de/debianmirror.html] [5] Andreas Putzo, “Agiler Urahn: Konfigurationsverwaltung mit Cfengine”: Linux-Magazin 10/08, S. 64 [6] FAI-Wiki-Eintrag zu »setup-storage«: [http://faiwiki.informatik.uni-koeln.de/index.php/Setup-storage] |
|
Die Autoren |
|---|
|
Dr. Christoph Karg ist Professor im Studiengang Informatik der Hochschule Aalen. Seit seinem Studium interessiert er sich für Linux und Open-Source-Software. Steffen Bornemann arbeitet seit drei Jahren als Diplom-Informatiker an der Hochschule Aalen. In der Fakultät Elektronik und Informatik ist er für die Betreuung der Linux-Rechner und der Administration des Linux-Netzwerkes verantwortlich. |






