ubuntu安装驱动后黑屏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu安装驱动后黑屏相关的知识,希望对你有一定的参考价值。
强制关机,然后重新开机,在Ubuntu登录粉色界面上,选择第二个,然后进去以后选择一个括号里面带recovery的项,然后自动黑屏,然后弹出一个选择框,选择root:
接着在屏幕下部分可以看到命令行,按回车进入到自己的用户名下,输入命令卸载安装的驱动(示例为nvidia显卡)
sudo apt-get remove --purge nvidia*
sudo reboot
重启电脑,就正常了。
参考技术A 我电脑显卡是Nvidia显卡~重启之后屏幕显示“输入不支持”,这是因为ubuntu对显卡的支持有关,需要手动添加显卡选项:nomodeset,使其支持Nvidia系列显卡
方法一
进入安装时,光标移动到"install ubuntu",按"e"进入编辑模式,进入命令行模式,找到''quite splash''然后去掉"--"后,添加“nomodeset”(依照不同显卡进行不同显卡驱动选项的添加,我们使用的是Nvidia显卡,添加nomodeset)F10安装
方法二
当安装结束后,启动系统出现黑屏
开机时按住shift不放,出现grub画面,按'''e''' 进入编辑开机指令的模式(或者开机直接按“e”), 同样找到'''quitesplash''' 并在后面加上“nomodeset”,按''F10''启动系统
方法三
开机按shift,选择“recovery model”,进入系统之后打开终端
sudo vi /etc/default/grub
按‘ℹ’进入vim的编辑模式
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
按“esc”,输入“ :wq! ” (有冒号) 保存退出,更新grub
sudo update-grub
在重启之前,我们发现电脑屏幕分辨率不是最佳(如果分辨率正常,则不用)
点击右上角“系统设置—>软件和更新—>附加驱动”选择使用Nvidia驱动
重启电脑。
Ubuntu16.04安装完成。
彻底解决ubuntu循环登录和显卡驱动问题
什么是循环登录
开机/重启后的登录界面,分辨率变得很低,并且输入密码后黑屏一闪而过又重新回到输入密码的界面,如此循环无法跳出,俗称“循环登录”。
为什么会循环登录
造成循环登录有多种可能的原因:
1. 显卡驱动相关原因,导致循环登录
最常见的是,内核版本和显卡驱动版本不兼容导致循环登录。 例如内核升级但没有配置支持显卡驱动。这是本文重点关注的一类原因。
也有比较少见的,独显和集显共存问题,nvidia-prime切换后可以使用:
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
关掉才能代表深度学习的正义:
sudo vim /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源里的显卡驱动版本过低时的那种无奈。
正确安装显卡的姿势
获取内核相关包
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安装驱动后黑屏的主要内容,如果未能解决你的问题,请参考以下文章