天天看點

Debian 9 安裝 NVIDIA顯示卡驅動

我現在非常地慶幸,因為我正在用我的圖形界面上的浏覽器在寫這篇文章。半個小時以前,我的圖形界面無法啟動,并且這種情況持續了大概一天時間,也就是我把NVIDIA driver安裝在我的debian 9之後就無法啟動。

本來我是要安裝CUDA 8的。我采用runfile的方式來安裝這個東西,經過幾次安裝,我才明白這個檔案其實包括安裝某版本的NVIDIA 驅動、CUDA8 toolkit和Samples(驗證安裝是否成功)。關于到哪裡下載下傳對應linux系統的runfile檔案,可以參考這篇文章的第2步(注:這篇文章是關于debian8安裝cuda8的,但是我感覺其中有些細節比較含糊,并且他沒有我安裝完之後出現的問題。什麼問題?看下文。)這樣之後,我的檔案夾裡就有一個cuda_8.0.61_375.26_linux.run檔案,按照上面那篇文章,我已經blacklist nouveau了(nouveau是系統裡原來的顯示卡驅動),我隻要執行./cuda_8.0.61_375.26_linux.run或者 sh cuda_8.0.61_375.26_linux.run。這時候可能會出現一些問題:

1.執行指令之後,指令行一直停留在“Install xxx xxx ......”無法動彈的樣子,我隻能按ctrl c退出,我采用的方法是,到/tmp下把.X1024-lock這個檔案給删掉。然後重新到runfile所在檔案夾執行sh cuda_8.0.61_375.26_linux.run指令。

2.這次進行的順利一些,然而沒有安裝成功,它隻是給出一些比較有用的資訊,大概的意思:是子產品“nvidia-modeset”正在被使用,表示可能有x server正在運作......。按照上面的blacklist舉一反三,我幹脆把nvidia-modeset也加進黑名單。

3.我又reboot重新開機計算機。從前面我們又知道,在安裝nvidia驅動時,X window需要關閉,是以就不要登入圖形界面了,ctrl+alt+Fn打開一個tty,root登入進去操作,注意重新開機之後/tmp下又有一個.X1024-lock,這可能是因為系統預設是要啟動圖形界面,繼續删除。再用指令init 3關閉X,可以ctrl+alt+F1看看,原來的圖形界面是不是關閉了。然後還是來到runfile檔案所在目錄,執行sh cuda_8.0.61_375.26_linux.run。

4.這次有不行了。有一個warning導緻安裝過程終止。大概的意思是,我的/etc/modrpobe.d目錄下有兩個檔案同時禁止了nouveau,然後blabla,我無語,這算什麼問題啊。我趕緊cd過去看看,這有兩個.conf檔案,都是黑名單,不過名字不同,一個就是我命名的blacklist.conf,另一個名字很長,類似nvidia-installer-nouveau-blacklist.conf,看名字就知道這是就是那個安裝檔案自動生成的黑名單,裡面就禁止了nouveau。這樣的話,我隻要把我的blacklist.conf裡面的noveau删掉,其他不懂就行了,我也是這麼做的。

5.好,再重新開機吧。然後仍然要關掉X,删掉lock檔案(這個關于X的過程可能可以通過系統配置來避免每次開機都要這麼做,但是我不知道)。來到runfile檔案所在目錄,執行sh cuda_8.0.61_375.26_linux.run。這次又失敗了。新的問題是(我寫這個的時候過去很久了,有點遺忘了,隻能記得個大概,由于隻有一台電腦,隻能用手機邊上網查問題,幸好我儲存查道的網頁以及當時某度的問題):跟InstallUtils有關,我上網查的問題是,"install the InstallUtils module",出來就有一篇“Can't locate InstallUtils.pm in @INC-NVIDIA Developer Forums”根據裡面的回複,我執行了如下的步驟:

1)unpack .run file ./cuda*.run --tar mxvf

//就是去runfile那個檔案夾把那個runfile解壓

2)copy InstallUtils.pm to /usr/lib/x86_64-linux-gnu/perl-base 

//把這個檔案複制到所指的檔案夾那裡去,用cp指令,我當時用mv,都沒什麼。

3)export $PERL5LIB

//最後這部我有點疑惑,不知道幹什麼,輸出什麼東西我也忘了。

6.不過這麼幹之後,确實有驚喜啊,就像上面那個論壇幾個小哥在那裡喊他的天。重新開機有又執行了該做的步驟之後,再次執行sh cuda_8.0.61_375.26_linux.run。最後成功安裝了。上個圖證明下,三項全是Installed啊。

Debian 9 安裝 NVIDIA顯示卡驅動

