杂项(2)-Ubuntu故障修复(1)-记一次Ubuntu GNOME3图形界面与tty均崩溃的修复

问题描述

网络上有很多关ubuntu于图形界面(尤指gdm3,毕竟很多不会换桌面或懒得换桌面的人会使用这个默认桌面管理器)崩溃修复的方案,然而笔者比较惨,真真切切地体验了一把ubuntu系统所有界面崩溃的情况。呃,往好了想,至少系统引导、内部关键系统文件什么的都还没炸。
本文所述的解决方案可能不适用于专用嵌入式开发设备,因为很多这样的设备使用的是vivi或uboot等设施,而本文记录的方案用到了grub修复选项。相比之下,笔者没有试过其他启动引导设施的调试模式,但只要能通过任何控制台(哪怕是远程连接或是串行口连接)进入系统recover模式,理论上就可以用类似方法进行修复。此外,本文提供的方案能够运行的另一个前提是grub还能正常运作,否则必须要先修复grub至可以正确运行recover的程度。当然,绕过grub进行手动引导也是可以的。
此外,此法不需要重装CUDA等组件,请放心操作,当然也别太乱来。

系统环境

内核5.3.0-40-generic,发行版Ubuntu 18.04 LTS

问题复现

事情的起因是这样的:笔者早上起来,掀开笔记本电脑的盖子,发现登陆界面赫然一行大字:Authentication error。(注:经常写程序的人很多都有不关电脑的习惯,因为重新打开开发环境实在太麻烦了,索性盖上屏幕自动suspend就好。稳定的操作系统理论上应当支持这种需求,因为很多诸如服务器啊大规模运算啊之类的需求也不允许关机,不过以服务器标准要求一个运行在笔记本PC上的桌面操作系统确实有点强电脑所难。)这时试图输入密码也没有反应。笔者以为是Nvidia显卡驱动又出问题导致了X服务错误,遂登入tty3,卸载了nvidia驱动(笔者安装时是用apt安装的,卸载只需执行sudo apt-get remove nvidia*435)。返回tty3登出(执行logout指令)了一下,尝试登录,并没有解决问题。当时我以为只要重启再重装就好了,也没在意。顺便一提,笔者检查文件系统后并未发现关于Xsession错误的报告,说明不太可能是X会话重复登录引发的文件归属权错误。于是我就这样执行了一句reboot。
reboot之后发现问题很大,显示完机器logo就卡住了,也无法进入tty命令行界面。

操作过程

恢复tty的正常使用(玄学操作部分)

前半部分的操作基本是玄学,先依靠玄学成功进入系统tty后再按经验处理图形界面的问题。

基本操作原则

反复尝试以下操作(优先级从高到低,即先尝试位于前面的,无法进入再尝试位于后面的):

  • 直接进入系统tty
  • 从recover模式的resume进入tty
  • 从recover模式的root选项进入终端
    (提示:PC上按住Shift一般可进入grub)
    并在上述终端下尝试:
  • 卸载nvidia驱动
  • 安装nvidia驱动
  • 卸载gdm3
  • 安装gdm3
    直到能启动和使用上述三个终端中优先级较高者后,放弃当前终端,重复过程。如果某次重启后该终端失效,回到三个终端中优先级较低者,重复操作,直到能不通过recover模式进入系统tty。

笔者实际操作(仅供参考)

发现卡住后唯一的办法自然是硬复位机器,尝试重新打开机器。这次我们从grub的ubuntu高级选项进入recover模式。进入recover模式后打开网络连接(有一个network选项,选中后按Enter后稍等即可),再进入root模式,执行

apt remove gdm3
apt install gdm3

试图重装gdm3,然后reboot。这次依然无法进入任何界面,但是至少会显示三行日志信息(非常奇怪的是,这三行报告的不是错误而是操作成功的信息)。重新进入recover模式并打开网络,进入root模式,执行

cat /var/log/syslog

能看到GPU-0发生错误,毫无疑问此时所有GPU驱动都没有正确工作,包括开源驱动nouveau。尝试重新安装nvidia驱动(注意根据实际情况更换版本号):

apt install nvidia*435

由于之前安装过这个包,所以不需要联网直接按装。再次reboot。
reboot后情况似乎没有改善,但是这时如果从recover模式的resume启动的话可以进入tty界面。如果不成功,试试先从root模式卸载gdm3再reboot后进入recover模式并resume。
在recover的resume得到的tty下查看xorg日志和syslog,似乎没有值得注意的异常(或者不如说全都是值得注意的异常,但我们没有功夫一个个阅读对比,更何况tty没办法上拉。即便可以用more用管道滚动显示,这些错误日志也实在太多了)。尝试在这里安装gdm3,结果到99%卡住了,对键盘失去响应,硬复位。
这次尝试不用recover模式,发现仍然无法启动桌面,但是运气好的话已经可以正常进入tty终端了。

修复图形界面

在这里再次卸载gdm3并重新安装,安装完毕后出现了Ubuntu启动画面,然后就自动关机了。emmm好吧,至少X服务短暂地恢复了一下。
运气好的话,这次我们启动就可以不用recover也不用tty进入桌面了,它会自动进入登录画面。输入密码,结果它卡住了,按Ctrl+Alt+F3有反应,但是过一会儿计算机自动关机了,关机前顺便输出了一大堆nouveau的错误日志。这说明nvidia驱动其实尚未就绪。
相信很多人遇见过这个情况,没错,到这我们就有经验了。在grub界面ubuntu选项上按E,在linux指令后面加一个选项nomodeset(很多文章声称需要其他选项,但我的笔记本不需要)后按F10进入系统,果然可以正常登录了。
打开终端,输入

lsmod | grep nouveau

发现有输出,印证了之前的猜想:nvidia驱动没有正常工作。再输入

sudo apt-get install nvidia*435

结果输出了一条错误信息,按照错误提示输入

sudo dpkg --configure -a

等待一切就绪。完成后执行reboot重启。
如果这里操作没有错误的话,熟悉的GNOME3界面就回来啦。

总结

笔者至今也不知道本源性的原因到底是什么,现在想来也许只是某个包安装不正确(这些天来一直在安装各种开发设施,各种apt和make install),导致了一些能够导致系统崩溃但其实很容易解决的错误。前半部分靠玄学还是因为没有遇到过tty失效的情况(而且的确很难理解为什么重装几次后就一切正常了)。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值