解決ubuntu顯卡驅(qū)動(dòng)和循環(huán)登錄問題

login.jpg

什么是循環(huán)登錄

開機(jī)/重啟后的登錄界面,分辨率變得很低,并且輸入密碼后傅是,黑屏一閃而過又重新回到輸入密碼的界面,如此循環(huán)無法跳出蕾羊,俗稱“循環(huán)登錄”喧笔。

為什么會(huì)循環(huán)登錄

造成循環(huán)登錄有多種可能的原因:

1. 顯卡驅(qū)動(dòng)相關(guān)原因,導(dǎo)致循環(huán)登錄

nvidia.png

最常見的是龟再,內(nèi)核版本和顯卡驅(qū)動(dòng)版本不兼容導(dǎo)致循環(huán)登錄书闸。 例如內(nèi)核升級但沒有配置支持顯卡驅(qū)動(dòng)。這是本文重點(diǎn)關(guān)注的一類原因利凑。

也有比較少見的浆劲,獨(dú)顯和集顯共存問題,nvidia-prime切換后可以使用:

2. 改配置文件時(shí)系統(tǒng)環(huán)境變量被改壞嫌术,導(dǎo)致循環(huán)登錄

例如/etc/profile/etc/environment牌借、~/.profile度气,~/.bashrc, ~/.bash_profile等文件中配置PATH,原本希望append一個(gè)路徑膨报,但卻設(shè)置成了PATH只等于這一個(gè)路徑磷籍。通常是Linux菜鳥或粗心導(dǎo)致。

3. 磁盤空間不足,導(dǎo)致循環(huán)登錄

例如/var/log或/home滿了鱼鼓。df -h可查看磁盤使用情況拟烫。

4. 輸入法沖突導(dǎo)致

例如多個(gè)輸入法共存時(shí)可能觸發(fā)硕淑。

Ubuntu 登錄循環(huán)問題 這篇提到fcitx和搜狗輸入法的設(shè)定不正確導(dǎo)致的。

5. 系統(tǒng)升級導(dǎo)致

如果重啟后發(fā)現(xiàn)顯卡驅(qū)動(dòng)掛了嘉赎,而通過查找 /var/log/apt/history.log.1 發(fā)現(xiàn)關(guān)機(jī)前最后一次的apt記錄置媳,里面執(zhí)行過sudo apt upgrade,那么可以仔細(xì)看一下升級了什么公条。我這里在2020-10-30升級拇囊,內(nèi)核升級到了4.4.0-193,附帶的靶橱,gcc/g++從5.4.0被升級到了5.5.0寥袭。

這有什么問題呢?可能是gcc版本升級关霸,導(dǎo)致和原來的DKMS中的顯卡驅(qū)動(dòng)的內(nèi)核模塊沖突传黄。畢竟,原來是用gcc5.4生成的ko队寇。而重裝顯卡驅(qū)動(dòng)450時(shí)選dkms后也會(huì)報(bào)錯(cuò)說編譯器版本不匹配膘掰。于是這次放棄選擇DKMS了。

6. 其他

諸如檢查~/.Xauthority佳遣、~/.gconf等配置文件识埋,檢查和修改權(quán)限啤覆,或者干脆刪除。

再例如檢查~/.xsession-errors文件惭聂,檢查/var/log/Xorg.0.log文件。

這類方法基本上不管用相恃,偶爾管用也并不能讓人知道先前為什么循環(huán)登錄辜纲,有瞎搞的嫌疑。

還有提到“用adduser命令新建一個(gè)用戶拦耐,看能不能登錄進(jìn)去”:
ubuntu登陸無限循環(huán)

此方法確實(shí)能夠驗(yàn)證先前用戶home目錄下配置文件有問題耕腾,不過遷移用戶數(shù)據(jù)也是比較不可取的。

正確的配置顯卡驅(qū)動(dòng)

顯卡驅(qū)動(dòng)和內(nèi)核的關(guān)系

原理上杀糯,顯卡是硬件扫俺,需要顯卡驅(qū)動(dòng)的正確配置,才能夠被操作系統(tǒng)所管理使用固翰;操作系統(tǒng)識(shí)別顯卡驅(qū)動(dòng)后狼纬,對用戶態(tài)提供顯卡的使用接口。

