Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

解決 Ubuntu 14.04.2 升級 Linux 3.16 核心後 NVIDIA 331 驅動建構失敗與 Bumblebee 問題

編輯:Linux 教學

問題背景

Ubuntu 14.04.2 LTS 啟用 HWE (Hardware Enablement) 升級至 Linux 3.16 核心時,專有驅動 nvidia-331 / nvidia-331-updates 的 DKMS 模組編譯失敗,典型錯誤:

nvidia-331-updates 331.38-0ubuntu3: nvidia-331-updates kernel module failed to build
objdump: '.../tmp_nv.o': No such file

同時 steam 等 32 位元應用可能消失,Bumblebee (Optimus 雙顯卡切換) 亦報錯:

[ERROR] Cannot access secondary GPU - error: [XORG] (EE) No devices detected.

方案一:重新配置 DKMS 模組 (核心修復)

執行以下命令觸發針對當前核心的模組重建:

sudo dpkg-reconfigure nvidia-331
sudo dpkg-reconfigure nvidia-331-uvm
# 觀察輸出是否顯示 "Building for architecture x86_64" 並成功完成
# 完成後**必須重啟**

原理: dpkg-reconfigure 會呼叫 dkms autoinstall,針對當前運行核心 (uname -r) 重新編譯 NVIDIA 核心模組 (nvidia.ko, nvidia_uvm.ko)。

方案二:全新安裝 14.04.2 ISO 遇到相同問題

若是全新安裝 14.04.2 (預設 3.16 核心) 直接安裝 nvidia-331 也會失敗,**同樣執行上述重新配置命令即可**。

方案三:Bumblebee "No devices detected" 修復

現象確認

lspci | grep VGA
# 輸出範例
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 630M] (rev a1)
# rev a1 = N 卡處於開啟狀態;rev ff = 已關閉 (bbswitch 工作正常)

修改 Bumblebee Xorg 配置

sudo gedit /etc/bumblebee/xorg.conf.nvidia
# 找到 Device 區段,取消註釋並設定正確 BusID
Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"
    BusID       "PCI:01:00:0"   # ← 依 lspci 輸出修改,格式 PCI:bus:device:function
EndSection

關鍵: BusID 必須與 lspci 顯示的 N 卡位址完全一致 (域:總線:裝置:功能),預設常被註釋導致 Xorg 無法定位裝置。

驗證

optirun nvidia-settings -c :8
# 應彈出 NVIDIA 設定視窗,顯示 GPU 資訊
# 關閉視窗後再次檢查
lspci | grep VGA
# N 卡應顯示 rev ff (已由 bbswitch 關閉)

進階:升級至更新驅動分支 (長期解決)

NVIDIA 331 為舊長期支援分支,對新核心支援有限。建議啟用 graphics-drivers PPA 安裝較新版本:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
apt-cache search nvidia- | grep -E '^nvidia-[0-9]+'
# 選擇較新支援 3.16+ 核心的版本 (如 nvidia-340, nvidia-352, nvidia-361...)
sudo apt-get install nvidia-352 nvidia-352-uvm
# 同樣需重新配置或重啟

Ubuntu 14.10 及更新版本適用性

相同錯誤模式在 14.10 (核心 3.16) 亦會出現,**解決步驟完全一致**:dpkg-reconfigure + Bumblebee BusID 修正 + 考慮升級驅動分支。

總結檢查清單

步驟命令預期結果
1. 重建核心模組sudo dpkg-reconfigure nvidia-331 nvidia-331-uvmDKMS 建構成功,無 objdump 錯誤
2. 重啟系統sudo rebootN 卡驅動正常載入
3. 修正 Bumblebee BusID編輯 /etc/bumblebee/xorg.conf.nvidiaoptirun 可存取 N 卡
4. 驗證切換optirun nvidia-settings -c :8 → lspci | grep VGAN 卡按需開啟/關閉
5. (建議) 升級驅動分支啟用 graphics-drivers PPA 安裝新版長期相容新核心

結語

核心升級導致專有驅動 DKMS 失效是常見運維痛點。掌握 dpkg-reconfigure 觸發重建、Bumblebee BusID 正確配置、善用 PPA 追蹤新驅動,能快速恢復 Optimus 筆電圖形性能與切換功能。

Copyright © Windows教程網 All Rights Reserved