Ubuntu 16.04到18.04系统升级

Published: by

预备工作

版本升级前惯例需要更新包列表和升级软件包到最新版本

sudo apt-get update

sudo apt-get upgrade

解决更新源连接失败的问题

执行sudo apt-get update的时候出现报错无法解析域名 archive.ubuntukylin.com

参考解决方案无法连接上 archive.ubuntukylin.com

打开路径

cd /etc/apt/sources.list.d

查看该路径下所有列表,一般来说,会出现这个报错的就是因为之前安装了某输入法,所以查看各种sogoupinyin.list,挨个用sudo vim打开,井号注释掉里面的,忽略掉更新源就行

这是本机的解决方式,不过关于无法解析域名的问题也可能与DNS配置有关,以后可以视情况而定

正式升级

使用ubuntu的升级工具(参考如何将Ubuntu升级到18.04最新版

sudo do-release-upgrade

解决登录循环问题

系统升级之后重启,新的登录界面,然后糟心的事情出现了……明明用户名密码都正确,结果屏幕闪一下,又回到登录界面

救命……于是赶紧查了查看主流解决方法都有什么

这个问题主流解释的原因跟显卡有关,而且发生状况正好跟我的PC机子相吻合。就是主板Intel集显,然后用的是Nvidia的独立显卡

进一步解释就是,这个系统认不得我的显卡了。

那正常解决方法一般来说应该有两个。第一是更新系统内核,内核够新,或许就能认得显卡。第二个方法是更新显卡驱动,让显卡这边主动帮助系统去认识它。

解决登录问题

既然图形界面进不去,至少也得用命令行操作吧

参考此条的step1部分如何解决Ubuntu18.04循环登录/卡在开机界面/无法进入图形界面的问题

简单来说,就是在登录Ubuntu系统的引导页面,第一行*Ubuntu的地方按e进入编辑模式。出现的编辑项里,到倒数第二行末尾找到handoff在后面添加数字3,变成handoff 3,也就是多用户纯文本模式。

再按ctrl+x就可以进入命令行模式。用自己的用户名密码登录即可操作后续。

查看内核版本

查看内核版本uname -a

普遍认为4.15的内核就可以了,验证了一下没问题

解决显卡驱动问题

首先简述一下我的反复踩坑过程

卸载旧的显卡驱动

有些简单卸载重装指令并不是太好用,例如下面这个

sudo apt-get remove nvidia-*

sudo apt-get autoremove

没记错的话,用了上面这个指令我莫名删了一堆python相关包,也不知道跟这个显卡有啥关系

不过这样做应该确实是把旧驱动卸载了

第一坑,旧版本驱动不可行,装最新驱动

输入nvidia-smi查看GPU状态

得到报错Command 'nvidia-smi' not found, but can be installed with:

系统推荐了两个驱动安装指令,不过推荐的驱动都太老了,例如我试了这个指令

sudo apt install nvidia-utils-390

装完之后输入nvidia-smi还是报错

这回报错NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the lastest NVIDIA driver is installed and running.

于是我又卸载了,到官网看看当前显卡的最新驱动是什么版本

官网查询地址

关于显卡驱动的安装,其实有很多方式,很多人是直接往机器里面下了安装包然后再run安装

因为我反复多次,没记错的话最后选的是用PPA仓库的方式安装的,可参考博文

sudo add-apt-repository ppa:graphics-drivers

sudo apt-get update

sudo apt-get install nvidia-450

sudo reboot

另外,查询可用驱动版本也能用命令行,不过建议还是核对一下官网

sudo apt-cache search nvidia

ubuntu-drivers devices

第二坑,需要禁用驱动加载

除了查看GPU状态之外,考虑到驱动加载的问题,应该再看看当前内核到底加载的啥

使用指令lsmod查看当前已载入系统模块

lsmod | grep nvidia

lsmod | grep nouveau

如果N卡正常运行,上面指令里面应该是第一条有输出,第二条没输出。很不幸,现在是第一条没输出,第二条有输出……说明加载的不是N卡自己搞的驱动,而是那个开源的驱动。

于是……又去卸载驱动,然后考虑应该禁用开源驱动。

禁用方法参考博文

首先打开sudo vim /etc/modprobe.d/blacklist.conf禁用

blacklist nouveau
option nouveau modeset=0

保存退出后使之生效

sudo update-initramfs -u

第三坑,解决nvidia-smi报错

后面的尝试就比较混乱了

最新驱动重装nvidia-smi还是报错,结果又装了别的

参考stackoverflow里面的提问

根据回答之一装了nvidia-cuda-toolkit

nvcc --version

sudo apt install nvidia-cuda-toolkit

有篇总结nvccnvidia-smi指令的博文可以参考一下

另外有说用dkms安装驱动的,但是我这边试了没作用

第四坑,lightdm加载失败bug

在不报错之后,想把装显卡驱动之前停了的显示服务lightdm打开

之前禁用时候用了

sudo service lightdm stop

现在想启用,使用指令

sudo service lightdm start

结果报错

[FAILED] Failed to start Light Display Manager.

See 'systemctl status lightdm.service' for details.

关于这个启动不了的头疼的问题,最后发现是个倒霉的Ubuntu的bug

用下面的指令就可以正常启动

/lib/systemd/systemd-sysv-install enable lightdm

这个坑我卡了很久,结果这算是个跟显卡驱动无关的问题

总结以上流程代码(重点)

因为操作反复多次,所以这个总结算是记忆有点模糊的整理可能应该做的全流程

1.卸载旧驱动

sudo apt-get remove --purge nvidia-*

sudo apt-get autoremove

sudo reboot

2.关闭图形界面

sudo service lightdm stop

3.禁用开源驱动nouveau

首先打开sudo vim /etc/modprobe.d/blacklist.conf禁用

sudo vim /etc/modprobe.d/blacklist.conf

/# 编辑内容

blacklist nouveau

option nouveau modeset=0

/#保存退出

sudo update-initramfs -u

4.安装驱动

sudo add-apt-repository ppa:graphics-drivers

sudo apt-get update

sudo apt-get install nvidia-450

sudo reboot

5.安装cuda组件

sudo apt install nvidia-cuda-toolkit

sudo reboot

6.打开图形化界面

/lib/systemd/systemd-sysv-install enable lightdm

重启

7.检验指令汇总

查看N卡状态nvidia-smi

检验N卡官方驱动是否加载lsmod | grep nvidia

检验开源驱动是否关闭lsmod | grep nouveau

结果

Ubuntu18.04在登录的时候设置小按钮有个桌面选项,一顿操作下来,我发现Unity和Ubuntu Wayland两个选项都能进,但是Ubuntu这个选项不行,Ubuntu这个选项似乎是Gnome版本的,再尝试解决也不能成功,而且我的主板不能disabling secure boot(主板BIOS里面boot设置的是Legacy而不是UEFI所以没法关这个安全启动)

关于ubuntu的安全启动可以参考官方wiki,但是这里面解决方案对本机来说都不行

参考这一条,有人说Wayland也不行……我也搞不懂为啥了,总之就最上面的选项进不去。