本文共 782 字,预计阅读时间 3 分钟。
为了一些工作原因需要升级 Linux kernel 到 5 及其以上版本进行一些调试,大部分默认的开发机系统为 Debian 9,于是花了几个小时对系统进行了升级。
Debian 9 Stretch 升级 Debian 10 Buster
准备阶段
先检查冲突:
1 | sudo apt-mark showhold |
正常返回为空,如果存在冲突则按以下方式删除:
1 | sudo apt-mark unhold package_name |
简单执行一下 sudo apt update
看看有没有类似以下的报错:
1 | the package XXXXXX needs to be reinstalled but I can't find an archive for it. |
若有报错,则备份 /var/lib/dpkg/status
后,通过修改该文件,删除相关的 Package 段。
排除冲突和错误后,稳妥起见,可以刷新一次索引:
1 | sudo apt update |
升级
修改 sources.list
文件:
1 | sudo vim /etc/apt/sources.list |
sources.list:
1 | deb http://deb.debian.org/debian buster main |
随后进行更新升级:
1 | sudo apt update |
完成通过 sudo reboot
重启系统,通过 lsb_release -a
检查版本。确认升级成功后进行内核升级
Linux 内核升级
配置和检索
修改 sources.list
文件,更新和使用 buster-backports:
1 | sudo vim /etc/apt/sources.list.d/backports.list |
backports.list
1 | deb http://http.debian.net/debian buster-backports main |
刷新索引:
1 | sudo apt update |
随后搜索可用的 linux image,找到类似以下字样。
1 | sudo apt search linux-image- |
其中 amd64
可能会有差别,有些情况下会包含 cloud-
前缀,now 之后的当前版本也可能有差别,但是注意:amd64
之类的平台描述之后应该没有 -dbg
标志,名称中也不应该制定类似 5.2.0-0.bpo3
之类的特定版本信息(除非需要安装指定版本 release,并不再升级)。
1 | linux-image-amd64/buster-backports,now 5.2+107~bpo10+1 amd64 |
类似的,搜索 linux headers。建议安装,header 都用不到可能没有不得不升级系统的必要吧(笑
1 | sudo apt search linux-headers- |
同样,应该包含类似这样的结果:
1 | linux-headers-amd64/buster-backports,now 5.2+107~bpo10+1 amd64 |
升级
升级内核:
1 | sudo apt install -t buster-backports linux-image-amd64 |
grub 更新结果应该类似如下,可能有多余的版本,5.x.x 的版本号也可能不同:
1 | Generating grub configuration file ... |
随后 sudo reboot
重启即可。
垃圾清理
重启进入系统后,通过 uname -r
检查内核版本。确认升级成功后进行清理工作。
多余的 image 和 headers
1 | sudo apt list|grep installed|grep -v automatic|grep linux-image- |
手动记录下 除了刚刚安装的内核版本之外 ,旧版本的 image 和 headers。
清理
通过以下命令将上一步记录的结果清理掉:
1 | sudo apt purge linux-xxxxxxxx |
继续清理:
1 | sudo apt clean |
至此,优雅的完成升级。