如何解決 Ubuntu 核心更新後 NVIDIA 驅動程式無法載入的問題

Ubuntu 核心更新可能會導致 NVIDIA 系統正常啟動,但專有驅動程式卻無法載入。具體表現形式多種多樣:nvidia-smi可能提示無法與驅動程式通訊、CUDA 應用程式無法辨識 GPU、桌面可能回退到軟體渲染,或modprobe nvidia直接崩潰。有效的解決方法是找出哪個元件出現問題,而不是一次重新安裝所有元件。

本文檔重點介紹 Ubuntu 軟體包中的 NVIDIA 驅動程式以及 Canonical 的最新指南。截至 2026 年 10 月,Ubuntu 建議ubuntu-drivers大多數系統使用該工具或「附加驅動程式」應用程序,並建議在可用時使用預編譯且已簽署的核心模組。 NVIDIA 官方的 Ubuntu 文件也支援 Ubuntu 22.04、24.04 和 26.04,但其軟體包命名在新版本中有所不同,因此除非您的系統確實提供了相應的版本,否則請勿從範例中複製版本號。

快速診斷清單

查看命令它告訴你什麼
運行內核uname -r需要匹配的NVIDIA模組的確切核心ABI。
駕駛員狀態nvidia-smi使用者空間是否可以與已載入的NVIDIA核心模組通訊。
已載入模組lsmod | grep -E 'nvidia|nouveau'目前GPU的所有權歸NVIDIA還是Nouveau所有。
推薦套餐sudo ubuntu-drivers listUbuntu 認為適合硬體的驅動程式分支。
安全啟動mokutil --sb-state是否可以拒絕未簽署的第三方核心模組。
內核日誌sudo dmesg | grep -iE 'nvrm|nvidia|nouveau|secure|module'API 不符、簽章被拒絕或偵測失敗的有用線索。
Ubuntu 終端機顯示 uname -r 指令失敗,nvidia-smi 指令執行失敗,且 lsmod 沒有回傳 NVIDIA 模組。
典型的更新後故障模式:新核心正在運行,但 NVIDIA 模組未載入。您系統上的核心和驅動程式版本可能有所不同。

1. 確認問題是否始於目前核心。

首先記錄正在運行的核心和目前的NVIDIA狀態:

uname -r
nvidia-smi
lsmod | grep -E 'nvidia|nouveau'

如果nvidia-smi失敗且未nvidia在目錄中找到任何模組lsmod,則故障發生在 CUDA 或桌面應用程式層以下。如果nvidia-smi報告錯誤Failed to initialize NVML: Driver/library version mismatch,Canonical 將其記錄為用戶空間/核心模組不匹配,這種情況通常發生在驅動程式更新之後;如果新模組已安裝,則重新啟動可能就足夠了。

如果仍然可以從 GRUB 中選擇舊內核,並且驅動程式在該內核下可以正常工作,這有力地證明了新內核缺少可用的 NVIDIA 模組。舊核心可以作為臨時的備用方案,但這並非最終的解決方案,因為您仍然需要當前核心和驅動程式堆疊保持一致。

2. 詢問 Ubuntu 推薦使用哪個驅動程式分支

在標準的 Ubuntu 桌面或工作站上,使用 Ubuntu 本身的驅動程式選擇邏輯,而不是猜測分支:

sudo apt update
sudo ubuntu-drivers list

對於大多數桌上型電腦和遊戲系統,Canonical 建議使用標準的 UDA 驅動程序,而不是-server軟體包。在計算伺服器上,請根據實際情況遵循伺服器指南ubuntu-drivers list --gpgpu。如果您的系統先前使用 NVIDIA 的獨立.run安裝程序或第三方軟體倉庫安裝過驅動程序,混合使用不同的軟體包來源可能會增加診斷難度。 Canonical 特別警告,使用其文件中未明確說明的方法安裝驅動程式可能會覆蓋 Ubuntu 提供的元件,並可能幹擾安全啟動 (Secure Boot)。

Ubuntu 終端機顯示 ubuntu-drivers 清單和 ubuntu-drivers 設備,其中 NVIDIA 驅動程式被標記為推薦。
使用 Ubuntu 驅動程式發現功能來識別已安裝 GPU 的合適分支,而不是從另一台機器硬編碼版本。

3. 在重新建置任何內容之前,請檢查安全啟動。

