Debian

如何讓 Debian Jessie 使用 nvidia 專有驅動程序?

  • March 6, 2016

我按照Debian wiki中的說明通過反向移植在 Debian Jessie 上安裝了 nvidia 專有圖形驅動程序。不幸的是,儘管我盡了最大的努力,X 伺服器還是不會使用新的驅動程序。

正確建構和安裝的核心模組:

$ sudo lsmod | grep nvidia
nvidia               8487526  0 
drm                   249955  5 i915,drm_kms_helper,nvidia
i2c_core               46012  12 drm,i915,i2c_i801,snd_soc_rt5640,i2c_hid,i2c_designware_platform,regmap_i2c,drm_kms_helper,i2c_algo_bit,nvidia,v4l2_common,videodev

沒有 xorg.conf 文件,X 工作正常但不使用 nvidia 驅動程序;nvidia-settings報告說我“似乎沒有使用 NVIDIA X 驅動程序”。

Xorg.log.0:http ://pastebin.com/3Anr3FWU (這是正確的方式嗎?我希望如此)

使用以下 xorg.conf:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 340.46  (buildd@brahms)  Tue Oct  7 08:00:32 UTC 2014

Section "ServerLayout"
   Identifier     "Layout0"
   Screen      0  "Screen0"
   InputDevice    "Keyboard0" "CoreKeyboard"
   InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
   # generated from default
   Identifier     "Mouse0"
   Driver         "mouse"
   Option         "Protocol" "auto"
   Option         "Device" "/dev/psaux"
   Option         "Emulate3Buttons" "no"
   Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
   # generated from default
   Identifier     "Keyboard0"
   Driver         "kbd"
EndSection

Section "Monitor"
   Identifier     "Monitor0"
   VendorName     "Unknown"
   ModelName      "Unknown"
   HorizSync       28.0 - 33.0
   VertRefresh     43.0 - 72.0
   Option         "DPMS"
EndSection

Section "Device"
   Identifier     "Device0"
   Driver         "nvidia"
   VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
   Identifier     "Screen0"
   Device         "Device0"
   Monitor        "Monitor0"
   DefaultDepth    24
   SubSection     "Display"
       Depth       24
   EndSubSection
EndSection

(引用的版本低於我對 wiki 的預期,352.79 vs 340.46,但可能什麼都沒有),X 伺服器根本沒有啟動(我得到一個帶有閃爍游標的黑屏,但 tty1-6 可用) . 如果我刪掉除“設備”部分之外的所有內容,結果相同。

Xorg.log.0:http ://pastebin.com/cYLSYiUV

這是具有 nvidia 940M 專用顯卡(和 intel 板載 gfx)的 MSI 筆記型電腦。

$ lspci | egrep -i "vga|nvidia"
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 3D controller: NVIDIA Corporation Device 1347 (rev a2)

那麼:如何讓 X 啟動並使用 nvidia 驅動程序?

似乎工作!謝謝@cas(見問題評論)。我安裝了 bumblebee (來自 backports,因為這是我安裝 nvidia-driver 和從屬的地方,根據wiki):

$ sudo aptitude install -t jessie-backports bumblebee bumblebee-nvidia

並重新啟動以確保一切正常(您可能甚至不需要重新啟動 X 伺服器,但我覺得很慈善)。請注意,如果您尚未安裝 nvidia 驅動程序,我相信這也會拉進來嗎?我還沒有測試過。相反,它可能會拉入新潮。如果您在跑步時在primusrun glxinfo任何地方都看不到“nvidia”,這可能就是發生了什麼事;在這種情況下,大概您可以按照 wiki 安裝 debian,它應該可以工作(您需要重新啟動以確定,因為它安裝了一個新的核心模組)。

然後用glxinfoandglxgears來測試。

$ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.2
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.3.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.3.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.0
OpenGL ES profile extensions:

請注意,執行 glxinfo 裸機使用集成的英特爾顯卡(我認為 mesa 曾經是指軟體 opengl?我現在不知道它是什麼意思。但很明顯它沒有使用獨立卡)。

$ primusrun glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 940M/PCIe/SSE2
OpenGL core profile version string: 4.4.0 NVIDIA 352.79
OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 352.79
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

成功!

引用自:https://unix.stackexchange.com/questions/267906