本文将指导如何升级 Debian 11 Bullseye 到 Debian 12 Bookworm。
相关教程:Debian 10 Buster 升级 Debian 11 Bullseye。
#准备工作
除非你是物理服务器,以及没有用过奇奇怪怪定制或修改的内核的 KVM 构架的 VPS 和云主机,否则升级大版本更新内核是有一定机率导致 Grub 加载失败的,切记备份重要数据!
OpenVZ 6 和 LXC 构架的 VPS 是无法升级的,因为他们没有自己独立的内核
再强调一遍,一定要备份重要数据!
以下操作需要 root 权限,本文命令均已带上 sudo 前缀,请确保当前用户拥有 sudo 权限;或者直接使用 root 用户操作并省略命令中的 sudo。
#更新系统
首先需要更新你当前的系统
如果内核更新了,可以重启让最新的内核生效,也可以直接进行升级。
#升级系统
首先更新 apt 源,替换 bullseye 为 bookworm:
对于 Debian 12 以后的版本,所有 Debian 可以分发的打包的非自由固件二进制文件 (non-free),比如某些驱动,都被转移到 Debian Archive 中的一个新组件,称为非自由固件 (non-free-firmware)。如果您从旧版的 Debian 升级,并且需要这些固件二进制文件,您应该更新您系统上的 /etc/apt/sources.list,以使用这个新组件 (来源):
默认的系统 apt 源文件 /etc/apt/sources.list 应该是类似这样的:
大部分 Debian 的软件源配置文件使用传统的 One-Line-Style,路径为 /etc/apt/sources.list;但是对于容器镜像,从 Debian 12 开始,其软件源配置文件变更为 DEB822 格式,路径为 /etc/apt/sources.list.d/debian.sources:(参考)
国内服务器可以替换 deb.debian.org 和 security.debian.org 为 mirrors.tuna.tsinghua.edu.cn
然后我们再次执行更新系统:
更新过程中会提示一些软件是否需要自动重启,选 Yes 即可,以及一些软件的配置文件是否需要更新,按照自己的情况选择即可,默认回车即视为使用旧的配置文件,一般会出现在 OpenSSH 等软件的更新上。
在 apt-listchanges: News 界面可以按 q 退出:

提示是否自动重启服务:

提示是否更新 OpenSSH 配置文件:

注意某些软件更新后可能会更新 systemd 服务配置,此时我们可以执行 sudo systemctl daemon-reload 重新加载配置。
如果升级的时候遇到了如下错误:
删除 /var/lib/dbus/machine-id 这个空文件后重新执行命令即可,升级 dbus 时会自动生成这个文件。
更新后删除不必要的软件和依赖:
然后我们使用 sudo reboot 命令重启系统,耐心等待后,查看最新的系统版本:
这时我们就已经更新到了最新的 Debian 12 Bookworm 和内核了。







