EFI 锁定,无法启动 Ubuntu 16.04 或 Windows 10

EFI 锁定,无法启动 Ubuntu 16.04 或 Windows 10

我有一台笔记本电脑,配备 250 GB SSD,其中包含 Windows 10 和 Ubuntu 16.04 的 EFI 副本,以及 1 TB HDD,其中包含几个数据分区。我已经使用这个系统几个星期,同时启用了安全启动和快速启动,没有出现问题。

昨晚 Ubuntu 在关机时无限期挂起,因此我按住电源按钮强制关闭计算机。当我尝试在此之后启动计算机时,UEFI 菜单无法看到 SSD 或其中包含的两个启动选项。它仍然可以看到 HDD(不包含任何启动加载程序,只有数据)。

我能够从实时 USB 启动 Ubuntu,但无法通过 Gparted 或从该 Ubuntu 系统内部检测到 SSD。

昨晚电池耗尽后,今天早上我尝试再次重启,UEFI 可以再次看到 SSD 以及其上的 Ubuntu 和 Windows 启动选项。但是它也无法成功启动。

Grub 默认可以加载,并显示两个操作系统的启动选项。当我尝试启动 Windows 时,启动画面比平时要长(可能 30 或 60 秒),然后会返回到 Grub 界面以选择操作系统。

如果我选择 Ubuntu,它会进入一会儿 Ubuntu 启动画面,然后进入一个终端并打印出:

/dev/sda4: clean, 580575/9322496 files, 5157737/37265152 blocks
[  OK  ] Started udev Kernel Device Manager.
         Starting Show Plymouth Boot Screen...
Welcome to emergency mode! After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to try again to boot into default mode. 
Press Enter for maintenance

当我使用“journalctl -xb”查看系统日志时,我收到大量文本,包括以下错误消息:

secureboot: Secure boot could not be determined (node 0)

Kernel is locked down from EFI secure boot: see man kernel_lockdown.7

tboot: non-0 tboot_addr but it is not of type E820_TYPE_RESERVED

当我运行“man kernel_lockdown.7”时,出现错误,提示该文件不存在。

此外,再次启动到实时 Ubuntu USB 时仍然无法让我从 Gparted 或 parted 看到 SSD,尽管它现在可以从 UEFI 启动选项菜单中看到。

我已尝试上述所有操作,并在 UEFI 菜单中打开和关闭 SecureBoot 和 Fastboot。

我不太明白 UEFI 是如何工作的,但我觉得可能是因为我在关机过程中硬关闭了计算机,导致 SSD 处于锁定状态,从而无法重新加载这两个启动选项?我该如何解决这样的问题?

谢谢!

编辑:

我在已安装的 Windows 恢复环境 cmd 提示符下(不是从 USB)运行了 chkdsk:

chkdsk D: /x /f /r

它没有找到任何坏扇区或输出任何明显的错误消息。当我尝试启动时,它似乎没有给 Windows 的行为带来任何变化。

还在 Ubuntu Live USB 中对 Ubuntu 安装的 ext4 数据分区运行了 fsck,没有发现任何问题。ext4 位于 HDD 上,尽管 Windows 和 Ubuntu 的 efi 启动分区都在 SSD 上。

当我登录到 Ubuntu Live USB 时,我可以看到并浏览原始 Ubuntu 安装的 ext4 数据分区并打开文件,一切看起来都很好 - 当我在 Windows 恢复命令行上时,Windows 数据分区(位于 SSD 上)也是如此。我不认为那里存在文件损坏的问题。令我感到惊讶的一件事是,当加载到该环境中时,SSD 自动安装为 D:,HDD 自动安装为 C:,而之前在 Windows 中情况正好相反 - 但两者都已成功安装并可进行读取访问。

除了重新安装操作系统外,我不确定下一步该怎么做。出于某种原因,我似乎仍然无法从 Ubuntu live USB 访问 SSD。

编辑:

以下是在 Ubuntu Live USB 中创建的启动信息报告:

http://paste.ubuntu.com/p/73hdknqv6p/

编辑:

我猜测 Ubuntu 无法将 SSD 视为文件系统,因为它目前不在 AHCI 模式 - 我认为这是 Ubuntu Live USB 上生成的相关输出:

root@ubuntu:~# dmesg | grep -i 'ahci'
[    4.938935] ahci 0000:00:17.0: version 3.0
[    4.939107] ahci 0000:00:17.0: Found 1 remapped NVMe devices.
[    4.939107] ahci 0000:00:17.0: Switch your BIOS from RAID to AHCI mode to use them.
[    4.939344] ahci 0000:00:17.0: AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl RAID mode
[    4.939346] ahci 0000:00:17.0: flags: 64bit ncq sntf pm clo only pio slum part deso sadm sds apst 
[    4.939946] scsi host1: ahci

UEFI 菜单中有一个选项可以切换到 AHCI,但选择该选项似乎没有任何作用。在那里切换到 AHCI 并登录 Live USB 后,Ubuntu 仍然看不到 SSD,上面的输出相同,关机并重新启动到 UEFI 菜单时,会显示选项切换回 RST 版本。

答案1

根据 oldfred 的建议和大量的谷歌搜索,我最终采取了以下措施,似乎解决了这个问题:

1) 加载 UEFI 设置并关闭安全启动和快速启动。确保保存 UEFI 设置更改在启动操作系统之前 - 至少在我的固件上这不是默认完成的,你实际上需要在从选项菜单启动到操作系统之前单击“保存”

2)启动 Windows 但使用 F8 进入恢复选项菜单

3)通过恢复菜单导航到 cmd 提示符

4)将 Windows 设置为以安全模式启动:

bcdedit /set {current} safeboot minimal

5)重新启动并再次启动 Windows(在安全模式下,给出上述设置)

6) 打开 regedit,将以下键的注册表值和默认值更改为 0:

HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ iaStorV -> start
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ iaStorV\ StartOverride 
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ storahci -> start
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ storahci\ StartOverride 

7) 再次重启电脑,并加载 UEFI 设置。将 SATA 选项从 Intel IDE RST 更改为 AHCI 模式

8)启动 Windows,它将再次启动到安全模式,但这次将安装所有 AHCI 驱动程序(注意 - 切换到 AHCI 后,如果未处于安全模式,则尝试启动 Windows 将导致蓝屏)

9)在 cmd 提示符中运行以下命令以删除默认安全模式启动

bcdedit /deletevalue {current} safeboot

10) 重新启动并启动 Windows,现在应该可以在非安全模式下使用 AHCI 正确加载

11)重新启动并启动到 Ubuntu,现在应该可以正确加载并检测 AHCI SSD

12) 在 UEFI 选项中重新打开安全启动和快速启动,并验证两个操作系统仍可正常启动

思考这是我所做的对重现成功修复至关重要的事情的完整列表。不过在弄清楚这一点之前,我还做了很多其他事情,所以我可能错过了其他相关的事情!

相关内容