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.
執行以下命令觸發針對當前核心的模組重建:
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 (預設 3.16 核心) 直接安裝 nvidia-331 也會失敗,**同樣執行上述重新配置命令即可**。
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 工作正常)
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
# 同樣需重新配置或重啟
相同錯誤模式在 14.10 (核心 3.16) 亦會出現,**解決步驟完全一致**:dpkg-reconfigure + Bumblebee BusID 修正 + 考慮升級驅動分支。
| 步驟 | 命令 | 預期結果 |
|---|---|---|
| 1. 重建核心模組 | sudo dpkg-reconfigure nvidia-331 nvidia-331-uvm | DKMS 建構成功,無 objdump 錯誤 |
| 2. 重啟系統 | sudo reboot | N 卡驅動正常載入 |
| 3. 修正 Bumblebee BusID | 編輯 /etc/bumblebee/xorg.conf.nvidia | optirun 可存取 N 卡 |
| 4. 驗證切換 | optirun nvidia-settings -c :8 → lspci | grep VGA | N 卡按需開啟/關閉 |
| 5. (建議) 升級驅動分支 | 啟用 graphics-drivers PPA 安裝新版 | 長期相容新核心 |
核心升級導致專有驅動 DKMS 失效是常見運維痛點。掌握 dpkg-reconfigure 觸發重建、Bumblebee BusID 正確配置、善用 PPA 追蹤新驅動,能快速恢復 Optimus 筆電圖形性能與切換功能。