跳转至

29- 系统迁移与升级(Debian 11 → 12 → 13) 🔄

前提条件 ✅

  • 当前系统为 Debian 11(Bullseye)或 Debian 12(Bookworm),有 root 权限
  • 所有关键服务已备份(数据库、Web 文件、配置、/etc /home /var/www /var/lib 等)
  • 虚拟机环境:VMware Workstation Pro(强烈建议先做快照或完整备份)
  • 网络稳定,apt 源已配置为国内高速镜像(如清华/阿里)
  • 全局约定:主机名 LinuxDC,IP 192.168.1.100

详细步骤 🛠️

  1. 升级前全面准备与检查(所有版本通用)
# 备份关键文件
sudo tar -czf /backup/etc-$(date +%Y%m%d).tar.gz /etc
sudo rsync -avz --delete /var/www/ /backup/www-$(date +%Y%m%d)/
sudo mysqldump --all-databases -u root -p > /backup/all-databases-$(date +%Y%m%d).sql

# 检查当前版本
lsb_release -a
cat /etc/debian_version

# 更新当前系统到最新
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y

# 检查是否有未重启的内核更新
sudo needrestart -r l   # 或 cat /var/run/reboot-required

# 清理空间
sudo apt clean
sudo journalctl --vacuum-time=30d
  1. Debian 11 (Bullseye) → Debian 12 (Bookworm) 升级

修改 apt 源:

sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*.list

推荐源模板(清华镜像):

sudo tee /etc/apt/sources.list << EOF
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
EOF

两次更新(最小化中断):

sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y

# 第二次更新(处理依赖变化)
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y

重启:

sudo reboot

验证:

cat /etc/debian_version   # 应显示 12.x
lsb_release -a

  1. Debian 12 (Bookworm) → Debian 13 (Trixie) 升级(testing 阶段,生产谨慎)

注意:截至 2026 年 1 月,Debian 13 (Trixie) 仍为 testing 分支,升级有风险,仅用于测试环境或提前准备。

修改源:

sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*.list

添加 non-free-firmware(Trixie 继续要求):

sudo sed -i 's/main$/main contrib non-free non-free-firmware/' /etc/apt/sources.list

升级流程同上(两次 full-upgrade + autoremove):

sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo reboot

Trixie 常见变更点(需特别注意): - PHP 8.2 → 8.3(可能影响 WordPress/Nextcloud 等) - Python 3.11 → 3.12 - 内核 6.1 → 6.10+ - /usr-merge 完成(/bin → /usr/bin 等) - AppArmor 更严格(可能需调整策略)

  1. 回滚与故障恢复

  2. 升级前快照(VMware:右键虚拟机 → Snapshot → Take Snapshot)

  3. 失败时:从快照恢复,或用 live USB 挂载根分区,改回 sources.list 为 bookworm
  4. 常用恢复命令:

    # 如果升级卡住,进入 rescue mode
    mount /dev/sda1 /mnt
    chroot /mnt
    apt update && apt install --reinstall linux-image-amd64
    

  5. 升级后常见清理与优化

sudo apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')   # 清除残留配置
sudo update-grub
sudo apt autoremove --purge
sudo systemctl daemon-reload

实践任务 🎯

  1. 在测试虚拟机上备份 /etc 和 /var/www,执行 Debian 11 → 12 升级全流程,验证服务正常
  2. 检查升级后内核版本、PHP/Python 版本是否符合预期
  3. 模拟失败场景:改 sources.list 为 trixie,升级失败后回滚(恢复 sources.list + apt update)
  4. 编写一个简单升级检查脚本:检查当前版本、可用更新、reboot-required 等

自测问题 ❓

  1. 为什么升级 Debian 时要先执行两次 apt full-upgrade?
  2. Debian 13 (Trixie) 当前是什么阶段?生产环境是否推荐直接升级?
  3. /etc/apt/sources.list 中 non-free-firmware 的作用是什么?
  4. 如果升级过程中出现依赖冲突,最快速的排查方式是什么?

总结 📌

Debian 升级路径清晰(sed 替换 codename + 双 full-upgrade),但关键在于事前备份 + 快照 + 逐步验证
生产环境建议:蓝绿部署、Ansible 批量升级、监控告警、回滚计划。
本章掌握后,可安全完成系统演进,为后续 Git 管理、考点总结、学习计划打下坚实基础。