FAI
Inhaltsverzeichnis
Anmerkung
Vorgabe ist, eine vollautomatisierte Debian Linux Client-Installation mit
unterschiedlicher Soft- und Hardwareausstattung der Clients.
Die Lösung wird mit einem Fai-Server umgesetzt.
Version und Voraussetzungen
Linux : Debian Sarge
Grundinstallation linux26
Fai :
fai-client 2.10.1
fai-doc 2.10.1
fai-kernels 1.10.3
fai-quickstart 2.10.1
fai-server 2.10.1
Links
BUG
Nach der Installation und Konfiguration wird das Script fai-setup aufgerufen. Wenn dieses nicht mit einem Fehler abbricht, kann dass folgende übersprungen werden, ansonsten hoffe ich, mit den Fehlerbeschreibungen helfen zu können.
Beim Start von fai-setup bzw. make-fai-nfsroot kommte es zu fehlern die zu Abruch führen. Folgende Änderungen habe ich im Script /usr/sbin/make-fai-nfsroot vorgenommen:
- original Text + geänderter bzw. hinzugefügter Text
Kernel wird nicht ins NFSROOT installiert
Der Kernel im Paket Fai-Kernels v1.10.3 heisst nicht mehr "kernel-image-xxx" sondern "linux-image-xxx". Folgenden Änderungen habe ich vorgenommen:
local package=$1 - KERNELVERSION=`dpkg --info $package | grep "Package: kernel-image" | sed -e 's/.*kernel-image-'//` + KERNELVERSION=`dpkg --info $package | grep -E "Package: (kernel|linux)-image" | sed -e 's/.*\(kernel\|linux\)-image-'//`
Im NFSROOT wird etc/fai nicht kopiert
Es soll aus /etc/fai/* alle Dateien nach $NFSROOT/etc/fai/ kopiert werden. Da dass Verzeichnis fai in $NFSROOT/etc nicht vorhanden ist, schlägt der Versuch fehl Meine Änderungen am Script make-fai-nfsroot:
- cp -Rpv $cfdir/* $NFSROOT/etc/fai + cp -Rpv $cfdir $NFSROOT/etc/
Jetzt wird das ganze Verzeichnis fai kopiert
Paket fai-nfsroot kann nicht Installiert werden.
Das Paket fai-nfsroot kann nicht direkt mit apt-get installiert werden. Es muss aber im Script /etc/fai/make-fai-nfsroot.conf unter -
packages="fai-nfsroot module-init-tools ............"
angegebe sein. Bei der Installation der Pakete im NFSROOT wird auf die Datei /etc/fai/sources.list zurück gegriffen. Deshalb habe ich dort den Eintrag:
deb http://www.informatik.uni-koeln.de/fai/download sarge koeln
hinzugefügt.
Probleme mit dem SSH-Pub. Key vom Fai user
Der User Fai sollte angelegt sein, wenn nicht muss der user fai angelegt werden. Wechsel mit su fai. Aufruf von:
# ssh-keygen -t rsa
Fai-Server (Fully Automatic Installation)
Fai ist ein Installationsserver für Automatisierte Linux-Installation.
In diesem Artikel wird die Installation des Fai-Servers und den benötigten Diensten erklärt.
Homepage von [Fai ]
Wiki von [Fai ]
Debian-Pakete installieren
Nach eienem Eintrag in der "source.list" des Debianservers können die Debian-Pakete des Faiservers mit "apt-get" installiert werden.
# vi /etc/apt/source.list deb http://www.informatik.uni-koeln.de/fai/download sarge koeln
Fai
Mit "apt-get" werden dei Fai-Pakete installieren.
# apt-get update # apt-search fai # apt-get install fai-doc fai-client fai-server fai-kernels fai-quickstart
NFS-Server
# apt-get install nfs-common nfs-kernel-server debootstrap
Zusätliche Software
# apt-get install tftpd-hpa gcc vim mknbi rsh-server rsh-client ntpdate
NFS-Server einrichten
Folgende Konfigurationsdateien müssen angepasst werden:
/etc/export | Freigabe der NFS-Shares für die Clients frei /etc/netgroup | Legt fest, welche Client-PCs zugreifen dürfen
Beispiel-Conf /etc/exports
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # /files/scratch 172.27.0.0/255.255.0.0(ro) 127.0.0.1(ro) /files/scripts 172.27.0.0/255.255.0.0(ro) 127.0.0.1(ro) /usr/local/share/fai @faiclients(ro) 172.27.0.0/255.255.0.0(ro) 127.0.0.1(ro) /usr/lib/fai/nfsroot @faiclients(ro,no_root_squash) 172.27.0.0/255.255.0.0(ro,no_root_squash) 127.0.0.1(ro)
Beispiel-Conf /etc/netgroup
# etc/netgroup # # Einzelne Client-Def. # li-sua-101 (li-sua-101,,) li-sua-102 (li-sua-102,,) debian-fai (debian-fai,,) # Gruppe li-sua-clients li-sua-101 li-sua-102 # Fai-Clients faiclients li-sua-clients
Jetzt noch die Freigaben anlegen, falls noch nicht vorhanden
# mkdir -p /files/scratch # mkdir -p /files/scripts # mkdir -p /usr/local/share/fai # mkdir -p /usr/lib/fai/nfsroot
Erstes starten des NFS-Servers
# rpc.mountd # rpc.nfsd # /etc/init.d/nfs-common start # /etc/init.d/nfs-kernel-server start
Nach dem start sollte folgende Ausgabe auf der Console zu sehen sein:
Export list for fai-sarge: /files/scripts 172.27.0.0/255.255.0.0 /files/scratch 172.27.0.0/255.255.0.0 /usr/lib/fai/nfsroot @faiclients,172.27.0.0/255.255.0.0 /usr/local/share/fai @faiclients,172.27.0.0/255.255.0.0
Fai-Server einrichten
Konfigurationsdateien des FAI-Servers :
- /etc/fai/fai.conf
- /etc/fai/make-nfs-root.conf
- /etc/fai/source.list
/etc/fai/
Grundkonfiguration anpassen.
!!! Achtung !!!
Wenn in diesen Dateien Änderungen vorgenommen werden,
muss danach fai-setup bzw. make-fai-nfsroot
aufgreufen werden.
Sonst werden die Änderungen nicht wirksam.
fai.conf
Diese Eintsellungen müssen vorgenommen werden. Optionale Einstellungen werden hier nicht aufgeführt
- Der INSTALLSERVER muss über DNS aufgelöst werden
installserver=INSTALLSERVER
- Wird zum erzeugen des nfs-root benötigt
mirrorhost=ftp.debian.org
- Wenn der Fai-Server mehrere Netwerkkarten
SERVERINTERFACE=eth0
- Zum speichern der Installations-Logfiles
FAI_REMOTESH=rsh FAI_REMOTECP=rcp
- Pfadt zu den Scripten für die Clientinstallaton
FAI_CONFIGDIR=/usr/local/share/fai FAI_LOCATION=$installserver:$FAI_CONFIGDIR
- Pfadt des nfsroot-Verzeichnisses
NFSROOT=/usr/lib/fai/nfsroot
- Konfigurationsverzeichnis auf dem Client
FAI=/fai
make-nfs-root.conf
Anpassungen des Basispaketes im nfs-root Auch hier nur die Einstellungen die angepasst werden müssen
- Mirror-Server (z.B. Siegel oder Apt-Proy)
FAI_DEBOOTSTRAP="sarge http://$mirrorhost/debian"
- Root-Passwort (fai)
FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
- Bootkernel der Clients
KERNELPACKAGE=/usr/lib/fai/kernel/linux-image-2.6.16-fai-kernels_1_i386.deb
- Exportiert die nfsroot für die angegebene Netzgruppe
FAICLIENTS="172.27.0.0/16"
- Pakete die nicht benötigt werden.
FAI_DEBOOTSTRAP_OPTS="--exclude=pcmcia-cs,ppp,pppconfig,pppoe,pppoeconf,dhcp-client exim4,exim4-base,exim4-config,exim4-daemon-light,mailx,at fdutils,info,modconf,libident,logrotate,exim"
- Pakete die zusätzlich zur nfs-root hinzu gefügt werden
packages="fai-nfsroot module-init-tools dhcp3-client ssh rdate lshw hwinfo portmap bootpc rsync wget rsh-client less dump reiserfsprogs usbutils psmisc pciutils hdparm smartmontools parted mdadm lvm2 dnsutils ntpdate dosfstools cvs jove xfsprogs xfsdump sysutils dialog discover mdetect libnet-perl netcat libapt-pkg-perl console-tools"
source.list
In diesem Beispiel wird ein APT-Proxy eingebungen.
Beispiel
# These lines should work for many sites # A more comprehensive example can be found in /usr/share/doc/fai/examples/etc # # Internet ########## # deb http://ftp.debian.org/debian sarge main contrib non-free # deb http://ftp.debian.org/debian sarge-proposed-updates main contrib non-free # deb http://security.debian.org/debian-security sarge/updates main contrib non-free # # Debian-Proxy local #################### deb http://fai-sarge:9999/debian stable main contrib non-free deb-src http://fai-sarge:9999/debian stable main contrib non-free deb http://fai-sarge:9999/debian-non-US stable/non-US main contrib non-free deb-src http://fai-sarge:9999/debian-non-US stable/non-US main contrib non-free deb http://fai-sarge:9999/security stable/updates main contrib non-free deb http://fai-sarge:9999/fai/ sarge koeln deb http://fai-sarge:9999/blb/ stable blb deb http://fai-sarge:9999/marillat/ sarge main
DHCP3-Server einrichten
Nach der Instalaltion wie oben beschrieben, ist der DHCP3 Server schon installiert. Nun muss nur noch die Konfiguration an die eigenen Bedürfnisse angepasst werden. Hier ein Beispiel auf dem FAI-Paket fai-doc, zu finden unter /usr/share/doc/fai-doc/examples/etc/dhcpd.conf
# dhcpd.conf for fai # replace faiserver with the name of your install server deny unknown-clients; option dhcp-max-message-size 2048; use-host-decl-names on; #always-reply-rfc1048 on; filename "pxelinux.0"; # the server from which to load the initial boot file if different # from server-name (if the DHCP server is not also the TFTP server) #next-server faiserver; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.250; option domain-name "beowulf"; option domain-name-servers 192.168.1.250; option time-servers faiserver; option ntp-servers faiserver; server-name "faiserver"; } # perl -ane ' {print "host atom {hardware ethernet $1;fixed-address atom}";}' host demohost {hardware ethernet 0:2:a3:b5:c5:41;fixed-address demohost;}
BOOTP-Server einrichten
Ein Beispiel zur Erklärung:
# /etc/bootptab: database for bootp server (/usr/sbin/bootpd) .... .faiglobal:\ :ms=1024:\ :hd=/boot/fai:\ :hn:bs=auto:\ :rp=/usr/lib/fai/nfsroot: .failocal:\ :tc=.faiglobal:\ :sa=172.27.1.11:\ :ts=172.27.1.11:\ :T170="172.27.1.11:/usr/local/share/fai":\ :T171="sysinfo":\ :T172="sshd verbose createvt":\ :sm=255.255.0.0:\ :gw=172.27.0.254:\ :dn=blb-intranet.de:\ :ds=172.27.1.15:
# Beispiel-Client li-sua-101:ha=0060085c7868:bf=li-sua-101:ip=172.27.5.101:tc=.failocal:T171="install":
- Um die Mac-Adresse des Clients heraus zu finden, kann "tcpdump" verwendet werden. Man bootet den Client und benutzt "tcpdump" auf dem Server zum auslesen:
tcpdump -x -X -s 10000 -i eth0 dst port 67
Erweiterte Konfiguration
Module in den Bootkernel (Installation) einbinden
- Unter /usr/local/share/fai/class befindet sich das Script 20-hwdetect.source.
Hier können zusätzliche Kernel-Module angegeben werden. Diese werden dann bei der Installation eingebunden.
# load additional kernel modules (from old 11modules.source) # this order should also enable DMA for all IDE drives kernelmodules="rtc floppy usbkbd ide-disk ide-cd" case $(uname -r) in --> 2.4*) kernelmodules="$kernelmodules keybdev mousedev hid ide-detect isa-pnp" ;; --> 2.6*) kernelmodules="$kernelmodules usbhid usbmouse ide-generic mptspi ata_piix sata_sil" ;; esac for mod in $kernelmodules; do [ "$verbose" ] && echo loading kernel module $mod modprobe -a $mod 1>/dev/null 2>&1 done