日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

彻底解决ubuntu循环登录和显卡驱动问题

發布時間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 彻底解决ubuntu循环登录和显卡驱动问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

徹底解決ubuntu顯卡驅動和循環登錄問題

目錄徹底解決ubuntu顯卡驅動和循環登錄問題什么是循環登錄為什么會循環登錄1. 顯卡驅動相關原因,導致循環登錄2. 改配置文件時系統環境變量被改壞,導致循環登錄3. 磁盤空間不足,導致循環登錄4. 輸入法沖突導致5. 其他正確的配置顯卡驅動顯卡驅動和內核的關系unattended-upgrade是什么?能關閉嗎?CUDA和顯卡驅動的關系正確安裝顯卡的姿勢參考

什么是循環登錄

開機/重啟后的登錄界面,分辨率變得很低,并且輸入密碼后黑屏一閃而過又重新回到輸入密碼的界面,如此循環無法跳出,俗稱“循環登錄”。

為什么會循環登錄

造成循環登錄有多種可能的原因:

1. 顯卡驅動相關原因,導致循環登錄

最常見的是,內核版本和顯卡驅動版本不兼容導致循環登錄。 例如內核升級但沒有配置支持顯卡驅動。這是本文重點關注的一類原因。

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

ubuntu循環登錄巧妙處理

2. 改配置文件時系統環境變量被改壞,導致循環登錄

例如/etc/profile/etc/environment~/.profile~/.bashrc, ~/.bash_profile等文件中配置PATH,原本希望append一個路徑,但卻設置成了PATH只等于這一個路徑。通常是Linux菜鳥或粗心導致。

解決ubuntu16.04循環登錄問題 這篇嘗試添加PyCharm的bin路徑到PATH,但忘記追加原有PATH的值。實際上完全沒必要添加PyCharm,Dash里搜索即可。

啟動Ubuntu時,密碼正確但是出現循環登陸的現象 這篇嘗試添加JDK的bin目錄到PATH,目測是把PATH的值改成只剩JDK的bin目錄導致進不去桌面。

Ubuntu陷入登錄循環 這篇總結貼中提到.profile文件被修改的時候寫了“錯別字”

3. 磁盤空間不足,導致循環登錄

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

ubuntu14.04開機登錄死循環 該博主刪除大量無效log文件后問題得以解決。

Ubuntu陷入登錄循環 提到HOME分區滿導致。

4. 輸入法沖突導致

例如多個輸入法共存時可能觸發。

Ubuntu 登錄循環問題 這篇提到fcitx和搜狗輸入法的設定不正確導致的。

5. 其他

諸如檢查~/.Xauthority~/.gconf等配置文件,檢查和修改權限,或者干脆刪除。

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

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

還有提到“用adduser命令新建一個用戶,看能不能登錄進去”:
ubuntu登陸無限循環

此方法確實能夠驗證先前用戶home目錄下配置文件有問題,不過遷移用戶數據也是比較不可取的。

正確的配置顯卡驅動

顯卡驅動和內核的關系

原理上,顯卡是硬件,需要顯卡驅動的正確配置,才能夠被操作系統所管理使用;操作系統識別顯卡驅動后,對用戶態提供顯卡的使用接口。

具體到Ubuntu系統,它用的是linux內核。有意或無意的更新linux內核后,重啟的機器會默認加載新版內核,而如果內核與顯卡驅動不兼容,就導致了循環登錄

最常見的解決思路:卸載并重新安裝顯卡驅動。新裝的驅動可以和原來版本相同,也可以是新版。然而這種做法并沒有從根本上解決問題:為什么我的內核會更新?我好象并沒有更新過內核?

一個合格的Linux用戶,應當會查看系統日志、定位報錯,并解決問題。查看了/var/log/apt/history.log,我發現了關鍵:

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)

沒錯,unattended-upgrade,這家伙意思是自動升級,在5月3日 16:51:58悄悄的安裝了新版內核(4.15.0-99)

有沒有辦法關掉unattended-upgrade呢?有,后文介紹。

如果保持unattended-upgrade打開,能不能讓顯卡驅動自動適配新內核?能,而且是推薦的方式(DKMS),不過也需要一番設置。

unattended-upgrade是什么?能關閉嗎?

通過man命令可以知道,unattended-upgrade在每天的cron任務(/etc/cron.daily/apt-compat)中被在隨機的時間點觸發使用,更新了內核。

對服務器而言,unattended-upgrade安裝了新版內核,安全角度來看是一件好事因為修復了漏洞;但對于使用ubuntu做深度學習訓練的人來說,這顯得多此一舉,幫了倒忙。即使不使用圖形界面而只是用ssh遠程連接使用,也會遭遇如下類似報錯:

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

