一、前言
先上圖:
原視頻鏈接:這里 CSDN可能無緣無故讓鏈接失效 ,下面手動放個鏈接。圖片不想打碼的,但是不打碼CSDN顯示違規。
https://www.bilibili.com/video/BV1EE411Z7J2/?share_source=copy_web&vd_source=6d8c91561a34d72b6b7602496a5a062e
二、本文解決的問題
如果你為ubuntu系統安裝nvidia驅動,看過無數篇文章,試過各種解決方法,安裝過各種版本,但是依然以開機黑屏結尾,可是你就是偏偏要為ubuntu系統裝上nvidia驅動,那么這篇文章值得你看看。
三、思路
筆者安裝nvidia驅動是因為需要跑深度學習,但是一旦安裝上nvidia驅動之后,重啟開機,ubuntu就無法進入圖形化界面,具體情況如下:
其實這里已經進入了ubuntu系統,只是沒法加載圖形化界面,因為NVIDIA 顯卡驅動帶來的一系列和 GNOME、LightDM 等桌面環境不適配、不兼容。有沒有一種方法,可以讓nvidia加速圖形處理,但是不讓nvidia顯卡作為圖形化界面顯示呢?答案是肯定的!就是讓集顯作為圖形化顯示界面,而nvidia顯卡僅僅當作計算(CUDA)設備。這樣既能進入圖形化界面,又能使用gpu加速深度學習。
四、本文環境
這里指明本文解決問題的環境。
安裝了和ubuntu雙系統的筆記本電腦
電腦具有集成顯卡Intel和單顯Nvidia顯卡
ubuntu版本:Ubuntu 18.04.6 LTS(LTS:Long-Term Support長期支持版本)
nvidia顯卡型號:GeForce RTX 3050 Mobile
如果你的筆記本電腦沒有獨立顯卡,或者獨顯是A卡,或者你的ubuntu是裝在虛擬機里面的,或者你根本連驅動都裝不上(裝上是指黑屏進入tty模式,登陸之后輸入nvidia-smi有輸出)那么,這篇文章不適合你。如果ubuntu版本不是18.04,諸如2004版本的,個人覺得問題不大,建議嘗試一下。!!!2023.11.29重要更新:20.04版本的看文章最后一部分!!!就算你是版本的,也先別著急看下面的解決方法,直接去看文章最后一部分!直接去看文章最后一部分!直接去看文章最后一部分!
本文只適用于可以成功安裝nvidia驅動,但是進不去圖形化界面。
五、準備
不清楚你看到這篇文章的時候,是否還能進入ubuntu系統桌面。不管能不能,都建議把之前安裝過的nvidia驅動完全卸載干凈。
如果不是黑屏的,直接打開終端輸入卸載命令;
如果你是黑屏,先進入tty模式:Ctrl + Alt +Fn2(Fn3-Fn6都行)登陸之后輸入卸載命令。
(關于tty模式:Ubuntu的TTY界面是純文本串行終端,通常用作訪問計算機以修復內容的方式登錄。它沒有實際登錄到可能的圖像界面,而是通過按Ctrl + Alt + F1-F6鍵來進入。TTY一般為tty1-tty6,可以通過按ctrl +alt + F1- F6實現。在TTY中,用戶可以控制程序,殺死進程,完成在上完成的大部分命令。)
通過apt命令安裝的驅動卸載:
# 卸載驅動
sudo apt-get --purge remove nvidia*
sudo apt autoremove
# 完全刪除驅動
sudo apt-get --purge remove "*nvidia*"
通過手動執行.run文件安裝的:
sudo ./顯卡驅動包名稱 --uninstall
# 比如 sudo ./NVIDIA-Linux-x86_64-430.26.run --uninstall
# 有空格的地方不要露
如果你是黑屏的,將所有驅動卸載完之后,執行sudo reboot 按理就能著正常進入桌面了。
六、解決方案: 1.apt方式安裝nvidia顯卡驅動
終端輸入:
ubuntu-drivers devices
選擇帶有的版本,我的輸出是這樣
于是選擇470版本的。安裝前先更新一下軟件包:
sudo apt update
# 這個命令會更新本地軟件包列表,以獲取最新的軟件包信息
sudo apt upgrade
# 然后,你可以使用以下命令來升級已安裝的軟件包到最新版本:
然后安裝對應版本的驅動:
# sudo apt install nvidia-driver-版本號
# 如果你想安裝版本號為 470 的驅動,可以使用以下命令:
sudo apt install nvidia-driver-470
裝完之后先別重啟!這時候重啟開機還是進入不了圖形界面。
檢查一下是否安裝成功:輸入命令
nvidia-smi
這個時候系統可能還沒有檢測到nvidia驅動,會出現下面這樣的問題:
has failed because it couldn’t with the NVIDIA driver.
運行下面命令:
sudo modprobe nvidia
# 用于加載和卸載NVIDIA設備驅動程序。nvidia-modprobe的作用是
# 加載或卸載用于支持NVIDIA GPU的內核模塊。通過執行nvidia-modprobe命令,
# 系統會加載與NVIDIA GPU相關的內核模塊,使得系統能夠正常識別和使用NVIDIA GPU。
然后再重新執行:nvidia-smi,因該就有如下顯示了:
到此,我們成功安裝了nvidia驅動,這只是成功的第一步,相信大多數讀者都可以安裝成功,但就是重新啟動的時候,會黑屏。
后話:發現apt命令安裝起來比手動安裝快多了,不用禁用nouveau、不用先關閉圖形界面啥的。
2.查看當前電腦顯卡
打開終端,輸入命令:
lspci | grep VGA
輸入結果如下:
00:02.0 VGA compatible controller: Intel Corporation TigerLake-H GT1 [UHD Graphics] (rev 01)
01:00.0 VGA compatible controller: NVIDIA Corporation GA107M [GeForce RTX 3050 Mobile] (rev a1)
上面一行輸出的是Intel核顯,下面一行輸出的是nvidia單顯,每行前面的是BusId,需要記住,后面要用到。Intel的id 寫成:"PCI:0:2:0"
3.修改 Xorg 配置文件指定 Intel 核顯來做圖形化界面的顯示設備
這一步是最重要的一步。也是關鍵所在。
執行命令:
sudo nano /etc/X11/xorg.conf
創建了該文件,同時往里面寫配置信息:
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "Device1"
Driver "modesetting"
VendorName "Intel Corporation"
BusID "PCI:0:2:0"
EndSection
沒有安裝nano的需要先安裝一下nano編輯器:
# 輸入以下命令以更新軟件包列表:
sudo apt-get update。
# 輸入以下命令以安裝nano文本編輯器:
sudo apt-get install nano。
# 安裝完成后,您可以在終端中輸入“nano”來啟動編輯器,或者使用以下命令
# 指定要編輯的文件名:nano /path/to/file。
# 按下Ctrl+X鍵退出nano編輯器,然后按下Y鍵保存更改,或按下N鍵放棄更改并退出編輯器。
解釋一下上面的配置信息:
這段配置是 Xorg 服務器的配置文件,用于配置圖形顯示的相關設置。
1. Section Module這個部分指定了 Xorg 服務器要加載的模塊。
模塊是用于支持基于內核模式設置的 Xorg 驅動程序的模塊。它通常用于支持集成顯卡和一些較新的獨立顯卡。
2. Section Device
這個部分定義了一個設備配置塊,用于配置與圖形設備相關的設置。
指定了這個設備配置塊的標識符,這里是 "Device1"。
Driver ""指定了使用 `` 驅動程序來驅動這個設備。
"Intel " 指定了設備的制造商,這里是 "Intel ",表明這是一個英特爾集成顯卡。
BusID "PCI:0:2:0"指定了設備的總線地址,這里是 "PCI:0:2:0",用于唯一標識設備的物理位置。
綜合起來,這段配置表明 Xorg 服務器將使用 `` 驅動程序來驅動一個標識為 "Device1" 的設備,該設備是一個由英特爾制造的集成顯卡,總線地址為 "PCI:0:2:0"。這種配置通常用于支持基于內核模式設置的圖形設備,例如一些集成顯卡和一些較新的獨立顯卡。
BusID換成第一步自己得到的BusId。有的文章還需要配置別的信息,但是筆者配置這一個就足夠了。
配置完成保存即可,最好再打開看看,確保寫入內容有效。作者的效果如下:
4.重啟電腦
重啟電腦,此時應該在原先黑屏的地方停留一秒左右就可以進入ubuntu桌面了。此時再輸入nvidia-smi命令,正常顯示。最后可以安裝一個nvidia-,方便管理nvidia顯卡。
七、其他命令
查看顯卡型號
lspci | grep -i nvidia
查看驅動的版本
ubuntu-drivers device
檢查nouveau是否被禁用
lsmod | grep nouveau
查看當前顯卡的使用模式
apt install nvidia-prime
prime-select query
檢驗使用的是哪個驅動
(哪個有輸出就是哪個)
lsmod | grep nvidia
lsmod | grep nouveau
安裝小火車
sudo apt-get install sl
運行小火車
sl
八、參考文章
感謝知乎用戶“埃苯澤”提供的思路,文章鏈接
九、發發牢騷
寫下這篇博客時,剛剛把Nvidia驅動安裝好。10.14開始裝雙系統,現在是11.14,整整一個多月,英偉達苦人久矣!這個過程我重裝了至少6次Ubuntu系統,剛開始的那個周末,兩天時間什么也沒干,晚上一直調試到兩三點。中間的過程我甚至不想裝了,大不了就用cpu跑,再不行就用云平臺,一個小時也就一兩塊。后來看到cpu可能要跑幾個小時的,而gpu有用跑幾分鐘;云平臺我也沒接觸過。裝不上屬于自己的驅動,心里有塊石頭一直懸著。所以,在第一周重裝了好幾次之后,這一個月中,我還是有事沒事就看看關于Ubuntu安裝的nvidia驅動的帖子,這次其實是我最后的嘗試了,如果還不行,那就不裝N卡驅動了。為了這個問題,耽誤了這么長時間,該及時止損了。
如果在前兩年,被一個問題折磨這么久,心態早就爆炸了。記得剛進入大二時,和jdk沖突,最后解決它不到用了一個下午,但那幾個小時內,確實心急火燎。如今,經歷不少次配環境之后,對這類問題已經產生了些許免疫。不會這么簡單就讓我破防。
linux為什么和Nvidia兼容這么差?如果Ubuntu只用來開發和學習,無論是Intel的核卡、AIT的顯卡,還是Nvidia的顯卡,Ubuntu默認的顯卡驅動足以支持使用。但是像視頻剪輯、3D游戲、深度學習等等,Nvidia的顯卡驅動直接決定了它們的效果和工作效率。所以這也是為什么需要安裝合適的驅動。在開源顯卡驅動中,Intel的核卡早就將開源集成到了linux內核,而ATI顯卡開源和閉源驅動差別都不大。唯獨Nvidia,如果只使用linux的開源驅動Nouveau,沒法使用N卡的全部功能。黃老板不愿意將技術開源(2022年5月為linux開源了部分),作為開源界鼻祖的林大神, 又不喜歡讓閉源軟件進入他們的內核,所以此時需要另外安裝N卡驅動。
這次的經歷,也給了我一些教訓。因為一直裝不上驅動,中間有段時間開始病急亂投醫了,只要看到黑屏有關解決方法,就全部試一遍,什么禁止linux內核更新,修改grub文件,還有啥root文件里改什么東西,導致ubuntu甚至連tty模式都進不去。網上關于某一問題的帖子實在太多,網友在看的時候,最好仔細甄別一下,不要輕易地去照著別人的做,每個問題都有獨特之處,別人能解決的,到你這里不但解決不了可能還會把問題加重。另外,文章的評論也很重要,實操之前也多看看評論。
希望這些可以給你一些幫助,如果一直解決不了,不要太糾結,及時止損。
十、.04LTS版本安裝英偉達驅動
如果你的18.04版本一直裝驅動黑屏,你也沒有非18版本不用的理由,強烈建議丟棄18版本的,使用20版本的。
介紹一下筆者的情況,在折騰了一個月的時間,終于把ubuntu的N卡驅動裝好,開始進行深度學習了。結果配完深度學習環境之后,發現內存要滿了。(口吐芬芳)
(這里提一下具體情況,筆者一共分了100G給.04,根掛載點 \ 分了30G,\home 分了50G,其他的是引導區和swap分區。網上有的教程純純坑人,根掛載點 \ 竟然才說分30G,如果你要是分了30G甚至更少,裝好一些環境 pytorch 、cuda 、cudnn 、 ,再來個qq或者pycharm,會發現你的根掛載點就要滿了。)
因為筆者的快滿了,就打算再裝個.04LTS。裝好之后,竟然不需要改任何文件,就能直接把nvidia驅動裝好!!!雖然不是完全順利,但是相比給.04裝,簡直太簡單了。下面是安裝的注意事項和筆者踩過的坑。
1.安裝官方顯卡驅動源
sudo apt-get-respository ppa:graphics-drivers/ppa -y
這一步很重要,這是Ubuntn官方維護的顯卡驅動軟件源,比自帶的版本更新,兼容性也更強。裝完之后,終端輸入:
ubuntu-drivers devices
顯示如下:
這里選擇版本也有坑。不要選擇帶open的,open表示開源的,兼容性根本不好。我裝了兩個open版本的都不行。不要安裝最新版本的。筆者最開始安裝的是545-open版本的,安裝成功之后,一次開機成功,查看設置,確實都換成了N卡驅動,但是在使用的時候有BUG,每次開機用大概四五分鐘,屏幕就突然卡住,鼠標動不了,按任何鍵都沒有響應,緊接著,風扇就開始呼呼地轉,要是一直等的話,它就一直轉,只能強制關機,最新版的穩定性也是不行的。卸載了545之后,重新安裝了535-open版,為什么又選擇open版,因為覺得開源的可能好一點,但是實踐證明,根本大錯特錯!裝了535-open回到了老問題,開機黑屏。于是我又卸載了重裝535不帶open的,裝上之后,正常使用,沒有出現問題。
2.多試幾個版本
因為電腦配置不同,也有可能你試完上面方法之后,依然不行,建議你再多試試其他的版本!總能成功的。
3.為什么要選擇.04?
相比18版本的,就個人而言,體會如下:筆記本電腦的觸摸板卡可以用了,.04下,觸摸板是用不了的;界面更現代化,從18的桌面到20的桌面,感覺明顯不一樣,光是清晰度就高了許多,18版本的像是復古版。此外,18.04不再維護了,自帶的g++,gcc編譯器還都是7.50版本的,還得手動更新成9版本。總之,20版本就是比18版本好多了。而且已經發行3年了,穩定性也很有保證。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。