具體到Ubuntu系統(tǒng)骂际,它用的是linux內(nèi)核疗琉。有意或無意的更新linux內(nèi)核后,重啟的機(jī)器會(huì)默認(rèn)加載新版內(nèi)核歉铝,而如果內(nèi)核與顯卡驅(qū)動(dòng)不兼容盈简,就導(dǎo)致了循環(huán)登錄

最常見的解決思路:卸載并重新安裝顯卡驅(qū)動(dòng)太示。新裝的驅(qū)動(dòng)可以和原來版本相同柠贤,也可以是新版。然而這種做法并沒有從根本上解決問題:為什么我的內(nèi)核會(huì)更新类缤?我好象并沒有更新過內(nèi)核臼勉?

一個(gè)合格的Linux用戶,應(yīng)當(dāng)會(huì)查看系統(tǒng)日志呀非、定位報(bào)錯(cuò)坚俗,并解決問題。查看了/var/log/apt/history.log岸裙,我發(fā)現(xiàn)了關(guān)鍵:

Start-Date: 2020-05-03  16:51:58
Commandline: /usr/bin/unattended-upgrade                                                                                    
Install: linux-modules-extra-4.15.0-99-generic:amd64 (4.15.0-99.100~16.04.1, automatic), linux-headers-4.15.0-99:amd64 (4.  15.0-99.100~16.04.1, automatic), linux-modules-4.15.0-99-generic:amd64 (4.15.0-99.100~16.04.1, automatic), linux-headers-4. 15.0-99-generic:amd64 (4.15.0-99.100~16.04.1, automatic), linux-image-4.15.0-99-generic:amd64 (4.15.0-99.100~16.04.1,       automatic)

沒錯(cuò)猖败,unattended-upgrade,這家伙意思是自動(dòng)升級,在5月3日 16:51:58悄悄的安裝了新版內(nèi)核(4.15.0-99)降允。

有沒有辦法關(guān)掉unattended-upgrade呢恩闻?有,后文介紹剧董。

如果保持unattended-upgrade打開幢尚,能不能讓顯卡驅(qū)動(dòng)自動(dòng)適配新內(nèi)核破停?能,而且是推薦的方式(DKMS)尉剩,不過也需要一番設(shè)置真慢。

unattended-upgrade是什么?能關(guān)閉嗎理茎?

通過man命令可以知道黑界,unattended-upgrade在每天的cron任務(wù)(/etc/cron.daily/apt-compat)中被在隨機(jī)的時(shí)間點(diǎn)觸發(fā)使用,更新了內(nèi)核皂林。

對服務(wù)器而言朗鸠,unattended-upgrade安裝了新版內(nèi)核,安全角度來看是一件好事因?yàn)樾迯?fù)了漏洞础倍;但對于使用ubuntu做深度學(xué)習(xí)訓(xùn)練的人來說烛占,這顯得多此一舉,幫了倒忙沟启。即使不使用圖形界面而只是用ssh遠(yuǎn)程連接使用忆家,也會(huì)遭遇如下類似報(bào)錯(cuò):

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

而此條報(bào)錯(cuò)也很直白的表明了,內(nèi)核版本和顯卡驅(qū)動(dòng)版本不兼容德迹,顯卡罷工了弦赖,深度學(xué)習(xí)訓(xùn)練暫停了。

關(guān)閉unattended-upgrade

對付暴力的唯一辦法就是更加暴力浦辨。把unattended-upgrade關(guān)掉才能代表深度學(xué)習(xí)的正義:
我的機(jī)器上是/etc/apt/apt.conf.d/20auto-upgrades蹬竖,有些機(jī)器上可能是/etc/apt/apt.conf.d/10periodic。編輯此文件流酬,找到并修改它的取值為"0":

sudo vim /etc/apt/apt.conf.d/20auto-upgrades

找到并修改它的取值為"0"(如果沒有則添加):

APT::Periodic::Unattended-Upgrade "0";

不過币厕,關(guān)閉unattended-upgrade也只是杜絕了以后莫名其妙的被更新內(nèi)核,當(dāng)前已經(jīng)被更新了內(nèi)核而驅(qū)動(dòng)版本不匹配芽腾,還是要搞一下顯卡驅(qū)動(dòng)旦装。

CUDA和顯卡驅(qū)動(dòng)的關(guān)系

搞深度學(xué)習(xí)要用CUDA來加速訓(xùn)練,有時(shí)候也用來部署加速摊滔。

