Ubuntu18的bug导致系统启动后黑屏的问题
这是我在使用Ubuntu18时遇到的问题,文章包含遇到黑屏时的各种原因及解决方法(或链接),如果是您在使用Ubuntu18时遇到此问题,建议直接跳转到解决方法处。
问题背景
使用系统
Ubuntu 18.04.1 LTS(可以通过sudo lsb_release -a命令查看当前使用的系统版本)
Linux内核版本(使用uname -a或-l 或-r查看):
问题描述
Ubuntu系统很久没有关机,某次重启电脑时,可以看到Ubuntu启动项,并且系统正常启动,但是启动后屏幕始终黑屏,无法进入桌面,视觉上来看,屏幕在深黑和淡黑之间闪烁。
问题定位
内核问题?
我在使用期间更新过3次内核版本,并下载过若干软件安装,且因为boot分区容量不足而删除过旧内核。起初我觉得是因为我在解决boot分区空间不足问题时误删了还在使用的旧内核,于是我的第一反映是下载指定的内核版本,下载指定内核的方式见这篇教程。
由于我进不去桌面,所以我在重启后按Ctrl+alt+F1进入了tty,并根据教程下载了内核,但是重启后问题仍然没有解决。
grub启动项问题?
我之前在安装Ubuntu系统时也遇到过grub启动项出错的问题,其解决方式可以参考我的博客Windows7下安装Ubuntu双系统遇到的坑:Ubuntu从安装到卸载到重装 ,或者Grub引导项修复详解。但是我根据提示修复重启后仍然存在此问题。
显卡支持分辨率与Ubuntu新版本内核不兼容?
网上提及另一可能的原因是显示器分辨率的问题。即Ubuntu升级内核之后,可能不再支持某些较旧的显示器分辨率,从而导致黑屏,考虑到我用的是Ubuntu18,而实验室显示器又过于破旧,因此我对这一可能性深以为然…
该问题有两种解决方法,第一种是在recovery模式下修改系统配置,使其支持Nvidia显卡,该解法参考博客安装ubuntu时黑屏三种解决办法 ,第二种是在tty中重新设置自己需要的分辨率,该解法可参考博客ubuntu下如何查看和设置分辨率。
经过一番折腾后,结果当然还是不行啦。
真正原因——bug导致!
请教了实验室的大牛师兄后,师兄给出了他的看法:
1)如果Ubuntu系统内核出了问题,那我是不可能进入Ubuntu启动项的;
2)如果grub启动项出错,同样无法进入系统;
3)进入tty后再重启系统;
4)建议多搜索英文资料。
师兄的意见不禁使我恍然大悟:查找资料前先大致分析一番,便可排除内核和启动项的问题,这样就可以节省大量时间,而不是像我这样盲目搜索,白费功夫。
我在外网上搜索一番后,终于找到了症结所在:Ubuntu内核bug导致gdm3和nvidia驱动冲突,使得gdm3无法正常启动图形界面,而gdm不断尝试启动的后果就是屏幕的闪烁。(我这才想起我之前安装过nvidia-smi安装包,并且该命令在这台电脑上无法使用,这有可能是和gdm3造成冲突的根本原因。)
问题详细描述见Ubuntu 18.04 stuck in boot after starting Gnome Display Manager on Intel Graphics
bug报告见Ubuntu 18.04: gdm3 does not switch to graphics after update
解决方法见GUI does not start,下面详细说明。
解决方法
sudo apt-get remove --purge nvidia-* # 卸载nvidia相关组件
sudo apt purge gdm gdm3 # 卸载gdm和gdm3
sudo apt install gdm3 ubuntu-desktop # 重新安装gdm3
systemctl restart gdm # 重新启动gdm3服务
如此,便可解决该问题。
总结
像师兄学习,遇到问题前先思考下问题出在哪里,至少排除掉不可能的选项,避免盲目搜索;
中文博客、资源互相抄袭,搜索资料时打开不同的网页却经常碰到相同的内容,给查资料带来了极大的困扰,严重影响了搜索效率,要养成查第一手英文资料和阅读英文资料的习惯;
遇到问题要及时记录,避免再犯,多总结,多思考。
推荐阅读
-
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
-
完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)
-
Windows系统启动进入桌面后就黑屏的5种解决方法图文教程
-
PHP中使用foreach和引用导致程序BUG的问题介绍
-
ADSL导致的系统启动变慢的问题
-
详解完美解决MacOS catalina 升级后Vmware黑屏的问题
-
mysql对无索引的字段进行排序后limit,有可能导致分页查询重复出现问题
-
XP下WORKSTATION启动慢导致系统启动时间过长问题的解决方法
-
Win10更新后导致双系统(Linux&Windows)开机引导失败出现grub rescue问题的解决办法
-
解决MySQL读写分离导致insert后select不到数据的问题