萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Ubuntu 13.10 安裝 NVIDIA 319.60 顯卡驅動報錯修補方案(Kernel 3.11 相容性修正)

Ubuntu 13.10 核心升級至 3.11,導致 NVIDIA 319.60 驅動編譯失敗(nv-drm.c、nv-linux.h API 變更)。本文提供針對性 Patch 修補流程,使驅動順利編譯安裝。

NVIDIA 驅動安裝畫面

適用環境

  • Ubuntu 13.10 (Saucy Salamander)
  • Kernel 3.11.x
  • NVIDIA-Linux-x86_64-319.60.run

修補流程

1. 解壓驅動安裝包


cd /path/to/driver
./NVIDIA-Linux-x86_64-319.60.run -x
# 產生同名目錄 NVIDIA-Linux-x86_64-319.60/

2. 建立 Patch 檔案

將以下內容儲存為 patchfile.diff 放在解壓目錄下:

--- NVIDIA-Linux-x86_64-319.60/kernel/nv-drm.c 2013-09-26 01:02:38.000000000 +0400
+++ NVIDIA-Linux-x86_64-319.60/kernel/nv-drm.c 2013-10-02 14:00:03.617000000 +0400
@@ -201,12 +201,7 @@
 memset(&nv_obj->base, 0, sizeof(nv_obj->base));
 nv_obj->pages = pages;
 - ret = drm_gem_private_object_init(nvl->drm, &nv_obj->base, size);
 - if (ret)
 - {
 - status = RM_ERR_OPERATING_SYSTEM;
 - goto done;
 - }
 + drm_gem_private_object_init(nvl->drm, &nv_obj->base, size);
 ret = drm_gem_handle_create(file_priv, &nv_obj->base, handle);
 if (ret)

diff -ur NVIDIA-Linux-x86_64-319.60/kernel/nv-linux.h NVIDIA-Linux-x86_64-319.60/kernel/nv-linux.h
--- NVIDIA-Linux-x86_64-319.60/kernel/nv-linux.h 2013-09-26 01:02:38.000000000 +0400
+++ NVIDIA-Linux-x86_64-319.60/kernel/nv-linux.h 2013-10-02 14:01:31.461000000 +0400
@@ -1037,7 +1037,11 @@
 #endif
 #if !defined(NV_VMWARE)
 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)
 #define NV_NUM_PHYSPAGES num_physpages
 +#else
 +#define NV_NUM_PHYSPAGES get_num_physpages()
 +#endif
 #define NV_GET_CURRENT_PROCESS() current->tgid
 #define NV_IN_ATOMIC() in_atomic()
 #define NV_LOCAL_BH_DISABLE() local_bh_disable()

3. 套用 Patch


patch -p0 < patchfile.diff

4. 停止圖形介面並安裝


sudo service lightdm stop
cd NVIDIA-Linux-x86_64-319.60
sudo ./nvidia-installer

Patch 內容解析

檔案修正點Kernel 3.11 變更原因
nv-drm.c移除 drm_gem_private_object_init 返回值檢查API 簡化,不再返回錯誤碼
nv-linux.h條件編譯 NV_NUM_PHYSPAGES:
3.11 前用 num_physpages,3.11+ 用 get_num_physpages()
物理頁面計數介面函數化

後續管理

  • 驅動安裝後,舊核心模組仍保留,可透過 GRUB 選單切換核心
  • 移除驅動:sudo apt-get purge nvidia-319(若透過套件管理)或重新執行 .run --uninstall
  • 核心升級後需**重新編譯安裝**,DKMS 可自動化此過程

建議替代方案

Ubuntu 13.10 存檔庫已提供 nvidia-319 套件(含 DKMS),優先嘗試:


sudo apt-get update
sudo apt-get install nvidia-319

僅在套件版本不符需求時,才使用手動 Patch 方式。

copyright © 萬盛學電腦網 all rights reserved