我有一台笔记本电脑,配备 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 选项中重新打开安全启动和快速启动,并验证两个操作系统仍可正常启动
我思考这是我所做的对重现成功修复至关重要的事情的完整列表。不过在弄清楚这一点之前,我还做了很多其他事情,所以我可能错过了其他相关的事情!