我昨晚安装了 Kali,希望能与我的 Windows 一起双启动。然而,Grub 在识别 Windows 时遇到问题,我无法再进入系统。我尝试跑步boot-repair
,但没有成功。这是我的粘贴文件。我也尝试update-grub
过从 Kali 运行,但系统看不到 Windows 启动映像。分区还好,但我就是进不去。我应该如何进行?
答案1
您的 Windows 曾经/正在以本机 UEFI 模式启动,但您的 Kali GRUB 引导加载程序已安装为使用旧版 BIOS 模式,可能是因为您使用旧版模式启动了 Kali 安装程序。
问题是任何 BIOS 样式的引导加载程序根本无法启动任何 UEFI 样式的引导加载程序。 BIOS 式引导加载程序使用 16 位代码,并受 16 位固件代码支持。在您的情况下,本机 UEFI 引导加载程序使用 64 位代码并受 64 位固件代码支持。虽然引导加载程序当然可以将处理器切换到完整的 64 位模式,但它无法访问 64 位固件资源,因为固件的 BIOS 兼容性支持模块专门将它们隐藏起来,以使系统与 16 位兼容可能的。同时,BIOS 兼容性支持模块隐藏了正在运行的操作系统可用于编辑 UEFI 启动设置的接口,称为“UEFI 运行时服务”。
彻底修复此问题需要访问 UEFI 运行时服务,因此从传统启动的 Kali 中修复此问题将很困难。建议的修复 - 将grub-pc
软件包(= GRUB 引导加载程序的旧 BIOS 版本)替换为相应的软件包grub-efi-amd64[-signed]
是正确的做法,但仅靠它并不能完全修复。 (如果您的系统启用了安全启动,则需要 -signed 后缀。)
下一步是将新的 UEFI GRUB 引导加载程序注册到固件 NVRAM 中,以便它将出现在您的 BIOS 设置中。是否boot-repair
可以这样做取决于boot-repair
启动时使用的启动模式:是在本机 UEFI 模式下启动,还是使用旧版 BIOS 兼容性?
另外,看起来boot-repair
可能无法正确检测 Kali,因为我认为它是为 Ubuntu 设计的(?)。
如果您想返回 Windows,您应该检查 BIOS 启动顺序设置,以确保 Windows 被设置为第一个启动的操作系统。如果您的 BIOS 设置包含任何用于选择首选本机 UEFI 或传统 BIOS 引导方法的选项,则应将其切换为首选本机 UEFI 而不是传统方法。