HomeLab 翻车自救指南:Ubuntu 升级断电后怎么把机器救回来

本文最后更新于:2026年10月13日 上午

HomeLab 翻车自救指南:Ubuntu 升级断电后怎么把机器救回来

国庆长假,本来打算躺平。手痒,决定把 HomeLab 全部节点从 Ubuntu 24.04 升到 26.04.1。

一台叫 n100-cheshi-0 的节点被我作进了「开不了机」,故障持续了几个小时。下面是完整现场加自救过程。

📝 声明:这不是 Ubuntu 升级教程,是一次事故复盘。命令都是我在真实故障机上跑过的,照抄有风险,动手前先确认自己的分区布局。

故障是怎么发生的

锅不在 Ubuntu,在我。

时间线:

  1. 国庆假期,计划把 HomeLab 全部节点从 24.04 升到 26.04.1;
  2. 第一台出奇顺利,我心态飘了,觉得这玩意儿有手就行;
  3. 轮到 n100-cheshi-0,敲完升级命令就出门了;
  4. 回来一看:升级报错,反复重启都进不去;
  5. 情急之下按了电源键断电。这一步才是致命的;
  6. 再开机,系统彻底起不来,SSH 也连不上。

第 5 步我最该骂自己。升级过程中 dpkg 在写文件、刷 initramfs、改 GRUB,这时候断电,等于同时把 dpkg 数据库和文件系统撕开一个口子。多次重启无果的时候,最不该做的就是拔电。

🐾 注意:升级卡住先别断电。能进 TTY 就进 TTY 看日志(journalctl -xb、tail -f /var/log/dpkg.log)。实在不行,长按电源键等系统自己走到 halt,也比在写盘中途硬拔强。

核心思路:用 Live USB 起一个临时救援系统

故障看着吓人,但绝大多数情况能修,不用重装。

思路一句话:

用 Ubuntu Live USB 启动临时救援系统,chroot 进原系统,把断电中断的软件包、文件系统、引导挨个修回来。

具体是七步。

七步修复实录

第一步:做一个 Ubuntu Live USB

在另一台能用的电脑上:

  1. 下载 Ubuntu 26.04 桌面版 ISO;
  2. 用 Rufus 或 balenaEtcher 写入一个至少 4GB 的 U 盘;
  3. 插到故障主机,进 BIOS / UEFI,把 USB 设为第一启动项。

📝 备注:桌面版 ISO 就够了,别折腾 server 版。我们要的是「Try Ubuntu」这个图形化临时环境。

第二步:选择「Try Ubuntu」

从 U 盘启动,安装界面里选 Try Ubuntu,进入临时桌面环境。后续操作都在这里做,这个环境跑在内存里,不会动硬盘。

第三步:确认分区 + fsck 修文件系统

打开终端,先看清磁盘长什么样:

1
lsblk -f

重点找两个东西:

分区 典型文件系统 作用
根分区(如 /dev/sda2) ext4 系统本体
EFI 分区(如 /dev/sda1) vfat 引导相关

确认分区没有被挂载,然后修文件系统:

1
sudo fsck -y /dev/sda2

-y 是所有询问自动回 yes,故障盘上通常就是这么干的。不过如果盘里有重要数据又没备份,回车之前先想两秒。

第四步:挂载 + chroot 进原系统

这一步是救援的核心。挂载根分区和 EFI 分区:

1
2
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi

把运行环境借给原系统:

1
2
3
4
for d in dev dev/pts proc sys run; do
sudo mount --bind /$d /mnt/$d
done
sudo chroot /mnt

执行完 chroot,你就站在原系统的根目录里了。后面所有命令,都在修那台坏掉的机器。

📝 备注:/dev、/proc、/sys、/run 这几个绑定挂载不能省。少了它们,apt、dpkg、grub-install 会因为拿不到设备节点或内核信息直接报错。卸载记得用 umount -R 递归卸。

第五步:修 dpkg 数据库

断电最直接的破坏,是 dpkg 处于「一半装完、一半没装」的状态。两条命令:

1
2
apt --fix-broken install
dpkg --configure -a

apt --fix-broken install 捋顺依赖、把没配完的包配完;dpkg --configure -a 把所有「未配置」的包挨个配一遍。跑完这两条,软件包层基本干净了。

第六步:重建引导和 initramfs

系统能起来靠 GRUB 和 initramfs,断电时它们很可能被写坏,直接重建:

1
2
3
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
update-grub
update-initramfs -u -k all

如果包损坏导致 grub-install 失败,先重装这几个包:

1
apt install --reinstall grub-efi-amd64 grub-efi-amd64-signed shim-signed

再重跑上面三条命令。

第七步:退出、卸载、重启

1
2
exit
sudo umount -R /mnt

拔掉 U 盘,重启。我这边一次就起来了。

备选方案与兜底

七步不是唯一解。按故障严重程度从轻到重,我准备了这几层:

  1. GRUB 菜单进不去:在 GRUB 界面按 e 编辑启动项,linux 行末尾加 init=/bin/bash,F10 启动,直接进 root Shell 手动 fsck;
  2. GRUB 菜单还能显示:选「Advanced options for Ubuntu」→「Recovery Mode」,里面的 fsck 和 dpkg 选项比敲命令省事;
  3. GRUB 问题太复杂:在 Live 环境里装 boot-repair,大部分引导问题它能自动搞定;
  4. 以上全失败:备份数据,重装系统。

📝 备注:第 4 条不是失败,是止损。HomeLab 里值钱的不是系统,是数据、配置和折腾出来的经验。重装之前务必先把数据捞出来。

复盘:这次错在哪

修好之后复盘,三个教训:

  1. 升级前没做备份快照。HomeLab 节点挺适合 ZFS / Btrfs 快照,或者干脆 dd 一个镜像,回滚成本几乎为零。我没做,纯属偷懒;
  2. 升级时人不在现场。升级本来有风险,中途离开,出问题只能靠猜;
  3. 冲动断电。最不该犯的。

如果你也要升级 HomeLab,建议加两条:

  • 升级前:快照 / 备份 / 确认能远程带外管理(IPMI、KVM over IP 都行);
  • 升级时:别走开,盯着 journalctl 和 dpkg.log。

📝 备注:有条件给关键节点配个小 UPS。电网你防不住,但自己的手可以防。

总结

一台 n100-cheshi-0 折腾了我几个小时。核心记忆点一个:升级断电导致无法启动,用 Live USB + chroot 能救回来。文件系统用 fsck,软件包用 apt --fix-broken + dpkg --configure -a,引导用 grub-install + update-initramfs。顺序别乱,卸载用 umount -R。

系统坏了能修,数据丢了就真没了。

📚 参考文档


HomeLab 翻车自救指南:Ubuntu 升级断电后怎么把机器救回来
https://ewhisper.cn/posts/48711/
作者
东风微鸣
发布于
2026年10月12日
许可协议