系统配置:
ubuntu linux 16.04 LTS, 安装在一个1 TB的硬盘上。
问题描述与解决过程
今年10月份的一个晚上本人启动ubuntu linux 16.04 LTS 进入图形界面的登录界面时发现登录界面和之前的有所不同,键入密码后登录后整个屏幕都花屏了,无法对系统进行任何操作。
Google 一下问题,参考了一些资料大概分析了问题产生的原因,很有可能是显卡驱动的问题,造成的原因可能是两个方面:
1. 显卡(NVIDIA)驱动更新重启后导致加载图形界面出现故障。
2. 系统更新了内核,导致之前安装的显卡驱动与更新后的内核不兼容。
为了解决这个问题,首先需要进入linux 命令行模式(按下Ctrl+Alt+F1,输入登录名和密码)
我的思路是:a.卸载旧的NVIDIA驱动b.重新安装ubuntu桌面系统看是否能够解决问题。
想到这个层面以后键入如下命令:
1.首先尝试卸载NVIDIA系统驱动
sudo apt-get autoremove --purge nvidia-*
2. 重启
reboot
然而系统重新加载后出现登录画面还是老样子,将入登录密码后直接黑屏,我意识到这是图形界面系统在卸载NVIDIA驱动后无法加载显卡驱动造成的,所以应当马上安装ubuntu linux desktop,于是,迅速切换至命令行模式,键入如下命令重新安装desktop:
sudo apt-get install –reinstall ubuntu-desktop
然而,系统提示安装失败,原因是缺少依赖选修,按照命令提示,
运行:
sudo apt-get –f install
然而又报错,查看报错信息,提示磁盘空间不足。好奇怪,我的系统装在1TB的磁盘上而且用了不到半年,况且使用过程中也没有产生那么多的数据呢。
为了了解磁盘使用情况,我键入命令:
sudo df
不看不知道,一看吓一跳,我发现在/boot 目录的空间利用率已达到100%,之前安装系统时/boot预留了200M 够系统启动使用了。
键入 ls –la /boot 查看,发现有好几个版本的 linux 内核。
为此,我们需要删除非当前使用的linux内核,以腾出空间给ubuntu linux desktop 重新安装。
这一步骤,我参考了国外一位大神的方法:
翻译过来为:
a.列出所有安装的内核
dpkg -l linux-image-\* | grep ^ii
b.显示除当前正在使用的内核外其他可以除去的内核及其对应的头文件:
kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver
c.删除当前不在使用的内核以及头文件
sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
运行purge 命令后再次df 命令查看,发现只剩下当前使用的内核版本对应的文件了。
接着我尝试:
Sudo apt-get –f install
Sudo apt-get install –reinstall ubuntu-desktop
Sudo apt-get install unity
然后尝试打开桌面系统:
Sudo service lightdm restart
然而系统还是黑屏,我想这可能是ubuntu linux desktop系统安装后,xwindows 系统的相关权限和配置尚未完成,再一次google相关问题,
尝试:
Sudo mv .Xauthority .Xauthority.backup
并
Sudo service lightdm restart
终于久违的登录界面出现了,虽然分辨率很差,登录后桌面恢复,不再花屏了。
接下来的事情就是重新安装NVIDIA显卡驱动。
总结:
Ubuntu linux 在联网状态下,内核经常更新,内核映像写入/boot目录,然而就的映像仍然保留着,对应分配较小空间的linux系统来讲,应当及时清理旧的不在使用的系统内核,尽量减少这方面造成的系统驱动与内核之间的不匹配(尤其是显卡驱动),建议不让系统自动更新linux 内核。