CUDA安裝包里面帶有兼容版本的顯卡驅(qū)動(dòng)阴绢。沒錯(cuò),必須搭配合適版本的顯卡驅(qū)動(dòng)艰躺,才能支持CUDA呻袭,否則裝好的CUDA也永不上。

舉例:*華公司的AI集群訓(xùn)練系統(tǒng)腺兴,物理機(jī)的顯卡驅(qū)動(dòng)遲遲不肯更新左电,導(dǎo)致訓(xùn)模師在2020年還只能用CUDA8這樣落后的東西。*華的sa們都在忙什么?

說回CUDA安裝包里的顯卡驅(qū)動(dòng)篓足,個(gè)人不建議安裝它段誊。盡管它確實(shí)在多數(shù)情況下能讓CUDA正常運(yùn)行起來,但是這一版本的顯卡驅(qū)動(dòng)在安裝的時(shí)候不會(huì)注冊dkms模塊栈拖,這就導(dǎo)致一旦更新了linux內(nèi)核连舍,重啟機(jī)器后顯卡驅(qū)動(dòng)再次和內(nèi)核不兼容,圖形界面桌面進(jìn)不去涩哟,CUDA用不了烟瞧,深度學(xué)習(xí)訓(xùn)練推理都罷工。

而手動(dòng)從nvidia官網(wǎng)下載的顯卡驅(qū)動(dòng)(standalone版本)染簇,是帶有dkms注冊支持功能的。在此倡議:Ubuntu系統(tǒng)下强岸,請不要安裝CUDA安裝包里的顯卡驅(qū)動(dòng)锻弓,請到nvidia官網(wǎng)手動(dòng)下載.run格式的顯卡驅(qū)動(dòng),手動(dòng)下載安裝蝌箍。

有人會(huì)問:ppa:graphics-drivers/ppa這個(gè)倉庫不香嗎青灼?用apt安裝CUDA和顯卡驅(qū)動(dòng)不是更方便嗎?

我覺得這類用戶沒有考慮過多個(gè)版本的CUDA共存的問題妓盲,他們也不曾遇到當(dāng)急需用最近版CUDA而ppa源里的顯卡驅(qū)動(dòng)版本過低時(shí)的那種無奈杂拨。

正確安裝顯卡的姿勢

關(guān)閉unattended-upgrade

sudo vim /etc/apt/apt.conf.d/20auto-upgrades

找到并修改它的取值為"0"(如果沒有則添加):

APT::Periodic::Unattended-Upgrade "0";

獲取內(nèi)核相關(guān)包

sudo apt install linux-headers-$(uname -r)
sudo apt install linux-headers-generic

禁用開源驅(qū)動(dòng)nouveau

新建/etc/modprobe.d/blacklist-nouveau.conf,內(nèi)容:

blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u

正確的卸載顯卡驅(qū)動(dòng)

想要正確的安裝顯卡驅(qū)動(dòng)悯衬,必須知道怎么正確的卸載顯卡驅(qū)動(dòng)弹沽。有時(shí)候使用的機(jī)器是別人之前維護(hù)的,而前任維護(hù)者也許配置的并不合理筋粗,需要先檢查再按自己的風(fēng)格配置:

  • .run文件安裝的顯卡驅(qū)動(dòng)策橘,卸載:sudo /usr/bin/nvidia-uninstall,或找到原始的.run文件娜亿,執(zhí)行sudo bash ./xxx.run --uninstall

  • cuda安裝包里的顯卡驅(qū)動(dòng)丽已,卸載:sudo /usr/bin/nvidia-uninstall

  • apt repo下載安裝的:

sudo aptitude search nvidia | grep '^i' #查看
sudo apt remove --purge nvidia-XXX #例如我是nvidia-384

正確的安裝dkms依賴包

盡管standalone版本的nvidia顯卡驅(qū)動(dòng)已經(jīng)內(nèi)置了注冊dkms的功能,但ubuntu16.04并不默認(rèn)支持dkms买决。也就是說沛婴,雖然你滿心歡喜的在安裝顯卡驅(qū)動(dòng)時(shí)選擇了dkms,但是某天因?yàn)閡nattended-upgrade更新了內(nèi)核督赤,顯卡會(huì)再次罷工嘁灯。

正確姿勢:

sudo apt install dkms

查找和nvidia相關(guān)的dkms包:

