ZFS Linux LTS aktualisieren (Arch Linux)
Für mein NAS nutze ich seit über einem Jahrzehnt schon ZFS. Hier muss man jedoch in Arch Linux die Kernelmodule regelmäßig manuell bauen bei Linux-Kernel-Updates. Ich nutze den LTS Kernel, also benötige ich auch das ZFS LTS Paket aus dem AUR.
Daher hier mal eine Auflistung wie die Vorgehensweise sicher und einfach von Statten gehen kann.
ACHTUNG!
Zunächst prüfen, ob im AUR bereits die gleiche Kernel-Version vorhanden ist. Sollte das nicht der Fall sein bitte den Linux-Kernel nicht updaten. paru oder pacman mit -Syu nur mit ignore der entsprechenden Linux-Kernelpakete ausführen!
Prüfung der Versionsstände:
$ pacman -Ss linux-lts
core/linux-lts 6.12.58-1 [Installiert]
The LTS Linux kernel and modules
core/linux-lts-headers 6.12.58-1 [Installiert]
Headers and scripts for building modules for the LTS Linux kernel
$ paru -Ss zfs-linux-lts
aur/zfs-linux-lts 2.3.5_6.12.58.1-1 [+83 ~0.29]
Kernel modules for the Zettabyte File System.
aur/zfs-linux-lts-headers 2.3.5_6.12.58.1-1 [+83 ~0.29]
Kernel headers for the Zettabyte File System.
Linux LTS-Kernel Version: 6.12.58-1
ZFS LTS-Kernelmodule Version: 6.12.58.1-1
Das sollte also passen!
Update-Ablauf¶
Die Kiste is elends lahm, Stromspar-CPU von 2014 oder so? 4/4 C/T AMD Jaguar 5350 APU. Daher dauern Updates, Kompilierung, Reboots und einiges andere recht lange.
Ein Reboot z.B. kann 3-5 Minuten dauern. Evtl. hier mal journalctl nutzen zur Überprüfung, ob Shutdown oder Boot generell problematisch sind und TImeouts von 120s haben.
- ZFS Linux LTS Modulpaket deinstallieren
paru -R zfs-linux-lts - Normales Arch Linux Update ausführen, inklusive Kernel-Update
paru -Syu - In meinem Fall wurde mit o.g. -Syu auch das AUR-Paket
zfs-utilsautomatisch neu gebaut. Warum? k.A. bisher... könnte man ggf. skippen, da ich das Paket nach einem Reboot sowieso neu bauen lasse (fühlt sich für mich am sichersten an) - Reboot ausführen
systemctl reboot - ZFS Linux LTS Modulpaket und Utils Paket (neu)installieren gegen aktuelle Kernelheaders
paru -S zfs-linux-lts zfs-utils
zfs-utils hat hier einfach aus dem Cache installiert, da ich dieses schon vor dem Reboot gebaut habe... das bleibt zu überprüfen, da ich es ja SICHER haben wollte! - Neue initramd bauen mit
sudo mkinitcpio -P - Reboot ausführen
systemctl reboot - Prüfung und
zfs-utilsneu bauen
$ uname -a Linux Mein_NAS 6.12.58-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 14 Nov 2025 05:38:58 +0000 x86_64 GNU/Linux $ zpool status pool: aca state: ONLINE scan: scrub repaired 0B in 03:34:52 with 0 errors on Sun Nov 2 14:21:49 2025 config: NAME STATE READ WRITE CKSUM aca ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-TOSHIBA_DT01ACA200_XXXXXXXXX ONLINE 0 0 0 ata-TOSHIBA_DT01ACA200_XXXXXXXXX ONLINE 0 0 0 errors: No known data errors pool: seagate state: ONLINE scan: scrub repaired 0B in 10:33:51 with 0 errors on Mon Nov 3 23:35:02 2025 config: NAME STATE READ WRITE CKSUM seagate ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ata-TOSHIBA_MG10ADA800E_XXXXXXXXXXXX ONLINE 0 0 0 ata-TOSHIBA_MG10ADA800E_XXXXXXXXXXXX ONLINE 0 0 0 ata-TOSHIBA_MG10ADA800E_XXXXXXXXXXXX ONLINE 0 0 0 errors: No known data errors $ paru -Scc Zwischenspeicher-Verzeichnis: /var/cache/pacman/pkg/ :: Möchten Sie ALLE Dateien aus dem Zwischenspeicher entfernen? [j/N] j Alle Dateien aus dem Zwischenspeicher entfernt … Datenbank-Verzeichnis: /var/lib/pacman/ :: Möchten Sie ungenutzte Repositorien entfernen? [J/n] j Ungenutzte Sync-Repositorien werden entfernt … Clone-Verzeichnis: /home/marquisor/.cache/paru/clone :: ALLE AUR-Pakete aus dem Cache entfernen? [j/N]: j Diff-Verzeichnis: /home/marquisor/.cache/paru/diff :: Alle gespeicherten Diffs entfernen? [J/n]: j [marquisor@Mein_NAS ~]$ paru -S zfs-utils :: Löse Abhängigkeiten auf… :: Konflikte berechnen… :: Interne Konflikte berechnen… Aur (1) zfs-utils-2.3.5-1 :: Mit Überprüfung fortfahren? [J/n]: - Prüfen ob die initramd richtig gebaut wurde und von paru das
mkinitcpio -Prichtig durchgelaufen sind
(6/6) Updating linux initcpios... ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default' ==> Using default configuration file: '/etc/mkinitcpio.conf' -> -k /boot/vmlinuz-linux-lts -g /boot/initramfs-linux-lts.img ==> Starting build: '6.12.58-1-lts' -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [microcode] -> Running build hook: [modconf] -> Running build hook: [kms] -> Running build hook: [keyboard] -> Running build hook: [keymap] -> Running build hook: [consolefont] -> Running build hook: [block] -> Running build hook: [filesystems] -> Running build hook: [fsck] -> Running build hook: [zfs] ==> Generating module dependencies ==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-lts.img' -> Early uncompressed CPIO image generation successful ==> Initcpio image generation successful ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback' ==> Using default configuration file: '/etc/mkinitcpio.conf' -> -k /boot/vmlinuz-linux-lts -g /boot/initramfs-linux-lts-fallback.img -S autodetect ==> Starting build: '6.12.58-1-lts' -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [microcode] -> Running build hook: [modconf] -> Running build hook: [kms] ==> WARNING: Possibly missing firmware for module: 'ast' -> Running build hook: [keyboard] ==> WARNING: Possibly missing firmware for module: 'xhci_pci_renesas' -> Running build hook: [keymap] -> Running build hook: [consolefont] -> Running build hook: [block] ==> WARNING: Possibly missing firmware for module: 'qed' ==> WARNING: Possibly missing firmware for module: 'wd719x' ==> WARNING: Possibly missing firmware for module: 'bfa' ==> WARNING: Possibly missing firmware for module: 'qla1280' ==> WARNING: Possibly missing firmware for module: 'qla2xxx' ==> WARNING: Possibly missing firmware for module: 'aic94xx' -> Running build hook: [filesystems] -> Running build hook: [fsck] -> Running build hook: [zfs] ==> Generating module dependencies ==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-lts-fallback.img' -> Early uncompressed CPIO image generation successful ==> Initcpio image generation successful
$ paru -Suy :: Paketdatenbanken werden synchronisiert … core ist aktuell extra ist aktuell :: Vollständige Systemaktualisierung wird gestartet … Es gibt nichts zu tun :: Looking for PKGBUILD upgrades... :: Nach AUR-Upgrades suchen... :: Nach devel-Upgrades suchen... es gibt nichts zu tun
Soweit so gut...
Arch ZFS Repository (2026)¶
Hinkt immer noch stark hinterher mit den Versionen...
zfs-dkms - Die automatisierte Lösung?¶
zfs-linux-lts ist der manuelle Weg, zfs-dkms soll angeblich der wartungsfreie sein.
ACHTUNG! Vorher in der etc/pacman.conf alle [archzfs] Einträge kommentieren, damit dieses Repo nicht mehr verwendet wird! Weiterhin trage ich in IgnorePkg = linux linux-headers ein, da ich Linux-LTS verwende und dabei bleiben will.
Nun gut, stellen wir das Ganze mal um:
sudo pacman -S linux-lts linux-lts-headers dkms
Dann zfs-dkms installieren, zfs-linux-lts Entfernung wird zugestimmt:
yay -S zfs-dkms zfs-utils
Status überprüfen:
dkms status
Im besten/normalen Fall heisst es dann:
zfs/2.4.3, 6.18.44-1-lts, x86_64: installed
Zur Sicherheit KANN man nochmal das Boot-Image erstellen:
sudo mkinitcpio -P
Danach sollte sich der Rechner sicher neustarten lassen und die Pools natürlich auch wieder erscheinen.
Die Bauzeit von zfs-dkms oder zfs generell beträgt auf meinem AMD Jaguar NAS (Stromspar CPU von ~2015) ca. 12 Minuten. Das DKMS Modul, welches bei JEDEM Kernel-Update automatisch neu gebaut wird (das ist der Zweck von DKMS) braucht in etwa genauso lange.
So, ein Reboot war voller Erfolg. Das war mal einfacher als die manuelle Methode mit zfs-linux-lts und deren ständigen Kernel ./. ZFS Versions-Diskrepanzen! Eine Erleichterung definitiv.