Ubuntu 16.04直接升级至20.04 (Upgrade from 16.04 to 20.04 directly)

I. Ubuntu虽然继承于Debian,使用修改source.list的方式进行升级是可行的,但是一般情况下的发行版升级都会使用do-release-upgrade。

Ubuntu在同一个LTS的区间内是可以跨版本升级的,也就是说16.04到18.04内的任意版本,都是可以直接升级至18.04,但也只能升级到18.04。

我很懒,所以我得想办法直接从16.04升级到20.04才行。

 

II. 准备工作。此处我使用纯净的16.04版本进行操作。并且在准备过程中,我卸载了snapd等lxd相关的软件,以避免不必要的麻烦。

为了防止伸手党采集转载,本文有部分地方模糊处理了,如有疑问可以留言。

 

III. 开始升级。

注意:一旦开始升级,你就没有回头的机会了,Think before you do.

a.修改/etc/lsb_release,以欺骗do-release-upgrade获得版本信息,修改所有版本信息为18.04;

b.执行do-release-upgrade -d,期间会报错,是因为16.04的keyring太旧,需要导入ID为991BC93C的公钥;

c.重新执行do-release-upgrade -d,期间可能会遇到python报错,具体为import distro_info不存在,此时需要安装python3-distro-info;

d.重新执行do-release-upgrade -d,期间可能会出现上一步的组件中找不到get_all方法,则需需要下载h2o该文件进行替换python库的同名文件;

e.重新执行do-release-upgrade -d,将会提示几次无18.04的源升级可能不成功,是否继续,一路继续就可以启动升级过程了。

Ubuntu 16.04直接升级至20.04 (Upgrade from 16.04 to 20.04 directly)

IV. 验证

由于版本跨度大,glibc、sshd、grub等在升级过程中会有二次交互,注意根据自己的需要进行选择,不适合无人值守操作。

Ubuntu 16.04直接升级至20.04 (Upgrade from 16.04 to 20.04 directly)

内核会从4.4升级至5.4,重启后顺利启动,升级完成。

Ubuntu 16.04直接升级至20.04 (Upgrade from 16.04 to 20.04 directly)