Zum Inhalt

ZFS Linux LTS aktualisieren (Arch Linux)

📅 Erstellt: 22.11.2025 🔄 Aktualisiert: 23.08.2026

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.

  1. ZFS Linux LTS Modulpaket deinstallieren
    paru -R zfs-linux-lts
  2. Normales Arch Linux Update ausführen, inklusive Kernel-Update
    paru -Syu
  3. In meinem Fall wurde mit o.g. -Syu auch das AUR-Paket zfs-utils automatisch 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)
  4. Reboot ausführen
    systemctl reboot
  5. 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!
  6. Neue initramd bauen mit
    sudo mkinitcpio -P
  7. Reboot ausführen
    systemctl reboot
  8. Prüfung und zfs-utils neu 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]: 
    
  9. Prüfen ob die initramd richtig gebaut wurde und von paru das mkinitcpio -P richtig 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.