HomeLab 翻车自救指南:Ubuntu 升级断电后怎么把机器救回来
本文最后更新于:2026年10月13日 上午
HomeLab 翻车自救指南:Ubuntu 升级断电后怎么把机器救回来
国庆长假,本来打算躺平。手痒,决定把 HomeLab 全部节点从 Ubuntu 24.04 升到 26.04.1。
一台叫 n100-cheshi-0 的节点被我作进了「开不了机」,故障持续了几个小时。下面是完整现场加自救过程。
📝 声明:这不是 Ubuntu 升级教程,是一次事故复盘。命令都是我在真实故障机上跑过的,照抄有风险,动手前先确认自己的分区布局。
故障是怎么发生的
锅不在 Ubuntu,在我。
时间线:
- 国庆假期,计划把 HomeLab 全部节点从 24.04 升到 26.04.1;
- 第一台出奇顺利,我心态飘了,觉得这玩意儿有手就行;
- 轮到
n100-cheshi-0,敲完升级命令就出门了; - 回来一看:升级报错,反复重启都进不去;
- 情急之下按了电源键断电。这一步才是致命的;
- 再开机,系统彻底起不来,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
在另一台能用的电脑上:
- 下载 Ubuntu 26.04 桌面版 ISO;
- 用 Rufus 或 balenaEtcher 写入一个至少 4GB 的 U 盘;
- 插到故障主机,进 BIOS / UEFI,把 USB 设为第一启动项。
📝 备注:桌面版 ISO 就够了,别折腾 server 版。我们要的是「Try Ubuntu」这个图形化临时环境。
第二步:选择「Try Ubuntu」
从 U 盘启动,安装界面里选 Try Ubuntu,进入临时桌面环境。后续操作都在这里做,这个环境跑在内存里,不会动硬盘。
第三步:确认分区 + fsck 修文件系统
打开终端,先看清磁盘长什么样:
1 | |
重点找两个东西:
| 分区 | 典型文件系统 | 作用 |
|---|---|---|
根分区(如 /dev/sda2) |
ext4 | 系统本体 |
EFI 分区(如 /dev/sda1) |
vfat | 引导相关 |
确认分区没有被挂载,然后修文件系统:
1 | |
-y 是所有询问自动回 yes,故障盘上通常就是这么干的。不过如果盘里有重要数据又没备份,回车之前先想两秒。
第四步:挂载 + chroot 进原系统
这一步是救援的核心。挂载根分区和 EFI 分区:
1 | |
把运行环境借给原系统:
1 | |
执行完 chroot,你就站在原系统的根目录里了。后面所有命令,都在修那台坏掉的机器。
📝 备注:
/dev、/proc、/sys、/run这几个绑定挂载不能省。少了它们,apt、dpkg、grub-install 会因为拿不到设备节点或内核信息直接报错。卸载记得用umount -R递归卸。
第五步:修 dpkg 数据库
断电最直接的破坏,是 dpkg 处于「一半装完、一半没装」的状态。两条命令:
1 | |
apt --fix-broken install 捋顺依赖、把没配完的包配完;dpkg --configure -a 把所有「未配置」的包挨个配一遍。跑完这两条,软件包层基本干净了。
第六步:重建引导和 initramfs
系统能起来靠 GRUB 和 initramfs,断电时它们很可能被写坏,直接重建:
1 | |
如果包损坏导致 grub-install 失败,先重装这几个包:
1 | |
再重跑上面三条命令。
第七步:退出、卸载、重启
1 | |
拔掉 U 盘,重启。我这边一次就起来了。
备选方案与兜底
七步不是唯一解。按故障严重程度从轻到重,我准备了这几层:
- GRUB 菜单进不去:在 GRUB 界面按
e编辑启动项,linux行末尾加init=/bin/bash,F10 启动,直接进 root Shell 手动 fsck; - GRUB 菜单还能显示:选「Advanced options for Ubuntu」→「Recovery Mode」,里面的 fsck 和 dpkg 选项比敲命令省事;
- GRUB 问题太复杂:在 Live 环境里装
boot-repair,大部分引导问题它能自动搞定; - 以上全失败:备份数据,重装系统。
📝 备注:第 4 条不是失败,是止损。HomeLab 里值钱的不是系统,是数据、配置和折腾出来的经验。重装之前务必先把数据捞出来。
复盘:这次错在哪
修好之后复盘,三个教训:
- 升级前没做备份快照。HomeLab 节点挺适合 ZFS / Btrfs 快照,或者干脆 dd 一个镜像,回滚成本几乎为零。我没做,纯属偷懒;
- 升级时人不在现场。升级本来有风险,中途离开,出问题只能靠猜;
- 冲动断电。最不该犯的。
如果你也要升级 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。
系统坏了能修,数据丢了就真没了。