Kernel-Panik bei NFS-Boot und fehlendem DHCP-Server

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Tintom
Moderator
Beiträge: 3064
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Kernel-Panik bei NFS-Boot und fehlendem DHCP-Server

Beitrag von Tintom » 28.07.2021 12:41:35

Hallo zusammen,

ich möchte wie hier beschrieben meine Soft-/Hardwarelandschaft etwas vereinheitlichen und einen zentralen NFS-Server als Speicherort verwenden.

Neben Clienten, die das LAN nie verlassen, habe ich auch Laptops, die ich unterwegs benutze und die in verschiedenen Netzwerken oder eben offline genutzt werden. Die Konfiguration soll wie folgt sein: Zuerst wird versucht über das lokale Netzwerk zu booten (der DHCP-Server übergibt dazu zusammen mit der IP-Adresse einen Pfad auf dem das Root-Filesystem liegt), schlägt dies fehl, soll von lokalem Speicher gebootet werden.

Ich versuche mich so nah wie möglich am Standard-Bootprozess von Debian zu orientieren, daher gebe ich beim Systemstart dem Kernel mit boot=fallback ein zusätzliches Bootscript mit auf den Weg. Das Skript sieht wie folgt aus:

Code: Alles auswählen

log_begin_msg "Starting Fallback-Script"

configure_networking #Autoconfig network interfaces
if [ -e /run/net-*.conf ];then
grep "/srv/nfs" /run/net-*.conf > /dev/null
	if [ $? -eq 0 ];then
	log_success_msg "NFS-Server found. Booting..."
	. /scripts/nfs
	fi
else
log_failure_msg "No NFS-Server found. Booting from local drive"
ROOT="LABEL=rootfs"
. /scripts/local
fi
Nun habe ich das Skript unter folgenden Umgebungen getestet:
  1. Aktiver DHCP-Server mit DHCP-Option Rootpath=/srv/nfs -> Skript wird korrekt abgearbeitet, es wird von NFS gebootet
  2. Aktiver DHCP-Server, ohne DHCP-Option Rootpath=/srv/nfs -> Skript wird korrekt abgearbeitet, es wird lokal gebootet
  3. Kein DHCP-Server -> Kernel-Panik
Warum ich bei 3. einen Kernel-Panik erhalte verstehe ich nicht. Hier die Ausgabe der VM: NoPaste-Eintrag41421

Das Skript wird korrekt gestartet, die Funktion configure_networking wird aufgerufen und abgearbeitet. Aber zu dem Punkt if [ -e /run ...] kommt das Skript wohl gar nicht, sonst würde die Meldung über den fehlenden NFS-Server ausgegeben werden.
Es muss also etwas mit der Funktion configure_networking zu tun haben, die ist bei einem Standard-Debian unter /usr/share/initramfs-tools/scripts/functions definiert und in jeder initrd enthalten: https://sources.debian.org/src/initramf ... #L236-L335

Die Ausgabe der VM deutet darauf hin, dass die Funktion auch bis zum Ende abgearbeitet wird. In der Funktion configure_networking ist aber kein Fall definiert, an dem es zu einer Kernel-Panik kommen sollte.

Ich bin etwas ratlos und weiß nicht, wo ich weiter suchen soll. Hat jemand von euch noch einen Rat?

//edit:
Es liegt tatsächlich an der Funktion configure_networking: Es gibt dazu einen Bugreport(Debian Bugreport911727), mit Lösungsvorschlag. Verursacher ist dieses Konstrukt am Ende der Funktion:

if [ -n "${DEVICE}" ]; then
# source specific bootdevice
. "/run/net-${DEVICE}.conf"
else
# source any interface...
# ipconfig should have quit after first response
. /run/net-*.conf
fi


Sofern keine IP-Adresse vergeben wird, liegt auch keine net-XYZ.conf unter /run bereit. Es wird also im else-Block mit source auf eine Datei zugegriffen, die nicht existiert. Das verursacht den Kernel-Panik. Ändert man die Funktion nun ab in:
if [ -n "${DEVICE}" ]; then
# source specific bootdevice
. "/run/net-${DEVICE}.conf"
elif [ -e /run/net-*.conf ]; then
# source any interface...
# ipconfig should have quit after first response
. /run/net-*.conf
else
log_failure_msg "Kein Netzwerk vorhanden"
fi


läuft das Skript ohne Fehler sauber durch.

Benutzeravatar
GregorS
Beiträge: 3124
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Kernel-Panik bei NFS-Boot und fehlendem DHCP-Server

Beitrag von GregorS » 19.08.2021 12:52:09

Danke dafür!

Nur: Ich hatte beim Lesen fast ständig im Kopf, dass es um ein ungelöstes Problem geht. Ich fände gut, wenn der Artikel so getaggt wäre, dass man ihn nicht „überflüssigerweise“ liest.

Grundsätzlich finde ich klasse, dass mal jemand ein sehr spezielles Problem (und eben dessen Lösung) so beschreibt/dokumentiert, dass ein „Normalo“ versteht, warum man im professionellen Zusammenhang einen Haufen Kohle für derartige Lösungen/Leute hinblättert.

Nuja ... Fachkräftemangel, nä.

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Antworten