2026-10-24 · Debian / 内核 / 运维

Debian 13 系统升级与内核切换实录

服务器跑的是 Debian 13 (trixie),初始内核 6.12.107。安全更新攒了 73 个包,趁刚上线赶紧升掉。记录一下过程和坑。

无人值守升级

apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y \
  -o Dpkg::Options::="--force-confdef" \
  -o Dpkg::Options::="--force-confold" dist-upgrade

关键参数:

  • DEBIAN_FRONTEND=noninteractive:不弹 debconf 交互界面;
  • --force-confdef --force-confold:配置文件有改动时保留旧配置,避免升级卡在"是否替换配置"提示上。

这次升级涉及 113 个包,包括 libc、openssh-server、python3.13、qemu-utils 和内核 6.12.113。

升级完先检查

apt-get -s upgrade | grep -E '^[0-9]+ upgraded'   # 应为 0 upgraded
dpkg --audit                                        # 应无输出
systemctl --failed                                  # 应无失败单元

如果有包处于半配置状态,dpkg --audit 会列出来,先 dpkg --configure -a 处理。

内核切换

新内核装好后,uname -r 仍是旧版本,因为内核要重启才生效:

uname -r                    # 6.12.107+deb13-amd64
dpkg -l | grep linux-image  # 已经装了 6.12.113
reboot

重启后确认:

uname -r
# 6.12.113+deb13-amd64

Debian 不会像 Ubuntu 那样自动生成 /var/run/reboot-required,所以内核升级后要自己记得重启。

重启后的内核告警怎么看

dmesg -l err,warn 里常见两条:

  • amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled:KVM 虚拟机的 ACPI 信息不全,CPU 调频交给宿主机,无害;
  • systemd-ssh-generator: Failed to query local AF_VSOCK CID:容器/虚机没有 vsock 设备时的提示,无害。

这两条在云服务器上非常常见,不影响使用。真正要关注的是硬件错误(MCE)、磁盘 IO 错误、OOM 记录这类日志。

升级后建议

  1. 重启后用 systemctl --failed、ss -tulnp 确认服务与端口正常;
  2. 保留一个旧内核作为回退(/boot 空间够的话别急着删);
  3. 开启 unattended-upgrades,只自动打安全补丁;
  4. 检查磁盘:这次升级后根分区从 2.0G 涨到 4.5G,属正常(新内核 + initramfs + 包缓存)。

升级本身不难,难的是升级完知道该检查什么。这份检查清单可以直接照抄。