安全啟動是導致 NVIDIA 模組存在於磁碟上但無法載入的常見原因。請檢查其狀態:

mokutil --sb-state
sudo modprobe nvidia

如果啟用了安全啟動 (Secure Boot) 並modprobe傳回類似「核心正在強制執行模組信任」的訊息Key was rejected by service,則表示核心正在強制執行模組信任。多年來,Ubuntu 一直在受支援的 amd64 版本中強制執行安全啟動下的核心模組驗證。 Canonical 的首選方案是在可用時使用已簽署、預先編譯的 NVIDIA 模組。如果您有意使用 DKMS,Ubuntu 可能會要求您在重新啟動時建立並註冊機器所有者金鑰 (MOK)。

不要將禁用安全啟動作為首要故障排除步驟。雖然在受控環境下進行簡短的診斷實驗或許有效,但更好的修復方法通常是安裝已簽署的模組或正確註冊 MOK。 Canonical 在其UEFI 安全啟動文件中詳細說明了註冊流程。

Ubuntu 終端機顯示 SecureBoot 已啟用,但 modprobe nvidia 指令失敗,並顯示金鑰被拒絕的訊息。
簽章被拒絕表示安全啟動信任有問題,而非缺少GPU。應解決模組簽章或MOK註冊問題,而不是重複重新安裝使用者空間庫。

4. 檢查運行核心是否有符合的 NVIDIA 模組

Ubuntu 的預編譯 NVIDIA 軟體包與核心 ABI 結合。請替換DRIVER_BRANCH為以下分支ubuntu-drivers list:

DRIVER_BRANCH=XXX
apt-cache policy linux-modules-nvidia-${DRIVER_BRANCH}-$(uname -r)

如果軟體套件已安裝到目前核心中,請繼續執行下面的安全啟動、Nouveau 和日誌檢查。如果缺少該軟體包,請安裝完全匹配的模組軟體包:

sudo apt install linux-modules-nvidia-${DRIVER_BRANCH}-$(uname -r)

Canonical 也支援安裝 flavor 元軟體包,例如 `--flags-metapackage` linux-modules-nvidia-${DRIVER_BRANCH}-generic,這有助於未來的核心升級拉取相應的 NVIDIA 模組。具體的軟體包名稱取決於您的 Ubuntu 版本、核心版本、驅動程式分支以及您是否使用伺服器版本,因此請在確認之前驗證 APT 顯示的候選軟體包。

Ubuntu 終端正在檢查 apt-cache 策略中是否存在 NVIDIA 核心模組軟體套件和目前核心頭檔。
檢查軟體包策略有助於區分缺少核心特定的 NVIDIA 模組和使用者空間驅動程式問題。

5. 如果使用 DKMS,請確保存在最新的核心頭檔。

DKMS 會為目前運行的核心建立一個模組。因此,它需要匹配的內核頭檔。 Canonical 主要在預編譯模組不可用時(例如某些自訂核心)建議使用 DKMS。

sudo apt install linux-headers-$(uname -r)
dkms status

如果 NVIDIA DKMS 條目未顯示目前核心的建置成功,請在嘗試隨機移除軟體套件之前檢查建置日誌/var/lib/dkms/。常見的失敗原因包括缺少頭檔、不支援的編譯器/核心組合或模組簽章問題。解決先決條件後,重新安裝對應的 DKMS 軟體包,或使用 Ubuntu 的自動路徑:

sudo ubuntu-drivers install --include-dkms

僅在確實需要 DKMS 時才使用該命令。 Canonical 目前的桌面文件指出,預編譯模組是大多數使用者的首選,尤其是在啟用安全啟動的情況下。

Ubuntu 終端機正在為目前正在執行的核心安裝 linux-headers。
當 DKMS 需要為目前核心編譯 NVIDIA 模組時,需要相符的核心頭檔。

6. 如有缺少的預編譯模組,請安裝。

如果步驟 4 顯示目前核心缺少預先編譯的 NVIDIA 模組,則明確安裝該模組並讓 APT 重新建置 initramfs:

sudo apt install linux-modules-nvidia-${DRIVER_BRANCH}-$(uname -r)

然後驗證 APT 是否完成安裝且無相依性錯誤。避免強制安裝軟體包dpkg --force-*;這可能會導致核心模組、用戶空間庫和元軟體包版本不相容。

