因为Ubuntu 22.04.1发布有一段时间了嘛,就把手上20.04的小鸡升级了一下,然而其中某个商家某段时间的模板有问题,/boot分区只有300多MB,塞不下三个kernel,于是升级会报空间不足,这里记录一下解决方法。
注意该方法我自己摸索的,可能不是最好的方法,也可能有风险,请自行考虑是否使用_(:з」∠)_请按照以下顺序操作,顺序不对可能会有莫名其妙的报错。
升级前
首先,如果目前使用的kernel不是已安装的最新版,重启切换到最新版,注意是已安装的最新版,不一定是源里的最新版,比如说我这里是5.4.0-59。
Ubuntu默认保留2个kernel,因为/boot塞不下三个kernel嘛,我日常是把kernel包hold掉的,也就是不升级的,否则每次更新空间都会炸。版本升级前,Ubuntu强制要求更新所有软件包,所以要先取消掉(如果你没有hold,就不必)。
$ sudo apt-mark unhold linux-generic linux-headers-generic linux-image-generic
然后先卸载不用的旧内核,然后安装新内核,一定要先卸载再安装,否则/boot又会炸。
$ sudo dpkg --get-selections linux-image* # 找到标记为install但未在使用的旧版内核,例如linux-image-5.4.0-52-generic
$ sudo apt remove linux-image-5.4.0-52-generic
$ sudo apt autoremove # 卸载旧内核和相关软件包
$ sudo apt update && sudo apt upgrade # 安装新内核
安装之后再重启进入新内核,比如我这里是5.4.0-124,然后同样方法卸载刚才的5.4.0-59,保证当前只有一个最新版内核。
升级
检查一下/boot的空间,没问题之后即可正常升级。
$ sudo do-release-upgrade
如果卡住报找不到lspci,装一下pciutils包,我也不知道为什么升级管理器不检查这个。
升级后
升级完成后恢复hold状态,否则每次升级/boot又会炸掉。
$ sudo apt-mark hold linux-generic linux-headers-generic linux-image-generic
文章评论