![Ubuntu 进入紧急模式后无法恢复系统](https://linux22.com/image/1182623/Ubuntu%20%E8%BF%9B%E5%85%A5%E7%B4%A7%E6%80%A5%E6%A8%A1%E5%BC%8F%E5%90%8E%E6%97%A0%E6%B3%95%E6%81%A2%E5%A4%8D%E7%B3%BB%E7%BB%9F.png)
2019 年,我在开发机器上删除了 Windows 10,并在 UEFI 安全启动模式下安装了 Ubuntu 18.04 LTS,除了最初让 UEFI 系统运行起来有些复杂之外,我没有遇到任何问题。我让内核更新到 2020,它从 4.18 升级到 5.4.0-47。
昨天发生的事情是,我正在做一个项目,我把我的机器连接到互联网上,这是我自 2020 年中以来就没有做过的事情,我离开了机器一段时间,屏幕变黑了,那不是屏幕保护程序,我一直有电源选项来防止休眠,所以不可能是那样,可能是电涌,因为我意识到我没有插入电涌保护器,有一次我直接插入墙上的插座,它似乎嗡嗡作响了几秒钟,机器没有反应,所以我按住电源按钮关闭它并重新启动它,但它不再启动,然而幸运的是,在紧急模式下检查驱动器及其所有 linux 文件系统后,它们似乎完好无损,但每当我打开机器时,它都会启动到 grub 并允许我正常启动或进入以前的内核,但随后它总是启动到紧急模式,我不确定如何继续,也不知道原因是什么,因为崩溃当天没有写入日志,就目前而言,我不得不考虑备份我的所有数据和重新安装,也许是更高版本的 ubuntu 或其他发行版?
以下是journalctl-xb暗示任何问题:
Aug 03 15:19:22 DEMO kernel: [Firmware Bug]: TPM Final Events table missing or invalid
Aug 03 15:19:22 DEMO kernel: secureboot: Secure boot enabled<br />
...
Aug 03 15:19:22 DEMO kernel: Kernel is locked down from EFI Secure Boot mode; see man kernel_lockdown.7
Aug 03 15:19:22 DEMO kernel: Lockdown: systemd: /dev/mem,kmem,port is restricted; see man kernel_lockdown.7
..
Aug 03 15:19:27 DEMO systemd[1]: Started Flush Journal to Persistent Storage.
Aug 03 15:20:52 DEMO systemd[1]: dev-disk-by\x2duuid-D001\x2d5175.device: Job dev-disk-by\x2duuid-D001\x2d5175.device/start timed out.
Aug 03 15:20:52 DEMO systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-D001\x2d5175.device.
Aug 03 15:20:52 DEMO systemd[1]: Dependency failed for File System Check on /dev/disk/by-uuid/D001-5175.
Aug 03 15:20:52 DEMO systemd[1]: Dependency failed for /boot/efi.
Aug 03 15:20:52 DEMO systemd[1]: Dependency failed for Local File Systems.
Aug 03 15:20:52 DEMO systemd[1]: local-fs.target: Job local-fs.target/start failed with result 'dependency'
Aug 03 15:20:52 DEMO systemd[1]: local-fs.target: Triggering OnFailure= dependencies.
Aug 03 15:20:52 DEMO systemd[1]: boot-efi.mount: Job boot-efi.mount/start failed with result 'dependency'.
Aug 03 15:20:52 DEMO systemd[1]: systemd-fsck@dev-disk-by\x2duuid-D001\x2d5175.service: Job systemd-fsck@dev-disk-by\x2duuid-D001\x2d5175.service/start failed with result 'dependency'.
Aug 03 15:20:52 DEMO systemd[1]: dev-disk-by\x2duuid-D001\x2d5175.device: Job dev-disk-by\x2duuid-D001\x2d5175.device/start failed with result 'timeout'.`
etc/fstab 内容如下:
UUID=MYUUID / ext4 errors=remount-ro 0 1
\#/boot/efi was on /dev/sda1 during installation
UUID=D001-5175 /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
编辑
这个问题的原因和结果实际上与以下相同:
EFI 锁定,无法启动 Ubuntu 16.04 或 Windows 10
然而,给出的解决方案是基于 Windows 的,但就我而言,我的系统不是双启动,而且我只运行 ubuntu,肯定有一个基于 ubuntu 的解决方案?
这是我尝试正常启动系统时看到的内容:
[ 0.964483] Integrity: Problem loading X.509 certificate -65
[ 0.964494] Integrity: Problem loading X.509 certificate -65
dev/sda2: clean, 539930/61022208 files, 37539912/244059136 blocks
[ *] A start job is running for dev-disk-by<x2duuid-D001<x2d5175.device (1min 30 / 1min 30s)
[ TIME ] Timed out waiting for device dev-disk-by<x2duuid-D001\x2d5175.device.
[ DEPEND ] Dependency failed for File System Check on dev-disk-by-uuid/D001-5175.
[ DEPEND ] Dependency failed for /boot/efi.
[ DEPEND ] Dependency failed for Local File Systems.
Starting Enable support for additional executable binary formats...
[ OK ] Reached target Login Prompts.
[ OK ] Reached target Timers.
[ OK ] Started Emergency Shell.
[ OK ] Reached target Emergency Mode.
Starting Create Volatile Files and Directories...
[ OK ] Reached target Sockets.
[ OK ] Reached target Paths.
Mounting Arbitrary Executable File Formats File Systems...
[ OK ] Mounted Arbitrary Executable File Formats File Systems.
[ OK ] Started Enable support for additional executable binary formats.
[ OK ] Started Create Volatile Files and Directories.
Starting Network Time Synchronization...
Starting Update UTMP about System Boot/Shutdown...
Starting Network Name Resolution...
[ OK ] Started Update UTMP about System Boot/Shutdown.
Starting Update UTMP about System Runlevel Changes...
[ OK ] Started Update UTMP about System Runlevel Changes.
[ OK ] Started Network Time Synchronization.
[ OK ] Started Network Name Resolution.
[ OK ] Reached target Host and Network Name Lookups.
[ OK ] Reached target System Time Synchronized.
You are in emergency mode. After logging in , type “journalctl -xb” to view system logs, “systemctl reboot” to reboot, “systemctl default or “exit”
to boot into default mode. Press Enter for maintenance
(or press Control-D to continue):
编辑正如 galexite 在评论中所证明的那样,这个问题不是安全启动或 TPM 问题。为了尝试确定实际原因,我开始查看所有日志并找到了崩溃日志(请参阅 pastebin.ubuntu.com)。
在这次崩溃之前,我还做了一些我认为不相关或不重要的事,那就是在 Ubuntu 软件中心,我安装了 Firefox 和一些音乐写作应用程序,在崩溃日志中,它似乎触发了软件更新,或者一些后台进程已经在后台自行启动,开始删除大量必需的软件包,它甚至试图删除 sudo 包,但请求被拒绝,并且此崩溃日志中的所有软件包删除都表明我要求删除该软件包,而我只想安装几个软件包而不想删除任何东西,这并不是我自己手动安装的,而且在内核升级之前,我故意阻止了软件更新。
我已将以下输出从 $service --status-all 放入 Pastebin,显示只有 1 个服务正在运行,我只能假设这是因为软件更新删除、半安装或半配置了许多软件包。
编辑注释:尽管我怀疑原因可能是电涌,但这只是假设,因为我不能确定,没有硬件损坏,但似乎发生了重大软件故障,我可以确定的是,我看到屏幕关闭,这似乎是系统电源管理设置启动了,我离开机器很长一段时间,我确定我已经设置了阻止系统进入休眠模式的选项,但那是在几年前安装之后,因为休眠总是给我带来麻烦,在 18.04 中显然发现了一个错误,如果系统进入休眠模式,可能会受到损害,所以我这样做是对的,但是现在我不能确定在所有更新和强制无人值守升级之后我的电源设置是否得到保留。我可以肯定,一旦我将系统恢复到可以通过纯文本模式登录的程度,我想我可以简单地检查所有基本服务是否正在运行,尤其是网络和防火墙,这样我就可以完成软件更新/无人值守升级,我发现在崩溃时,这些更新/无人值守升级正在进行中,但不完整,我发现日志表明许多软件包只安装了一半或配置了一半或完全删除了。因此,在文本模式下,我运行了以下命令来确定正在运行哪些服务:
服务--状态全部|nl
1 [ + ] acpid
2 [ - ] alsa-utils
3 [ + ] anacron
4 [ - ] apparmor
5 [ - ] apport
6 [ - ] avahi-daemon
7 [ + ] binfmt-support
8 [ - ] bluetooth
9 [ - ] console-setup.sh
10 [ - ] cron
11 [ - ] cups
12 [ - ] cups-browsed
13 [ - ] dbus
14 [ - ] dns-clean
15 [ - ] gdm3
16 [ - ] grub-common
17 [ - ] hwclock.sh
18 [ + ] irqbalance
19 [ + ] kerneloops
20 [ - ] keyboard-setup.sh
21 [ + ] kmod
22 [ - ] network-manager
23 [ - ] networking
24 [ - ] plymouth
25 [ - ] plymouth-log
26 [ - ] postfix
27 [ - ] pppd-dns
28 [ + ] procps
29 [ - ] rsync
30 [ - ] rsyslog
31 [ + ] saned
32 [ - ] speech-dispatcher
33 [ - ] spice-vdagent
34 [ - ] udev
35 [ - ] ufw
36 [ + ] unattended-upgrades
37 [ - ] uuidd
38 [ + ] whoopsie
39 [ - ] x11-common
所以目标很明确,现在我至少能够在文本模式下运行系统,我需要启动基本服务,从网络管理器和防火墙开始,因为我可以允许软件更新/升级完成,然后充分恢复系统,这样我就可以恢复正常启动,但是当我尝试启动网络管理器时。服务什么也没发生,没有命令输出,或者任何东西。
当我尝试启动 ufw 时:无法重新启动 ufw.service:单元 ufw.service 已被屏蔽。当我尝试使用命令取消屏蔽服务时,它显示正在删除 ufw...
我尝试依次取消屏蔽并重新启动其余服务,但命令没有返回任何输出或什么也没有发生。
因此,我似乎陷入了进退两难的境地,我无法恢复此系统,因为我无法启动基本服务,这将启用任何恢复,或者任何服务,因为在这种紧急状态下,Ubuntu 屏蔽了所有未运行的服务,我不得不问,如果无法从紧急模式中恢复,那么紧急模式的意义何在?我也不明白为什么所有这些服务首先都被屏蔽,这样做的理由是什么?为什么即使使用 sudo 权限,任何取消屏蔽的尝试都会被忽略或默默地不起作用,或者服务被完全删除?
答案1
您应该检查已安装软件包的完整性并完成升级以使系统恢复正常。
确保所有解压的包都已配置:
sudo dpkg --configure -a
该debsum
软件包使用每个软件包的MD5SUMS
文件来实现完整性验证。你可以安装它:
sudo apt update
sudo apt install debsums
然后您需要清除apt
缓存,并debsums
通过再次下载包进行初始化:
sudo apt clean
sudo debsums_init
然后运行手动检查,debsums
报告更改或损坏的文件:
sudo debsums -cs
检查以确保配置更改符合您的预期。如果报告任何错误,则需要重新安装这些软件包:
sudo apt install --reinstall broken-package
然后您就应该完成更新。
但是,在执行更新之前,由于我们已从/boot/efi
中删除了挂载/etc/fstab
,因此您应该再次挂载它,以防 GRUB 需要更新。取消注释 中的行/etc/fstab
,然后运行:
sudo mount /boot/efi
然后您可以继续更新:
sudo apt update
sudo apt upgrade --with-new-pkgs
重新启动。如果由于 ESP 仍未安装而导致系统无法重新启动,则需要进行更多故障排除。