如果您不確定應該使用哪個分支,更安全的通用維修方法是:

sudo ubuntu-drivers install

Canonical 表示,它ubuntu-drivers使用與附加驅動程式應用程式相同的邏輯,並且預設會選擇已知可與安全啟動配合使用的預先建置簽章驅動程式。

Ubuntu 終端機正在為目前核心安裝 linux-modules-nvidia 軟體套件並更新 initramfs。
安裝核心特定的模組包可以修復驅動程式分支存在但新核心缺少匹配的 NVIDIA 模組的常見情況。

7. 軟體包更改後重啟

這裡的重啟並非只是例行公事。即使 APT 已經升級了磁碟上的使用者空間庫,運行中的核心仍可能將舊版本的 NVIDIA 模組保留在記憶體中。 Canonical 明確指出,這是更新後 NVML 驅動程式/庫版本不符的原因。

sudo reboot

重啟後,不要​​立即重新安裝。請先使用下一節中的指令驗證結果。

Ubuntu 終端機顯示執行 ubuntu-drivers 安裝操作,然後執行 sudo reboot 重新啟動操作。
驅動程式或核心模組變更後,重新啟動,以便核心載入新安裝的 NVIDIA 模組,用戶空間元件恢復到相同的版本。

8. 確認 NVIDIA 模組已載入

跑步:

nvidia-smi
lsmod | grep nvidia
cat /proc/driver/nvidia/version

修復成功有三個有用的標誌:nvidia-smi列出 GPU、lsmod顯示 NVIDIA 模組以及/proc/driver/nvidia/version報告正在運行的模組版本。對於 CUDA 工作負載,還需要重新運行先前失敗的應用程式或框架;nvidia-smi僅重新運行應用程式或框架本身可以證明驅動程式通訊正常,但並不能證明環境中所有 CUDA 庫都相容。

Ubuntu 終端顯示 nvidia-smi 輸出成功,並且 lsmod 列出了 NVIDIA 模組。
正常情況下,nvidia-smi 可以與 GPU 通信,並且 NVIDIA 核心模組已載入。所示值僅供參考,非必要版本。

如果仍然失敗:根據症狀選擇下一步操作

“驅動程式/庫版本不符”

首先重啟電腦。然後比較正在運行的核心模組版本和已安裝的軟體包版本。 Canonical 指出,更新後的使用者空間元件可能暫時與記憶體中仍載入的舊模組版本不一致。如果重啟後版本不匹配仍然存在,請檢查是否存在混合軟體包來源和多個驅動程式分支。

“未找到任何設備”,Nouveau 已加載

查看:

lsmod | grep nouveau

Ubuntu 伺服器文件指出,在這種情況下,Nouveau 驅動程式可能會與 NVIDIA 專有驅動衝突。如果已載入 Nouveau 驅動,並且您打算使用專有驅動,Canonical 文件中建議將其列入黑名單並重新建構 initramfs:

echo "blacklist nouveau" | sudo tee /etc/modprobe.d/disable-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/disable-nouveau.conf
sudo update-initramfs -u
sudo reboot

不要僅僅因為 Nouveau 存在於磁碟上就將其列入黑名單;首先要確認它是否實際已加載以及是否與故障相關。

modprobe nvidia鑰匙被拒絕了

返回安全啟動路徑。盡可能使用已簽署的 Ubuntu 模組,或完成 DKMS 模組的 MOK 註冊。重複重新安裝同一個未簽名模組不會改變信任決策。

新核心沒有相容的模組包

暫時啟動一個已知可正常運行的舊內核,保持系統更新,並檢查 Ubuntu 是否為新核心提供匹配的預編譯模組。如果您有意運行自訂內核,DKMS 可能適用,但請閱讀其建置日誌並確認安全啟動簽名。除非您有安全更新維護計劃,否則請避免無限期地鎖定舊核心。

請求幫助前需要收集的指令

這些命令提供了一個簡潔的診斷工具包,而不會更改系統:

uname -a
lspci -nnk | grep -A3 -i nvidia
nvidia-smi
lsmod | grep -E 'nvidia|nouveau'
mokutil --sb-state
dkms status
apt-cache policy 'nvidia-driver-*' | sed -n '1,160p'
sudo dmesg | grep -iE 'nvrm|nvidia|nouveau|secure|module' | tail -n 120

