FAI 6.2 Ubuntu Noble installations howto
Dieses Howto beschreibt wie man eine FAI Instanz unter Ubuntu Noble installiert.
Benötigte wird ein Server oder VM mit Ubuntu Noble.
In diesem Beispiel hat der Server die IP 192.168.101.4. Man kann auch DNS Namen nehmen macht es aber etwas komplizierter.
Ubuntu PPA hinzufügen für aktuellere Pakete
add-apt-repository ppa:fai/ppa
apt update
leider gibt es noch kein Noble PPA aber wir können das von Jammy benutzen
nano /etc/apt/sources.list.d/fai-ubuntu-ppa-noble.sources
Noble durch jammy ersetzen
apt-get update
apt-cache policy fai-server
fai-server:
Installed: none
Candidate: 6.2.6-0~202503201447~ubuntu22.04.1
Version table:
6.2.6-0~202503201447~ubuntu22.04.1 500
500 https://ppa.launchpadcontent.net/fai/ppa/ubuntu jammy/main amd64 Packages
6.0.5ubuntu1 500
500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
Dann installieren wir mal alle benötigten Pakete
apt-get install sudo fai-server fai-setup-storage fai-quickstart
Konfiguration des FAI live systems „FAI nfsroot“
FAI soll in unserm Beispiel von NFS booten dazu wurde bereits der nfs-kernel-server installiert.
In dem Verzeichnis /etc/fai werden alle Einstellungen für den FAI NFSROOT gesetzt. Und anschließend mit fai-setup in das NFSROOT übernommen.
Als erstes wird die Datei /etc/fai/fai.conf angepasst.
nano /etc/fai/fai.conf
Erstellen des /etc/fai/nfsroot-hooks/ Verzeichnisses da dieses später benötigt wird.
mkdir -p /etc/fai/nfsroot-hooks/
Falls ihr das NFSROOT mit Debian bauen wollt, kann man diese Schritte überspringen.
Anpassung für ein NFSROOT mit Ubuntu Nobel
In der der Datei /etc/fai/apt/sources.list können wir unseren mirror angeben.
Leider steht hier der Falsche Eintrag drin uns diesen müssen wir anpassen. Wir fügen daher auch gleich den PPA Mirror hinzu, auch hier wieder die jammy variante.
# These lines should work for many sites
deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
# repository that may contain newer fai packages for bookworm
#deb http://fai-project.org/download bookworm koeln
deb https://ppa.launchpadcontent.net/fai/ppa/ubuntu/ jammy main
Dann muss noch die /etc/fai/nfsroot.conf angepasst werden. Damit auch von noble der DEBOOTSTRAP gemacht wird.
# For a detailed description see nfsroot.conf(5)
# "<suite> <mirror>" for debootstrap
#FAI_DEBOOTSTRAP="bookworm http://deb.debian.org/debian"
FAI_DEBOOTSTRAP="noble http://archive.ubuntu.com/ubuntu"
FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
NFSROOT_SERVER=192.168.101.4
NFSROOT=/srv/fai/nfsroot
TFTPROOT=/srv/tftp/fai
NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/
FAI_DEBOOTSTRAP_OPTS=
# Configuration space
FAI_CONFIGDIR=/srv/fai/config
Bedeutung der Variablen:
- FAI_DEBOOTSTRAP
Die Quelle, aus der die von debootstrap benötigten Pakete bezogen werden können. Dies kann ein lokales Verzeichnis oder ein FTP- / HTTP-Server sein. Hier wird auch die Version des späteren NFSROOT bestimmt. - FAI_ROOTPW
Das verschlüsselte Passwort für den Systemadministrator. Vorgegeben ist das Passwort „fai“; ein verschlüsseltes Password kann aus der Datei /etc/shadow kopiert werden oder mit dem Programm makepasswd erzeugt werden. Mit diesem PW könnten Sie während der FAI Installation auf den zu installierenden Server mit SSH connecten. - NFSROOT_SERVER
URL des FAI Servers wird an das NFSROOT angehängt (fehlt in der Config) - NFSROOT
Das Installationsverzeichnis wo sich der NFSROOT befinden soll. - TFTPROOT
Das Verzeichnis wo sich der Kernel für den Netboot des live-systems befinden soll. - NFSROOT_HOOKS
in diesem Verzeichnis liegen bash-scripte die nach dem debootstrap ausgeführt werden - FAI_DEBOOTSTRAP_OPTS
Zusätzliche Parameter für die DEBOOTSTRAP Umgebung - FAI_CONFIGDIR
Das Verzeichnis wo die Konfigurationsdateien für die Installation der Clients sich befinden sollen.
In die Datei /etc/fai/NFSROOT können noch weitere Pakte eingetragen werden die zur Erstellung des Live-system benötigt werden. zb. Spezielle Netzwerkkarten Treiber, oder ein Spezieller Kernel.
nano /etc/fai/NFSROOT
In unserem Fall müssen wir ein paar Pakete ersetzen da es diese unter Noble nicht gibt oder unauflösbare Abhängigkeiten haben.
- nvidia-detect
- netselect
- linux-image-686-pae
- linux-image-amd64
- linux-image-arm64
- linux-image-armmp
Damit die Installation des NFSROOT klappt ersetzen wir die linux-image-* durch dieses linux-image-generic
# package list for creating the NFSROOT
PACKAGES install-norec FULL
nfs-common fai-nfsroot rpcbind
rsync
lshw procinfo
dump reiserfsprogs xfsprogs xfsdump btrfs-progs
hwinfo hdparm smartmontools nvme-cli
zile
numactl
udns-utils
netcat-traditional nmap
pxelinux syslinux-common
ca-certificates # for get-config-dir-https and apt-transport-https
usbutils pciutils
#nvidia-detect
ssh
screen tmux
#netselect
mdadm
cryptsetup
memtest86+
#git # git consumes a lot of disk space on the FAI CD
PACKAGES install-norec
# dracut replaces live-boot and initramfs-tools
dracut live-boot- initramfs-tools-
dracut-config-generic
dracut-network isc-dhcp-client
curl lftp
util-linux-extra
less
ntpsec-ntpdate rdate
dosfstools
lvm2
psmisc
uuid-runtime
dialog
console-common kbd
xz-utils pigz zstd
gpg
# some network cards needs firmware
PACKAGES install-norec NONFREE
firmware-bnx2 firmware-bnx2x firmware-realtek
firmware-cavium firmware-myricom firmware-netronome firmware-netxen
firmware-qlogic
firmware-misc-nonfree
# you should not edit the lines below
# architecture dependend list of packages that are installed
PACKAGES install-norec I386
grub-pc
efibootmgr
#linux-image-686-pae
linux-image-generic
PACKAGES install-norec AMD64
grub-pc
grub-efi-amd64-bin
efibootmgr
#linux-image-amd64
linux-image-generic
#linux-image-amd64/bookworm-backports # if you want to use a newer kernel
PACKAGES install-norec ARM64
grub-efi-arm64
efibootmgr
#linux-image-arm64
linux-image-generic
PACKAGES install-norec ARMHF
grub-efi-arm
efibootmgr
#linux-image-armmp
linux-image-generic
nfsroot-hook erstellen
mir ist aufgefallen das später beim fai-chboot die kernel erkennung nicht sauber funktioniert wenn in dem /srv/fai/nfsroot/boot/ verzeichniss symlinks vorhanden sind.
Daher ein kleiner hook der das ganze entfernt
nano /etc/fai/nfsroot-hooks/01-nfs-kernel-boot-fix
# Kleiner Hook um die Rechte richtig zu setzen und die Symlinks zu löschen
chmod +r /srv/tftp/fai/*
unlink /srv/fai/nfsroot/boot/initrd.img
unlink /srv/fai/nfsroot/boot/initrd.img.old
unlink /srv/fai/nfsroot/boot/vmlinuz
unlink /srv/fai/nfsroot/boot/vmlinuz.old
Erstellung des FAI Live-Systems „FAI nfsroot“
Nachdem alle Einstellungen gemacht wurden kann mit dem Befehl fai-setup das Live-System erstellt werden. Dies benötigt ein paar Minuten.
Falls schon mal das live-system erstellt wurde und etwas an den Config Dateien in /etc/fai geändert wurde, muss man fai-setup -f ausführen um es zu überschreiben. Die Option -v gibt das ganze mit mehr infos aus.
fai-setup -f
Account $LOGUSER=fai already exists.
Make sure that all install clients can
log into this account without a password.
/var/log/fai/remote-logs/.ssh/known_hosts remained unchanged.
/var/log/fai/remote-logs/.ssh/authorized_keys created.
User account fai set up.
Creating FAI nfsroot in /srv/fai/nfsroot
Creating base system using debootstrap version 1.0.134ubuntu1
Calling debootstrap noble /srv/fai/nfsroot http://archive.ubuntu.com/ubuntu
Creating base.tar.xz
W: GPG error: https://ppa.launchpadcontent.net/fai/ppa/ubuntu jammy InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C6765BCBFBCA2ECA NO_PUBKEY 29B940FC4EA8CBF6
W: The repository 'https://ppa.launchpadcontent.net/fai/ppa/ubuntu jammy InRelease' is not signed.
Adding additional packages to /srv/fai/nfsroot:
nfs-common fai-nfsroot rpcbind rsync lshw procinfo dump reiserfsprogs xfsprogs xfsdump btrfs-progs hwinfo hdparm smartmontools nvme-cli zile numactl udns-utils netcat-traditional nmap pxelinux syslinux-common ca-certificates usbutils pciutils ssh screen tmux mdadm cryptsetup memtest86+ dracut live-boot- initramfs-tools- dracut-config-generic dracut-network isc-dhcp-client curl lftp util-linux-extra less ntpsec-ntpdate rdate dosfstools lvm2 psmisc uuid-runtime dialog console-common kbd xz-utils pigz zstd gpg grub-pc grub-efi-amd64-bin efibootmgr linux-image-generic
Removing 'local diversion of /etc/kernel/postinst.d/dracut to /etc/kernel/postinst.d/dracut.distrib'
update-initramfs: deferring update (trigger activated)
Processing triggers for dracut (060+5-1ubuntu3.3) ...
dracut: Generating /boot/initrd.img-6.8.0-55-generic
Created symlink /etc/systemd/system/default.target -> /usr/lib/systemd/system/fai.target.
FAI packages and related packages inside the nfsroot:
dracut 060+5-1ubuntu3.3
dracut-live 060+5-1ubuntu3.3
dracut-network 060+5-1ubuntu3.3
dracut-squash 060+5-1ubuntu3.3
fai-client 6.2.6-0~202503201447~ubuntu22.04.1
fai-nfsroot 6.2.6-0~202503201447~ubuntu22.04.1
fai-setup-storage 6.2.6-0~202503201447~ubuntu22.04.1
Waiting for background jobs to finish
[1] Done nice rm -rf $deldir/../.will-now-be-deleted
[2]+ Running nice xz -q $NFSROOT/var/tmp/base.tar & (wd: /srv/fai/nfsroot)
fai-make-nfsroot finished properly.
Log file written to /var/log/fai/fai-make-nfsroot.log and /srv/fai/nfsroot/var/tmp
cp: cannot stat '/usr/share/doc/fai-doc/examples/simple/*': No such file or directory
Copying the config space examples failed.
Please don't forget to fill out the FAI questionnaire after you've finished your project with FAI.
FAI setup finished.
Log file written to /var/log/fai/fai-setup.log
Im Logfile zur Installation kann man sich das dann noch genauer anschauen
FAI Log Verzeichnis die richtigen Rechte geben.
chown fai:nogroup /var/log/fai
Den TFTP Server anpassen
Die Config vom TFTP Server anpassen. Diese liegt unter /etc/default/tftpd-hpa
Hier muss das TFTP_DIRECTORY auf den Pfad angepasst werden wo in der FAI Config der TFTPROOT angegeben ist.
nano /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp/fai" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"
und neustarten
service tftpd-hpa restart
fai-chboot die Client installation
als erstes ertellen wir uns noch einen alias in der ~/.bashrc damit wir nicht immer die config URL angeben müssen
alias fai-chboot='fai-chboot -u nfs://192.168.101.4/srv/fai/config'
Hier kommt dann die Installation. Ist dann eigentlich so wie bei meinen alten Anleitungen
Schreibe einen Kommentar