然而,好景不長,待我重新開機電腦之後,新問題就來了,也就是無法進入圖形界面。無論如何,之前的那些步驟确實是可以安裝好NVIDIA驅動的。以上那些步驟并不是按照實際發生的順序寫的,因為一個問題有可能重複出現,時間也是跨越了一個星期。這裡隻是提出來,可以做為參考。請謹慎行事。在此聲明:本人水準有限,若由于參考以上操作而造成的任何損失,本人概不負責。

現在就尴尬了,裝好驅動之後竟然不能登陸桌面,就在這之後一天的時間裡面十幾個小時,我也不知道經曆了什麼,我改動了一些東西,然後現在圖形界面又可以啟動了,就是留下了一些後遺症或者隐患。這也提醒了我,應該建立良好的操作規範,我聯想到linux系統的開發維護人員應該都是這樣的吧,不然事後追索自己的操作者的有點麻煩。

不過從過去的點滴中還是可以找到一些線索,這裡提出來,以供參考。我最後是解除安裝了NVIDIA驅動,從網上得到的一些資料,我剛開始以為跟/etc/X11/xorg.conf檔案有關,頻繁的改變裡面的參數,其實就是關于驅動的幾個參數,不是改為nouveau就是nvidia,但都不湊效。我還把lightdm給解除安裝了,這個display manager,因為,我使用systemctl status lightdm.service檢視,它老是有問題,剩下gdm,是以default-display-manager就是它,但是還是不行。經過一番掙紮,我就解除安裝了nvidia驅動。改回nouveau之後,結果還是依舊,相當沮喪。我是以還重裝過nouveau。最後我在這篇問答裡面找到了靈感:裡面提到nouveau和nvidia分别是根據不同的配置檔案來配置的,而我一直誤以為這兩個驅動都是按照/etc/X11/xorg.conf檔案來配置的。原文如下:

But going back and forth can mess things up so sometimes make sure:

1)Ubuntu nouveau uses ~/.config/monitors.xml If nvidia is enabled instead, make sure to name this .bak so it's not used

2)Nividia uses xorg.conf If nouveau/stock driver is used name this .bak

Otherwise things might boot to hung shell. Sometimes nvidia screws up xorg.conf itself (pre 11.10) and the file should be deleted.

不過,該注意的是我沒有找到 ~/.config/monitors.xml 檔案,這篇文章也是好幾年前了,而些說的是Ubuntu。不過我還是做了嘗試,将xorg.conf備份後(xorg.conf.backup)删除,再重新開機。這次就好了,熟悉的圖形界面,不過奇怪的是我解除安裝了lightdm呀改成gdm,但是感覺沒什麼兩樣。我把删除xorg.conf之前的那一次系統重新開機的Xorg.0.log貼上:

[  1241.302] 

X.Org X Server 1.19.2

Release Date: 2017-03-02

[  1241.303] X Protocol Version 11, Revision 0

[  1241.304] Build Operating System: Linux 4.9.0-3-amd64 x86_64 Debian

[  1241.304] Current Operating System: Linux bread 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64

[  1241.304] Kernel command line: BOOT_IMAGE=/vmlinuz-4.9.0-3-amd64 root=UUID=1b7e0add-5375-4ed4-ac5d-bc2c4cc95366 ro quiet

[  1241.305] Build Date: 07 July 2017  06:14:06AM

