故障现象
Ubuntu 从 20.04 升级至 22.04 后,启动进入 Emergency Mode,并提示可按 Ctrl+D 继续启动;按下后没有反应或再次回到同一界面。
根因
/etc/fstab 中配置了一块额外数据盘的自动挂载,但该磁盘的 UUID 在启动时不可用(磁盘未连接、UUID 已改变或设备异常)。
systemd 等待该挂载点失败,导致系统进入 Emergency Mode。升级过程还残留了少量未完成的软件包配置。
本文中的分区、UUID、挂载路径和内核版本均使用占位符,避免包含特定机器的信息。
修复前准备
- 使用 Ubuntu 安装 U 盘启动。
- 选择 Try Ubuntu / 试用 Ubuntu,不要选择安装。
- 打开终端。
- 若数据重要,优先挂载并备份关键文件。
修复步骤
1. 识别原系统分区
sudo lsblk -f
通常需要识别:
- 原系统根分区:
<ROOT_PARTITION>(常为较大的ext4分区) - EFI 分区:
<EFI_PARTITION>(通常为vfat/FAT32) - 交换分区:
<SWAP_PARTITION>(可选) - 额外数据盘:其他
ext4、NTFS 或外置磁盘分区
可用以下命令交叉确认 UUID:
sudo blkid
2. 检查并修复根文件系统
确保根分区未挂载后执行:
sudo fsck -f <ROOT_PARTITION>
若命令询问是否修复,输入 y。完成时如显示 FILE SYSTEM WAS MODIFIED,表示已修复并写入更改。
不要对已经挂载的根分区直接执行
fsck。
3. 挂载原系统并备份 fstab
sudo mount <ROOT_PARTITION> /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount <EFI_PARTITION> /mnt/boot/efi
sudo cp /mnt/etc/fstab /mnt/etc/fstab.bak
sudo cat /mnt/etc/fstab
4. 禁用失效的数据盘挂载
检查 /mnt/etc/fstab 中的每个 UUID= 是否能在 sudo blkid 或 sudo lsblk -f 输出中找到。
对于不存在的额外数据盘 UUID,编辑文件:
sudo nano /mnt/etc/fstab
将对应的额外挂载行临时注释。例如:
# UUID=<MISSING_DATA_DISK_UUID> /media/<DATA_DISK> ext4 defaults 0 2
不要注释:
- 根目录
/对应的根分区行 /boot/efi对应的 EFI 分区行- 正常使用的 swap 行
保存方式:Ctrl+O、回车;退出:Ctrl+X。
5. 进入原系统并完成升级配置
挂载必要的虚拟文件系统后进入 chroot:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
sudo chroot /mnt
在 chroot 中执行:
dpkg --configure -a
apt --fix-broken install
apt update
apt full-upgrade
update-initramfs -u -k all
update-grub
exit
如果 apt update 显示 Temporary failure resolving,通常是 Live 环境中 DNS 未传入 chroot。只要 dpkg --configure -a、update-initramfs 和 update-grub 已成功完成,可先继续重启;进入系统后恢复网络再运行升级命令即可。
6. 卸载并重启
确认已退出 chroot 后执行:
sudo umount -R /mnt
sudo reboot
重启时拔出安装 U 盘,并从内置磁盘启动。
启动后收尾
进入系统后,建议执行:
sudo apt update
sudo apt full-upgrade
sudo reboot
不要因本次修复而直接执行 sudo apt autoremove;先确认系统、桌面环境和常用软件均正常,再决定是否清理。
若需要恢复数据盘自动挂载:
- 接入对应数据盘。
- 用
sudo blkid查询它的当前 UUID。 - 更新
/etc/fstab的 UUID。 - 建议使用
nofail,避免数据盘不可用时阻断系统启动:
UUID=<DATA_DISK_UUID> /media/<DATA_DISK> ext4 defaults,nofail,x-systemd.device-timeout=5s 0 2
修改后验证:
sudo mount -a
无报错后重启测试。
排障要点
Ctrl+D不是修复操作,只是尝试继续启动;配置问题未修复时通常无效。- 升级后卡在 Emergency Mode,优先检查
journalctl -xb、systemctl --failed和/etc/fstab。 - 启动依赖的额外磁盘应使用稳定 UUID,并配合
nofail防止单块数据盘影响整个系统启动。 - 使用 Live USB 修复时,先做文件系统检查,再修复挂载配置,最后完成残留的软件包和引导配置。