ZFS modules cannot be auto-loaded
ZFS-DKMS – Schritt-für-Schritt-Anleitung für Debian 13 (Trixie)
Diese Anleitung fasst die notwendigen Schritte zusammen, um OpenZFS als DKMS-Modul auf Debian 13 zu installieren, nach Kernel-Updates neu zu bauen und typische Fehler (fehlendes zfs.ko, DKMS-Build-Fehler, Secure-Boot) zu beheben. Besonders wichtig ist der Fall, dass ZFS zwar erfolgreich für einen neuen Kernel gebaut wurde, das System aber noch mit einem alten Kernel läuft.
0 Wichtig: Kernel-/ZFS-KompatibilitätLaufender Kernel und DKMS-Modul müssen zusammenpassen
DKMS baut Kernelmodule immer für bestimmte Kernelversionen. modprobe lädt Module aber nur für den aktuell laufenden Kernel. Der aktuell laufende Kernel wird so angezeigt:
uname -r
Der DKMS-Status wird so angezeigt:
dkms status
uname -r einen anderen Kernel dkms neuerstatus, dann ist Beispiel:
uname -r
6.12.74+deb13+1-amd64
dkms status
zfs/2.3.2, 6.12.90+deb13.1-amd64, x86_64: installed
In diesem Beispiel läuft das System noch mit Kernel , zfs-dkms6.12.74+deb13+1-amd64ausZFS stablewurde schlichtaber zu alt sein und der Build scheitert.
Debian-Standard (empfohlen):Nutzefürlinux-image-6.12.90+deb13.1-amd64+gebaut.linux-headers-amd64.modprobeDamit passt in der Regelzfs-dkmszfsausmussstable.dann Neuerfehlschlagen,Kernelweil(z.B.es6.17.x):imNutzefalschenModulverzeichniszfs-dkmsaustrixie-backports(neuere OpenZFS-Versionen enthalten die nötigen Kernel-Anpassungen).
1 Voraussetzungen & Grundlagen
- Root-
ZugriffZugriff,(sudo -ioderentweder direkt alsroot).oder über eine Root-Shell. - Netzwerkzugang zu den Debian-
Repos.Repositories. - Aktiviertes
contrib-Repository, da ZFS in Debian dort liegt. - Optional
(bei SecureBoot):Boot:ModuleMOK-Schlüssel müssensigniertimportiertsein,undsonstbestätigtwerden sie geblockt.werden.
2 Repositories einrichten
ZFS liegt in Debian in contrib. Stelle daher sicher, dass contrib (undaktiv ggf.ist. Optional können non-free, und non-free-firmware) aktivergänzt ist.werden, wenn das System entsprechende Firmware benötigt.
Beispiel für /etc/apt/sources.list oder eine passende Datei unter /etc/apt/sources.list.d/:
deb https:http://deb.debian.org/debian trixie main contrib non-free non-free-firmware
deb https:http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb https:http://deb.debian.org/debian trixie-updates main contrib non-free non-free-firmware
Optional (nurfür wenn du einen neueren Kernel fährst oder neuere ZFS-Version brauchst): Backports aktivieren:Backports:
deb https:http://deb.debian.org/debian trixie-backports main contrib non-free non-free-firmware
Anschließend:Danach die Paketlisten aktualisieren:
apt update
3 Benötigte Pakete installieren
Basis:
apt install build-essential dkms linux-headers-$(uname -r) zfs-dkms zfsutils-linuxEmpfohlen fürist die Installation der Kernel-Updates: Metapakete,und damitHeader-Metapakete. Dadurch werden Kernel &und Header zusammengemeinsam laufen:aktuell gehalten, statt dass man irgendwann mit einem Kernel ohne passende Header herumsteht. Das ist ungefähr so sinnvoll wie ein Fahrrad ohne Vorderrad, nur mit mehr Fehlermeldungen.
apt install linux-image-amd64 linux-headers-amd64
WennDanach ZFS und die Build-Werkzeuge installieren:
apt install build-essential dkms zfs-dkms zfsutils-linux
Falls DKMS überwegen "pahole notoder found"BTF-Erzeugung stolpert: (kommt vor, leider)fehlschlägt:
apt install dwarves
/lib/modules/$(uname -r)/build und /lib/modules/$(uname -r)/source.4 Nach Kernel- oder Header-Update neu starten
Wenn ein neuer Kernel installiert wurde, läuft das System nicht automatisch mit diesem Kernel. Der neue Kernel wird erst nach einem Neustart verwendet.
Vor dem Neustart kann man prüfen, welche Kernelmodul-Verzeichnisse vorhanden sind:
ls /lib/modules
Außerdem den DKMS-Status prüfenfen:
dkms status
Wenn ZFS für einen neuen Kernel gebaut wurde, aber uname -r noch den alten Kernel zeigt:
reboot
Nach dem Neustart erneut prüfen:
uname -r
dkms status
Der laufende Kernel aus uname -r sollte jetzt zu einem ZFS-Eintrag aus dkms status passen.
5 ZFS-Modul bauenladen &und installieren (gezielt)prüfen
Wenn duder dkmslaufende autoinstall nutzt, baut DKMS alle Module (z.B. auch NVIDIA)Kernel und duder bekommstDKMS-Eintrag amzusammenpassen, Ende nur "alles kaputt". Für ZFS ist es oft besser, gezieltkann das ZFS-Modul geladen werden:
modprobe zfs
Danach prüfen:
lsmod | sed -n '/^zfs/p'
zpool status -v
zpool status melden, dass keine Pools vorhanden sind. Das ist dann kein Fehler des Kernelmoduls.6 ZFS gezielt für den laufenden Kernel bauen
Diesen Schritt nur verwenden, wenn dkms status keinen installierten ZFS-Eintrag für den aktuell laufenden Kernel zeigt.
ZFS-Version aus dem installierten Paket ermitteln:
ZFS_VER="$(dpkg-query -W -f='${Version}\n' zfs-dkms | sed 's/-.*//')"
echo "$ZFS_VER"
ZFS für den aktuell laufenden Kernel bauen und installieren:
dkms install -m zfs -v "$ZFS_VER" -k "$(uname -r)"
Danach laden:
modprobe zfs
Wenn der Build fehlschlägt, das DKMS-Log ansehen:
less /var/lib/dkms/zfs/"$ZFS_VER"/build/make.log
7 Häufiger Fehler: Header für den aktuell laufenden Kernel fehlen
Typisches Fehlerbild:
apt install linux-headers-$(uname -r)
Fehler: Paket linux-headers-6.12.74+deb13+1-amd64 kann nicht gefunden werden.
Fehler: Mittels des Musters »linux-headers-6.12.74+deb13+1-amd64« konnte kein Paket gefunden werden.
Das bedeutet meistens: Der aktuell laufende Kernel ist nicht mehr der Kernel, für den die Repositories aktuell Header anbieten. Statt ewig nach alten Headern zu bauen:suchen, sollte man die Kernel- und Header-Metapakete installieren:
apt install linux-image-amd64 linux-headers-amd64
Wenn DKMS dabei ZFS erfolgreich für den neuen Kernel baut, danach neu starten:
reboot
Nach dem Neustart:
uname -r
dkms status
modprobe zfs
8 Backports nur bei Bedarf verwenden
Backports sind sinnvoll, wenn ein neuerer Kernel verwendet wird oder wenn die ZFS-Version aus Stable zu alt für den verwendeten Kernel ist.
ZFS aus Backports installieren:
apt install -t trixie-backports zfs-dkms zfsutils-linux
Wenn auch der Kernel aus Backports verwendet werden soll:
apt install -t trixie-backports linux-image-amd64 linux-headers-amd64
Danach neu starten:
reboot
Nach dem Neustart prüfen:
uname -r
dkms status
modprobe zfs
zpool status -v
9 Secure Boot prüfen
Wenn Secure Boot aktiv ist, können nicht korrekt signierte oder nicht akzeptierte Module blockiert werden.
Typische Fehlermeldungen:
modprobe: ERROR: could not insert 'zfs': Key was rejected by service
Required key not available
Secure-Boot-Status prüfen:
mokutil --sb-state
Wenn Secure Boot aktiv ist, gibt es zwei saubere Möglichkeiten:
- Secure Boot im UEFI deaktivieren.
- Den DKMS/MOK-Schlüssel importieren und beim nächsten Boot bestätigen.
Beim DKMS-Build sieht man häufig Hinweise wie:
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Dann kann der öffentliche Schlüssel importiert werden:
mokutil --import /var/lib/dkms/mok.pub
Danach neu starten und im MOK-Menü bestätigen.
10 Alte Kernel nicht vorschnell entfernen
Alte Kernel sollten erst entfernt werden, wenn ZFS mit dem neuen Kernel erfolgreich geladen wurde.
uname -r
dkms status
modprobe zfs
zpool status -v
Wenn alles funktioniert, können alte nicht mehr benötigte Pakete später bereinigt werden:
apt autoremove
11 Problemlösung und häufige Stolperfallen
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
modprobe: FATAL: Module zfs not found in directory /lib/modules/<kernel> |
ZFS wurde nicht für den aktuell laufenden Kernel gebaut. | uname -r und dkms status vergleichen. |
linux-headers-$(uname -r) kann nicht gefunden werden. |
Der laufende Kernel ist älter oder stammt nicht mehr aus den aktuell verfügbaren Repositories. | linux-image-amd64 und linux-headers-amd64 installieren, danach neu starten. |
DKMS zeigt ZFS für einen neueren Kernel als uname -r. |
Der neue Kernel wurde installiert, aber noch nicht gebootet. | System neu starten und danach erneut prüfen. |
DKMS-Build schlägt wegen pahole fehl. |
Das Paket dwarves fehlt. |
apt install dwarves |
| Modul wird wegen Schlüssel abgelehnt. | Secure Boot blockiert das Modul. | Secure Boot deaktivieren oder MOK-Schlüssel enrollen. |
| Build bricht mit Kernel-API-Fehlern ab. | Die installierte ZFS-Version passt nicht zum verwendeten Kernel. | ZFS aus trixie-backports nutzen oder auf den Debian-Stable-Kernel wechseln. |
12 Schnellreferenz
Standardfall Debian 13 Stable
apt update
apt install linux-image-amd64 linux-headers-amd64
apt install build-essential dkms zfs-dkms zfsutils-linux
reboot
Nach dem Neustart:
uname -r
dkms status
modprobe zfs
zpool status -v
Wenn ZFS für den laufenden Kernel fehlt
ZFS_VER="$(dpkg-query -W -f='${Version}\n' zfs-dkms | sed 's/-.*//')"
dkms install -m zfs -v "$ZFS_VER" -k "$(uname -r)"
modprobe zfs
Wenn ein neuerer Backports-Kernel genutzt wird
apt install -t trixie-backports linux-image-amd64 linux-headers-amd64
apt install -t trixie-backports zfs-dkms zfsutils-linux
reboot
Wenn das fehlschlägt: Log ansehen: Danach:/var/lib/dkms/zfs/<version>/build/make.log
6 Modul laden & ZFS prüfen
uname -r
dkms status
modprobe zfs
zpool status -v
713 Spezialfall:Praxisbeispiel: NeuerZFS wurde gebaut, aber der alte Kernel (z.B.läuft 6.17.x) – ZFS aus Backportsnoch
WennAusgangslage:
uname -r
6.12.74+deb13+1-amd64
Die Header für diesen Kernel deutlichsind neuernicht ist als der Debian-Standardkernel, aktualisiere ZFS über Backports:installierbar:
apt install -tlinux-headers-6.12.74+deb13+1-amd64
Fehler: zfs-dkmsPaket zfsutils-linuxlinux-headers-6.12.74+deb13+1-amd64 kann nicht gefunden werden.
Fehler: Mittels des Musters »linux-headers-6.12.74+deb13+1-amd64« konnte kein Paket gefunden werden.
Danach daswerden ZFS-DKMS-Moduldie wieMetapakete obeninstalliert:
apt installiereninstall linux-image-amd64 linux-headers-amd64
DKMS baut ZFS erfolgreich für den neuen Kernel:
Autoinstall of module zfs/2.3.2 for kernel 6.12.90+deb13.1-amd64 (Abschnittx86_64)
5).Building
8 Secure-Boot-Hinweis
Bei aktiviertem Secure Boot werden unsignierte Module nicht geladen. Typische Fehlermeldungen sind z.B. Required key not available oder Key was rejected.
Secure Boot im UEFI deaktivieren, oder
MOK-Schlüssel importieren und enrollen (mokutil --import module(s)................................................. done.
Installing /lib/modules/6.12.90+deb13.1-amd64/updates/dkms/zfs.ko.xz
Autoinstall on 6.12.90+deb13.1-amd64 succeeded for module(s) zfs.),
Trotzdem beimschlägt nächstenmodprobe Bootzfsbestätigen.fehl:
9 Problemlösung & häufige Stolperfallen
|
Der Grund ist simpel: Das System läuft noch mit | falsche Kernel ist aktiv.
Korrekte Lösung:
Nach dem Neustart:
Wenn |
| funktionieren.
Hinweis: | Wenn | Neustart
| ||
10 Schnellreferenz (TL;DR)
# Repos ok? (contrib aktiv) + update
apt update
# Basis
apt install build-essential dkms linux-headers-$(uname -r) zfs-dkms zfsutils-linux
# Optional: falls "pahole not found"
apt install dwarves
# ZFS gezielt bauen/installen
ZFS_VER="$(dpkg-query -W -f='${Version}\n' zfs-dkms | sed 's/-.*//')"
dkms install -m zfs -v "$ZFS_VER" -k "$(uname -r)"
# Laden & prüfen
modprobe zfs
zpool status -vwurde.