而此條報錯也很直白的表明了,內核版本和顯卡驅動版本不兼容,顯卡罷工了,深度學習訓練暫停了。

關閉unattended-upgrade

對付暴力的唯一辦法就是更加暴力。把unattended-upgrade關掉才能代表深度學習的正義:

關閉unattended-upgrade
/etc/apt/apt.conf.d目錄下,查找包含Unattended-Upgrade的文件:

cd /etc/apt/apt.conf.d
ag 'Unattended-Upgrade'

我的機器上是/etc/apt/apt.conf.d/20auto-upgrades,有些機器上可能是/etc/apt/apt.conf.d/10periodic。編輯此文件,找到并修改它的取值為"0":

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

不過,關閉unattended-upgrade也只是杜絕了以后莫名其妙的被更新內核,當前已經被更新了內核而驅動版本不匹配,還是要搞一下顯卡驅動。

CUDA和顯卡驅動的關系

搞深度學習要用CUDA來加速訓練,有時候也用來部署加速。

CUDA安裝包里面帶有兼容版本的顯卡驅動。沒錯,必須搭配合適版本的顯卡驅動,才能支持CUDA,否則裝好的CUDA也永不上。

舉例:*華公司的AI集群訓練系統,物理機的顯卡驅動遲遲不肯更新,導致訓模師在2020年還只能用CUDA8這樣落后的東西。*華的sa們都在忙什么?

說回CUDA安裝包里的顯卡驅動,個人不建議安裝它。盡管它確實在多數情況下能讓CUDA正常運行起來,但是這一版本的顯卡驅動在安裝的時候不會注冊dkms模塊,這就導致一旦更新了linux內核,重啟機器后顯卡驅動再次和內核不兼容,圖形界面桌面進不去,CUDA用不了,深度學習訓練推理都罷工。

而手動從nvidia官網下載的顯卡驅動(standalone版本),是帶有dkms注冊支持功能的。在此倡議:Ubuntu系統下,請不要安裝CUDA安裝包里的顯卡驅動,請到nvidia官網手動下載.run格式的顯卡驅動,手動下載安裝

有人會問:ppa:graphics-drivers/ppa這個倉庫不香嗎?用apt安裝CUDA和顯卡驅動不是更方便嗎?

我覺得這類用戶沒有考慮過多個版本的CUDA共存的問題,他們也不曾遇到當急需用最近版CUDA而ppa源里的顯卡驅動版本過低時的那種無奈。

正確安裝顯卡的姿勢

關閉unattended-upgrade
/etc/apt/apt.conf.d目錄下,查找包含Unattended-Upgrade的文件:

cd /etc/apt/apt.conf.d
ag 'Unattended-Upgrade'

我的機器上是/etc/apt/apt.conf.d/20auto-upgrades,有些機器上可能是/etc/apt/apt.conf.d/10periodic。編輯此文件,找到并修改它的取值為"0":

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

獲取內核相關包

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

禁用開源驅動nouveau

新建/etc/modprobe.d/blacklist-nouveau.conf,內容:

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

正確的卸載顯卡驅動

想要正確的安裝顯卡驅動,必須知道怎么正確的卸載顯卡驅動。有時候使用的機器是別人之前維護的,而前任維護者也許配置的并不合理,需要先檢查再按自己的風格配置:

.run文件安裝的顯卡驅動,卸載:sudo /usr/bin/nvidia-uninstall,或找到原始的.run文件,執行sudo bash ./xxx.run --uninstall

cuda安裝包里的顯卡驅動,卸載:sudo /usr/bin/nvidia-uninstall

apt repo下載安裝的:

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

正確的安裝dkms依賴包

盡管standalone版本的nvidia顯卡驅動已經內置了注冊dkms的功能,但ubuntu16.04并不默認支持dkms。也就是說,雖然你滿心歡喜的在安裝顯卡驅動時選擇了dkms,但是某天因為unattended-upgrade更新了內核,顯卡會再次罷工。

正確姿勢:

sudo apt install dkms

查找和nvidia相關的dkms包:

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

安裝后,得到/usr/lib/dkms_autoinstaller這一可執行文件。

正確的獲取顯卡驅動

前面提到過,不要用CUDA安裝包里的顯卡驅動,它不帶dkms支持會導致以后問題頻發。請到官網自行下載適合版本的顯卡驅動。

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

這會把所有內核模塊打入到所有內核中。然后重啟系統即可。

如果不重啟,無線網卡和CUDA可能無法使用。

參考

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

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

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

ubuntu 禁止/取消系統自動更新的方法

總結

以上是生活随笔為你收集整理的彻底解决ubuntu循环登录和显卡驱动问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。