[  1241.306] xorg-server 2:1.19.2-1+deb9u1 (https://www.debian.org/support) 

[  1241.306] Current version of pixman: 0.34.0

[  1241.307] Before reporting problems, check http://wiki.x.org

to make sure that you have the latest version.

[  1241.307] Markers: (--) probed, (**) from config file, (==) default setting,

(++) from command line, (!!) notice, (II) informational,

(WW) warning, (EE) error, (NI) not implemented, (??) unknown.

[  1241.309] (==) Log file: "/var/log/Xorg.0.log", Time: Sun Aug 27 18:01:05 2017

[  1241.310] (==) Using config file: "/etc/X11/xorg.conf"

[  1241.310] (==) Using system config directory "/usr/share/X11/xorg.conf.d"

[  1241.311] (==) ServerLayout "Layout0"

[  1241.311] (**) |-->Screen "Screen0" (0)

[  1241.311] (**) |   |-->Monitor "Monitor0"

[  1241.311] (**) |   |-->Device "Device0"

[  1241.311] (**) |-->Input Device "Keyboard0"

[  1241.311] (**) |-->Input Device "Mouse0"

[  1241.311] (==) Automatically adding devices

[  1241.311] (==) Automatically enabling devices

[  1241.311] (==) Automatically adding GPU devices

[  1241.311] (==) Max clients allowed: 256, resource mask: 0x1fffff

[  1241.311] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.

[  1241.311] Entry deleted from font path.

[  1241.311] (==) FontPath set to:

/usr/share/fonts/X11/misc,

/usr/share/fonts/X11/100dpi/:unscaled,

/usr/share/fonts/X11/75dpi/:unscaled,

/usr/share/fonts/X11/Type1,

/usr/share/fonts/X11/100dpi,

/usr/share/fonts/X11/75dpi,

built-ins

[  1241.311] (==) ModulePath set to "/usr/lib/xorg/modules"

[  1241.311] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.

[  1241.311] (WW) Disabling Keyboard0

[  1241.311] (WW) Disabling Mouse0

[  1241.311] (II) Loader magic: 0x5575f1d55e00

[  1241.311] (II) Module ABI versions:

[  1241.311] X.Org ANSI C Emulation: 0.4

[  1241.311] X.Org Video Driver: 23.0

[  1241.311] X.Org XInput driver : 24.1

[  1241.311] X.Org Server Extension : 10.0

[  1241.311] (--) using VT number 3

[  1241.311] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration

[  1241.312] (II) xfree86: Adding drm device (/dev/dri/card0)

[  1241.312] (II) xfree86: Adding drm device (/dev/dri/card1)

[  1241.313] (--) PCI:*(0:0:2:0) 8086:0416:1025:0945 rev 6, Mem @ 0xd2000000/4194304, 0xc0000000/268435456, I/O @ 0x00005000/64, BIOS @ 0x????????/131072

[  1241.313] (--) PCI: (0:1:0:0) 10de:1299:1025:0945 rev 161, Mem @ 0xd0000000/16777216, 0xa0000000/268435456, 0xb0000000/33554432, I/O @ 0x00004000/128, BIOS @ 0x????????/524288

[  1241.313] (II) LoadModule: "glx"

[  1241.313] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so

[  1241.314] (II) Module glx: vendor="X.Org Foundation"

[  1241.314] compiled for 1.19.2, module version = 1.0.0

[  1241.314] ABI class: X.Org Server Extension, version 10.0

[  1241.314] (II) LoadModule: "nouveau"

[  1241.314] (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so

[  1241.314] (II) Module nouveau: vendor="X.Org Foundation"

[  1241.314] compiled for 1.19.3, module version = 1.0.13

[  1241.314] Module class: X.Org Video Driver

[  1241.314] ABI class: X.Org Video Driver, version 23.0

[  1241.314] (II) NOUVEAU driver Date:   Tue Sep 20 00:31:06 2016 -0400

[  1241.314] (II) NOUVEAU driver for NVIDIA chipset families :

[  1241.314] RIVA TNT        (NV04)

[  1241.314] RIVA TNT2       (NV05)

[  1241.314] GeForce 256     (NV10)

[  1241.314] GeForce 2       (NV11, NV15)

[  1241.314] GeForce 4MX     (NV17, NV18)

[  1241.314] GeForce 3       (NV20)

[  1241.314] GeForce 4Ti     (NV25, NV28)

[  1241.314] GeForce FX      (NV3x)

[  1241.314] GeForce 6       (NV4x)

[  1241.314] GeForce 7       (G7x)

[  1241.314] GeForce 8       (G8x)

[  1241.314] GeForce GTX 200 (NVA0)

[  1241.314] GeForce GTX 400 (NVC0)

[  1241.318] (II) [drm] nouveau interface version: 1.3.1

[  1241.318] (EE) No devices detected.

[  1241.318] (EE) 

Fatal server error:

[  1241.318] (EE) no screens found(EE) 

[  1241.318] (EE) 

Please consult the The X.Org Foundation support 

at http://wiki.x.org

 for help. 

[  1241.318] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.

[  1241.318] (EE) 

[  1241.385] (EE) Server terminated with error (1). Closing log file.

這裡面顯示no divices detected,大概是找不到顯示卡吧。可以看到系統啟動x視窗時,使用了那個檔案“Using config file: "/etc/X11/xorg.conf"”

我之前提到的隐患是這樣的,現在每次啟動計算機,都會有如下錯誤資訊:

[  705.646572] nouveau 0000:01:00.0: priv: HUB0: 084014 ffffffff (1870820d)

[  705.681480] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1a70822c)

[  705.760438] nouveau 0000:01:00.0: DRM: resuming client object trees...

[  710.799428] nouveau 0000:01:00.0: DRM: evicting buffers...

[  710.799430] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...

[  710.799453] nouveau 0000:01:00.0: DRM: suspending client object trees...

[  710.800804] nouveau 0000:01:00.0: DRM: suspending kernel object tree...

可以知道的是,如果在tty裡面執行xinit,這個錯誤資訊就會不間斷的跳出來。

這個不知道怎麼解決。