故障现象

Ubuntu 从 20.04 升级至 22.04 后,启动进入 Emergency Mode,并提示可按 Ctrl+D 继续启动;按下后没有反应或再次回到同一界面。

根因

/etc/fstab 中配置了一块额外数据盘的自动挂载,但该磁盘的 UUID 在启动时不可用(磁盘未连接、UUID 已改变或设备异常)。

systemd 等待该挂载点失败,导致系统进入 Emergency Mode。升级过程还残留了少量未完成的软件包配置。

本文中的分区、UUID、挂载路径和内核版本均使用占位符,避免包含特定机器的信息。

修复前准备

  1. 使用 Ubuntu 安装 U 盘启动。
  2. 选择 Try Ubuntu / 试用 Ubuntu,不要选择安装。
  3. 打开终端。
  4. 若数据重要,优先挂载并备份关键文件。

修复步骤

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 blkidsudo 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 -aupdate-initramfsupdate-grub 已成功完成,可先继续重启;进入系统后恢复网络再运行升级命令即可。

6. 卸载并重启

确认已退出 chroot 后执行:

sudo umount -R /mnt
sudo reboot

重启时拔出安装 U 盘,并从内置磁盘启动。

启动后收尾

进入系统后,建议执行:

sudo apt update
sudo apt full-upgrade
sudo reboot

不要因本次修复而直接执行 sudo apt autoremove;先确认系统、桌面环境和常用软件均正常,再决定是否清理。

若需要恢复数据盘自动挂载:

  1. 接入对应数据盘。
  2. sudo blkid 查询它的当前 UUID。
  3. 更新 /etc/fstab 的 UUID。
  4. 建议使用 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 -xbsystemctl --failed/etc/fstab
  • 启动依赖的额外磁盘应使用稳定 UUID,并配合 nofail 防止单块数据盘影响整个系统启动。
  • 使用 Live USB 修复时,先做文件系统检查,再修复挂载配置,最后完成残留的软件包和引导配置。
Copyright © yan-jian.com 2023 - 2026 · Powered by GitBook更新时间: 2026-09-24 21:09:16

results matching ""

    No results matching ""