记一次ubuntu系统更新之后自我救赎的经历

笔者患有轻微强迫症,明知道Ubuntu系统更新之后可能出现各种问题,但是还是忍不住更了一个小版本,从17.04更新到17.10,在更新之后,果然出现了问题。

更新重启之后,电脑就一直处于启动的画面,但是实际上并进不了系统。以前没有过类似的经历,并不知道如何处理。google之后,对grub这个词有了一些概念,它就是开机过程中我们常说的BootLoader,Ubuntu可以通过它进入recovery mode,从而做一些补救的工作。

首先,为了方便可以进入recovery mode进行各种调试,我们需要让grub显示出来,高版本ubuntu默认是隐藏了该选项的。在隐藏的时候,我们需要在开机之后进入ubuntu启动画面之前狂按shift键,然后便会出现bootloader界面,之后选中高级选项,然后选中recovery mode,然后选中fsck,然后点击再选中第一个选项,它的作用在于为后续的root操作获取写入权限。然后返回前一个界面,点击root,这时候输入root密码即可。然后输入下面命令

sudo vim /etc/default/grub

将其中的部分内容进行修改

# 显示启动项
GRUB_HIDDEN_TIMEOUT=10
GRUB_HIDDEN_TIMEOUT_QUITE=false
# 将启动详细信息以文本形式展示出来
GRUB_CMDLINE_LINUX_DEFAULT=“text”

上面的设置都非常重要,显示启动项可以让我们不用每次重启都去拼人品展示grub选项,而将启动信息已文本形式展示出来可以让我们清楚启动过程中哪些步骤出了问题,便于修复问题。

靠这种方法,我发现了三个问题

Failed to start Virtualbox Linux kernel module

这个问题大概的原因是在系统升级的时候,没能成功安装virtualbox,因为virtualbox是第三方源,但是我很纳闷为啥一个应用程序会对系统启动造成影响。我的解决方法是在grubroot模式下,直接使用

apt remove virtualbox*

除了这个问题之外,启动的时候还有一个问题,大概是包冲突,这个问题记不清了,google一下就好了

解决了这两个问题,启动的时候基本没报错了,但是很奇怪的是,系统仍然进不去,我看了一下启动流程,系统最后执行到了我的一个自启动程序, 我想,难不成是它阻塞了系统进入登录界面?我进入recovery moderoot模式下,把该自启动命令注释了。再重启电脑试了一下,果然可以进入系统了。由此可见,将启动信息以文本展示出来有多重要了。

进入系统之后,还有两个问题,一个是以前的任务栏不见了,这个问题不难解决,难点在于不知道如何叙述问题。。。至少我是这样的,不知道怎么描述这种现象,后来才想起任务栏一词。只要知道问题,很简单就搜索出来答案,我的解决方法是将调出任务栏的命令放到自启动文件中: sudo vim /etc/rc.local

mate-panel&

还有一个问题便是DNS解析有问题,我向往常一样使用

sudo vim /etc/resolve.conf

设置了DNS再保存,结果发现无法保存,即使是以管理员权限,我后来仔细看了这个文件,它好像是一个链接文件,我使用rm -f删除了,重新编辑再保存,于是这个问题就解决了。


上述便是这次折腾的所有经历了,花了半下午加一个晚上的时间去解决这些问题,中途也想放弃拯救它,重装一个系统,但是这样感觉自己又不甘心,还好终于弄好了,自己也学到一些系统调试和排错的技巧,同时对Ubuntu整个启动流程有了更加清晰的认识(在不知道如何显示grub的时候,每次进入recovery mode都是靠人品,电脑启动了无数次...)。