Cyrus Blog

FLAG{S0_H4PPY_C_U_H3R3} (>.<)

Debian 9 Stretch 升级 Linux 5.x.x 内核

本文共 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
2
3
4
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt autoremove

升级

修改 sources.list 文件:

1
sudo vim /etc/apt/sources.list

sources.list:

1
2
3
deb http://deb.debian.org/debian buster main
deb http://deb.debian.org/debian buster-updates main
deb http://security.debian.org/debian-security buster/updates main

随后进行更新升级:

1
2
3
4
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt autoremove

完成通过 sudo reboot 重启系统,通过 lsb_release -a 检查版本。确认升级成功后进行内核升级

Linux 内核升级

配置和检索

修改 sources.list 文件,更新和使用 buster-backports:

1
sudo vim /etc/apt/sources.list.d/backports.list

backports.list

1
2
deb http://http.debian.net/debian buster-backports main
deb-src http://http.debian.net/debian buster-backports main

刷新索引:

1
2
sudo apt update
sudo apt upgrade

随后搜索可用的 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
2
3
sudo apt install -t buster-backports linux-image-amd64
sudo apt install -t buster-backports linux-headers-amd64
sudo update-grub

grub 更新结果应该类似如下,可能有多余的版本,5.x.x 的版本号也可能不同:

1
2
3
4
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.2.0-0.bpo.3-amd64
Found initrd image: /boot/initrd.img-5.2.0-0.bpo.3-amd64
done

随后 sudo reboot 重启即可。

垃圾清理

重启进入系统后,通过 uname -r 检查内核版本。确认升级成功后进行清理工作。

多余的 image 和 headers

1
2
sudo apt list|grep installed|grep -v automatic|grep linux-image-
sudo apt list|grep installed|grep -v automatic|grep linux-headers-

手动记录下 除了刚刚安装的内核版本之外 ,旧版本的 image 和 headers。

清理

通过以下命令将上一步记录的结果清理掉:

1
sudo apt purge linux-xxxxxxxx

继续清理:

1
2
sudo apt clean
sudo apt autoremove

至此,优雅的完成升级。

Reference