請提供 Ubuntu 版本資訊(例如 Ubuntu 發行版lsb_release -a或/etc/os-releaseNVIDIA 軟體倉庫版本)、核心版本(uname -r例如 Ubuntu 核心版本)以及驅動程式最初是透過 Ubuntu 軟體包、NVIDIA 軟體倉庫、PPA 來源還是獨立安裝程式安裝的。這些細節通常比「驅動程式在更新後出現故障」這種籠統的說法更重要。

實際預防

  • ubuntu-drivers對於普通桌面系統,建議使用 Ubuntu 的預設驅動程式或附加驅動程式。
  • 保留核心版本元軟體包,以便未來的核心更新能夠引入匹配的NVIDIA模組。
  • 核心或 NVIDIA 驅動程式升級後,請重新啟動,而不是繼續使用混合記憶體/磁碟堆疊。
  • 在確認新核心能夠使用 GPU 驅動程式啟動之前,至少要保留一個已知可正常運作的核心。
  • 除非您有意控制後果,否則請避免混合使用 Ubuntu 軟體包、PPA、NVIDIA 的獨立安裝程式和多個儲存庫。

官方參考資料

Canonical 目前的安裝步驟請參閱「安裝 NVIDIA 驅動程式 — Ubuntu 桌面版」和「NVIDIA 驅動程式安裝 — Ubuntu 伺服器版」。有關 DKMS 的具體指導,請參閱「使用 DKMS 軟體包建立您自己的 NVIDIA 模組」。 NVIDIA 的供應商文件可在《適用於 Ubuntu 的 NVIDIA 驅動程式安裝指南》中找到。

特定的驅動程式分支、核心 ABI 和軟體包名稱取決於特定版本。請務必使用系統和 APT 報告的值,而不要將範例版本視為通用值。

留下評論

如何在Linux系統上使用Cameractrls更改網路攝影機設置

如何在Linux系統上使用Cameractrls更改網路攝影機設置

使用 Cameractrls 在 Linux 上變更網路攝影機設定:調整曝光、色彩、減少閃爍和其他支援的控件,然後檢查相容的視訊模式。

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

在 Linux 系統上,您可以使用 JetBrains Toolbox 或獨立的 tar.gz 壓縮套件安裝 PhpStorm,此外還有 Snap 和 Arch AUR 版本可供選擇。 Java 已預先安裝。

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

在 Linux 上使用 GNOME Disks 或 dd 建立 CD-ROM ISO。識別光碟機,監控複製過程,驗證鏡像,並了解何時損壞的光碟或音訊光碟需要其他工具。

如何在 XFCE 4 上設定雙面板

如何在 XFCE 4 上設定雙面板

為每個顯示器建立一個單獨的 XFCE 4 面板,將第二個面板指派給正確的輸出,調整其位置和大小,並新增所需的啟動器和狀態項目。

如何在Linux上安裝Cisco Packet Tracer

如何在Linux上安裝Cisco Packet Tracer

下載適用於 Ubuntu 64 位元系統的 Cisco Packet Tracer 9.0.1,使用 APT 安裝 DEB 軟體包,在終端機中接受許可協議,然後登入以啟動實驗環境。

如何在Linux系統下使用GIMP摳圖

如何在Linux系統下使用GIMP摳圖

在 Linux 系統上使用 GIMP 去除照片背景:描繪主體,刪除選定的背景,保持透明度,並匯出可重複使用的 PNG 檔案。

免費下載 FlightGear:官方安裝指南

免費下載 FlightGear:官方安裝指南

從官方網站免費下載 FlightGear。比較 Windows、macOS 和 Linux 版本的軟體包,安裝資料文件,即可開始您的首次飛行。

Google Tasks桌面應用程式:如何在電腦上使用

Google Tasks桌面應用程式:如何在電腦上使用

在瀏覽器中開啟 Google Tasks,新增 Chrome 捷徑或應用程式啟動,並透過行事曆和 Gmail 管理有日期的待辦事項。

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler 可以將 MP3 片段對應到鍵盤按鍵,並支援音訊循環播放。了解這款經典免費軟體的功能、其舊功能的缺失以及下載前需要檢查的事項。

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

使用目前軟體包命令在 Ubuntu、Debian、Fedora、Arch 或 openSUSE 上安裝 Wireshark,然後安全地配置即時資料包擷取。