aptitude search dkms | ag 'nvidia'
sudo apt install bbswitch-dkms

安裝后,得到/usr/lib/dkms_autoinstaller這一可執(zhí)行文件躲舌。

正確的獲取顯卡驅(qū)動(dòng)

前面提到過旁仿,不要用CUDA安裝包里的顯卡驅(qū)動(dòng),它不帶dkms支持會(huì)導(dǎo)致以后問題頻發(fā)。請到官網(wǎng)自行下載適合版本的顯卡驅(qū)動(dòng)枯冈。

sudo init 3

sudo bash ./NVIDIA-Linux-x86_64-440.82.run

注意選擇dkms支持毅贮,選擇32位兼容。

正確的配置dkms

ls /var/lib/initramfs-tools | sudo xargs -n1 /usr/lib/dkms/dkms_autoinstaller start

這會(huì)把所有內(nèi)核模塊打入到所有內(nèi)核中尘奏。然后重啟系統(tǒng)即可滩褥。

如果不重啟,無線網(wǎng)卡和CUDA可能無法使用炫加。

筆記本上執(zhí)行如上操作瑰煎,仍然循環(huán)登錄
本人目前手頭沒有帶nvidia顯卡的ubuntu筆記本,暫時(shí)不能實(shí)驗(yàn)俗孝,大概猜測一下可行的方法:

  1. 確保顯卡驅(qū)動(dòng)是適合筆記本(notebook)的酒甸,以和臺(tái)式機(jī)區(qū)別。同一型號顯卡赋铝,筆記本上和臺(tái)式機(jī)上也許并不完全一樣插勤,驅(qū)動(dòng)可能有差別。

  2. 如果仍然失敗革骨,考慮到筆記本通常默認(rèn)用集顯作為顯示輸出农尖,臺(tái)式機(jī)默認(rèn)用獨(dú)顯做顯示輸出;則先卸載掉剛才安裝的驅(qū)動(dòng)良哲,再重新加入–no-opengl-files選項(xiàng)安裝盛卡。而后續(xù)要用到opengl的情況(譬如基于vulkan的優(yōu)化加速庫),則在安裝cuda時(shí)筑凫,注意勾選opengl滑沧、取消勾選顯卡驅(qū)動(dòng)(不確定,只是一時(shí)的想法巍实,求驗(yàn)證)

參考

NVIDIA CUDA Installation Guide for Linux嚎货,全面,但不全都正確可用

解決Driver/library version mismatch蔫浆,中文博客中比較深入的一篇

Command to rebuild all DKMS modules for all installed kernels?殖属,啟發(fā)了我找到dkms的正確配置方式

ubuntu 禁止/取消系統(tǒng)自動(dòng)更新的方法

http://www.jeepxie.net/article/581478.html

解決Nvidia顯卡的電腦安裝Ubuntu及驅(qū)動(dòng)的各種坑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓦盛,隨后出現(xiàn)的幾起案子洗显,更是在濱河造成了極大的恐慌,老刑警劉巖原环,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挠唆,死亡現(xiàn)場離奇詭異,居然都是意外死亡嘱吗,警方通過查閱死者的電腦和手機(jī)玄组,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門滔驾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俄讹,你說我怎么就攤上這事哆致。” “怎么了患膛?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵摊阀,是天一觀的道長。 經(jīng)常有香客問我踪蹬,道長胞此,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任跃捣,我火速辦了婚禮漱牵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疚漆。我一直安慰自己酣胀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布愿卸。 她就那樣靜靜地躺著,像睡著了一般截型。 火紅的嫁衣襯著肌膚如雪趴荸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天宦焦,我揣著相機(jī)與錄音发钝,去河邊找鬼。 笑死波闹,一個(gè)胖子當(dāng)著我的面吹牛酝豪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播精堕,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼孵淘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了歹篓?” 一聲冷哼從身側(cè)響起瘫证,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庄撮,沒想到半個(gè)月后背捌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洞斯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年毡庆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡么抗,死狀恐怖毅否,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乖坠,我是刑警寧澤搀突,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站熊泵,受9級特大地震影響仰迁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顽分,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一徐许、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卒蘸,春花似錦雌隅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至趾牧,卻和暖如春检盼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翘单。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工吨枉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哄芜。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓貌亭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親认臊。 傳聞我的和親對象是個(gè)殘疾皇子圃庭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348