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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*