赞
踩
网络上有很多关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后再按经验处理图形界面的问题。
反复尝试以下操作(优先级从高到低,即先尝试位于前面的,无法进入再尝试位于后面的):
发现卡住后唯一的办法自然是硬复位机器,尝试重新打开机器。这次我们从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失效的情况(而且的确很难理解为什么重装几次后就一切正常了)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。