道生一,一生二,二生三,三生万物。这话对于三太爷生活和工作所使用的环境来说,大体也适用。装好的 Windows、macOS,通常都是备份、恢复,虽说新装机的次数恐怕也绝不少,但通常都是出于试验性质。至于 Linux,那就更是了,因为它的便携性过于强大,从一台电脑上装好之后通常可以在其他机器上直接使用,因而我手里的几台电脑,如果上面有 Linux 的话,大抵同源——基本上都是克隆而来,省却许多软件和应用层面的安装配置。更何况,在一定时间段内,还可以算是互为备份。
手上就有这么一份几乎可以称作是“祖传”的 Ubuntu,版本是 16.04 LTS,只可惜已经记不起它是从什么版本升级上来的了。自从 18.04 的 LTS 版本发布,就没断绝想过也升上来试一把的念头,之前做过两次尝试,均以失败告终。两次的死法其实基本一致,那就是 boot 分区太小,升级程序给出了警示信息之后,老夫逞能,试图以迂回的方式解决却都没有成功,以至于死得很难看。
这次升级,做了比较充分的准备。首先,全盘克隆备份。然后,全力解决 boot 分区过小的问题。简言之:1、先把 boot 分区之后的 LVM 管理着的扩展分区干掉;2、用 DiskGenius 把 boot 扩容(接近 1GB 了,应该可以够用很久;当然实操需要注意,要给后面留下足够的空间容纳刚刚干掉而后续要重建的扩展分区);3、把剩余的空闲空间再次创建出扩展分区;4、把备份磁盘上的对应扩展分区克隆回来。引导此新布局的系统的尝试一次成功。既然如此,将此新布局的磁盘再次全盘克隆备份。
在 boot 分区容量足够之后,当然就是 sudo do-release-upgrade 了。下载的过程没有任何问题,但是安装到最后的时候,报告了一大堆的 error,说有若干包(总共有十几二十个)安装失败。由于有备份壮胆,就执行了重启,结果在 Grub 界面选中后就会当即挂起,再无动静。又重启,这次通过 Advanced 条目选择了上一个版本的内核,引导成功,但只有文本终端登录界面。登录正常,手动执行 startx,则显示(大概)如下的信息:
/usr/bin/Xorg: /usr/lib/libz.so.1: version ‘ZLIB_1.2.9’ not found (required by /usr/lib/libpng.so.1)
看起来是 zlib 的动态库不见了,手动安装之(https://blog.csdn.net/yuanchheneducn/article/details/51314255)然后再次重启,最新版本的内核就可以正常引导了,而且图形界面也同时生还。
正在赞叹间,噩梦又至,图形界面登录不进去,进入了臭名昭著的登录循环。这种情况之前也曾遇到过,好像就没解决掉。网上大多说此问题和 .Xauthority 文件的权限有关,或者是和 nvidia 的显卡驱动相关,看了一下,解决方案都不适用。后来偶然点了一下登录界面上的一个按钮(当时不知道它的作用),看弹出的菜单是用以选择图形环境的,共有 GNOME、GNOME on Xorg、Ubuntu、Ubuntu on Wayland 和 Unity 五种,默认是 Ubuntu,选择回升级前使用的 Unity,竟然登录成功。只不过桌面上原来有的快捷方式,全都显示不正常,图标是一个通用的图标,文字则成了 .desktop 的文件名本身。双击之后,系统会提示是否要信任此应用,点击信任之后,桌面图标即会恢复当初。后经测试,除了升级完成后系统默认选择的 Ubuntu 登录不成功以外,其他的四个都可以,真是运气差的可以。
至此,老树算是新花了。