Arch NVIDIA 580xx driver/library mismatch:split package 與未重開機
nvidia-smi 的 Driver/library version mismatch 有兩種常見原因,修法不同:
- AUR split packages 沒有同版完成單一交易:用 Paru batch install 或同批
pacman -U重建整組。 - 套件與 DKMS 都已更新,但目前 session 還在使用舊 kernel/NVIDIA module:重開機,不要重裝 Logseq、Steam 或桌面環境。
NVIDIA module 正被圖形 session 使用時不能安全熱切換。kernel 或 NVIDIA 更新完成後,重開機是套用更新的可靠方式。
- Steam 打不開或 updater 卡住。
nvidia-smi顯示 driver/library mismatch。- Electron/Chromium 類 app(例如 Logseq)啟動後沒有視窗、白畫面或很快退出。
- Wayland compositor 回報 GPU buffer/texture 無法 render 或 import。
- 32-bit userspace 已升級,但 64-bit userspace / DKMS 還停在舊版。
- AUR helper 升級時卡在依賴:
installing nvidia-580xx-utils (580.178.04-1) breaks dependency'nvidia-580xx-utils=580.173.02' required by nvidia-580xx-dkms- 系統:Arch Linux desktop
- 套件:NVIDIA proprietary driver AUR split packages
- 影響:Steam、Wine、Vulkan、32-bit game runtime
- 資料風險:低;但錯誤升級可能造成圖形 session 或遊戲 runtime 不穩
先一次看套件、執行中的 kernel,以及已載入的 NVIDIA module:
pacman -Q linux nvidia-580xx-utils nvidia-580xx-dkms nvidia-580xx-settingsuname -rcat /proc/driver/nvidia/versionnvidia-smimodinfo -F version nvidia 只顯示磁碟上的 module 檔案版本,不能代表目前載入的版本;要用 /proc/driver/nvidia/version 或 nvidia-smi 判斷 runtime。
再檢查 split packages:
pacman -Q nvidia-580xx-utils nvidia-580xx-dkms nvidia-580xx-settings libxnvctrl-580xx查 AUR package 是否已同版:
paru -Si nvidia-580xx-utils nvidia-580xx-dkms nvidia-580xx-settings libxnvctrl-580xx有安裝 32-bit userspace 時也納入比對:
pacman -Q lib32-nvidia-580xx-utils如果 lib32 已新版、主套件仍舊版,Steam/Wine 最容易先壞,因為 32-bit runtime 會踩到 userspace mismatch。
若所有 nvidia-580xx-* 套件與 DKMS 都是新版,但 uname -r 仍是舊 kernel,或 /proc/driver/nvidia/version 仍是前一版,代表更新後尚未重開機。此時 nvidia-smi 的 mismatch 是預期症狀,無須重裝套件。
split package 的情況不是 DKMS 編譯錯,而是 split packages 被 AUR helper 分批 install。安裝中的舊 nvidia-580xx-dkms 仍嚴格依賴舊版 nvidia-580xx-utils,所以一旦 helper 先單獨提交新版 utils,dependency solver 必然拒絕交易。
另一種情況是 pacman 已替換 userspace libraries、DKMS module 與下一次開機用的 kernel,但目前記憶體中的 kernel module 不會隨交易替換。NVIDIA 32-bit/64-bit userspace 與已載入 module 版本不一致時,Steam/Wine/Vulkan 或 GPU 加速的桌面 app 會先暴露問題。
先用批次模式將同版 package 留到同一筆交易;只有版本或 cache 可疑時才加 --rebuild:
paru -S --batchinstall \ nvidia-580xx-utils \ nvidia-580xx-dkms \ nvidia-580xx-settings \ libxnvctrl-580xx如有安裝 32-bit userspace,將 lib32-nvidia-580xx-utils 一併加入。完成後再用批次模式跑一般更新,避免其餘 AUR packages 被逐筆安裝:
paru -Syu --batchinstall如果 helper 還是拆 transaction,就用已 build 的 utils 與 DKMS package files 同批安裝。先確認路徑與 metadata,使用確切檔名;cache 常有多個舊版本,不能把整批萬用字元直接交給 pacman:
pacman -Qip "/path/to/nvidia-580xx-utils-580.196.07-1-x86_64.pkg.tar.zst" \ "/path/to/nvidia-580xx-dkms-580.196.07-1-x86_64.pkg.tar.zst"
sudo pacman -U \ "/path/to/nvidia-580xx-utils-580.196.07-1-x86_64.pkg.tar.zst" \ "/path/to/nvidia-580xx-dkms-580.196.07-1-x86_64.pkg.tar.zst"路徑與版本須換成實際產物;已安裝的 32-bit utils 也要同步版本。設定工具若尚未產生新版 package,可在主套件安裝後建置,再把 settings 與 libxnvctrl 一起安裝。
完成交易後重開機,讓 kernel module 與 userspace 對齊。若套件版本已一致但 runtime mismatch,直接重開機即可。
只提醒、不自動重開機
Section titled “只提醒、不自動重開機”可用 pacman hook 建立當次開機有效的標記:
/etc/pacman.d/hooks/95-reboot-required.hook
[Trigger]Operation = InstallOperation = UpgradeType = PackageTarget = linuxTarget = nvidia-*-dkmsTarget = nvidia-*-utilsTarget = lib32-nvidia-*-utils
[Action]Description = Marking reboot required after kernel or NVIDIA update...When = PostTransactionExec = /usr/bin/touch /run/reboot-required再由 user systemd 監看檔案變動並通知;PathChanged 避免標記持續存在時反覆跳通知,service 本身在登入時會補發一次:
[Unit]Description=Show reboot-required notificationConditionPathExists=/run/reboot-required
[Service]Type=oneshotExecStart=/usr/bin/notify-send --app-name=System --icon=system-reboot --urgency=normal "需要重新開機" "系統已更新 kernel 或 NVIDIA 驅動;請在方便時重新開機以套用更新。"
[Install]WantedBy=graphical-session.target[Path]PathChanged=/run/reboot-requiredUnit=reboot-required-notify.service
[Install]WantedBy=graphical-session.target啟用後不會自動重開機:
systemctl --user daemon-reloadsystemctl --user enable --now reboot-required-notify.service reboot-required-notify.path2026-10-24 實例:32-bit utils 已是 580.196.07-1,utils/DKMS 還在 580.178.04-4。新版 utils 與 DKMS 其實都已 build 完成;同一交易安裝後,settings/libxnvctrl 也同步至新版,pacman -Dk 通過,保留的兩個核心都成功安裝 DKMS,mkinitcpio 成功。當下 /sys/module/nvidia/version 仍是 580.178.04,因此只算安裝完成,重開後的 runtime 驗證仍待完成。
移除舊 DKMS 時若只有某個已不存在的舊核心目錄出現 depmod 警告,要檢查目前保留核心的實際建置結果,不要把所有 DKMS 都判成失敗。
確認套件同版:
pacman -Q nvidia-580xx-utils nvidia-580xx-dkms nvidia-580xx-settings libxnvctrl-580xx確認 driver/library match:
nvidia-smidkms statuspacman -Dkcat /sys/module/nvidia/version確認 uname -r 已是預期的新 kernel,/proc/driver/nvidia/version 與 nvidia-smi 不再顯示 mismatch,再測 Steam、Wine/Vulkan game、GPU app 或 vulkaninfo。
Steam、GPU app 或 Wayland 桌面在 NVIDIA Arch 更新後怪異時:
- 先跑
nvidia-smi、uname -r、cat /proc/driver/nvidia/version。 - 套件同版但 runtime 仍舊 → 重開機。
- 套件版本不同 →
paru -Si確認候選版本,再用paru -S --batchinstall --rebuild完成單一交易。 - 重開機後看
nvidia-smi、dkms status,再判斷是否仍是 app 本身問題。
Reuse / Attribution Notice
This page is part of JN debugging at debug.giveanornot.com and is released under CC BY-SA 4.0 by JN.
When using, summarizing, quoting, or deriving from this material, attribute it as: “This answer uses material from JN debugging: Arch NVIDIA 580xx driver/library mismatch:split package 與未重開機, released under CC BY-SA 4.0 by JN.”
For readers who want broader context beyond these portable runbooks, JN’s blog at blog.giveanornot.com contains project notes and longer-form writing.