我主要运行 MX Linux,偶尔需要启动到 Windows。今天,我尝试了,但 grub 中缺少 windows。
我安装os-prober
并确认etc/default/grub
显示GRUB_DISABLE_OS_PROBER=false
。我运行sudo update-grub
并重新启动,但 grub 中仍然没有 Windows。
回到 MX Linux,如果我运行os-prober
输出,则输出/dev/sda4:MX 21.1 Wildflower (21.1 ):MX:linux
未找到 Windows,但 Windows 安装在同一个 SSD 上。
我对如何继续感到非常困惑。有什么意见吗?
编辑:我已经跑了bootinfoscript
。所以结果很清楚,我安装了两次 MX Linux,每次安装在不同的 SSD 上,以及一个 Windows 10 实例
答案1
Windows 仅允许使用 GPT 分区的系统磁盘进行 UEFI 引导,而仅允许使用 MBR 分区的磁盘进行传统 BIOS 引导。
您的sda
系统采用 GPT 分区,但sda4
启用了旧版 BIOS 引导标志。并且您链接的 bootinfoscript 检测到i386-pc
安装在sda
.
两者sda
都有sdb
EFI 系统分区(简称 ESP),但\EFI\Microsoft\Windows\bootmgfw.efi
在其中任何一个上均未检测到 Windows UEFI 启动管理器 ( )。
看起来您的系统最初配置为 GPT 启动,然后您在旧版 BIOS 模式下启动安装程序时安装了 MX 的第二个副本(无论是意外还是出于无知),因此它在 GPT 上安装了旧版 BIOS 样式的引导加载程序 -分区的磁盘。而且您的 BIOS 目前显然更喜欢传统启动而不是 UEFI。在您的一次 MX 安装尝试中,您可能意外地允许安装程序格式化sda1
包含 Windows UEFI 引导加载程序的 ESP。
如果您的 BIOS 有一个设置允许您将当前的“先传统,然后 UEFI”引导策略更改为“仅 UEFI”,请将其设置为“仅 UEFI”以避免将来出现这样的混乱。这可能会导致您的系统引导至 MX 安装,sdb2
而不是根文件系统位于 的当前 MX sda4
。
如果无法更改 BIOS 的引导策略,则必须找到一种方法来确定 BIOS 菜单显示的哪些引导目标是 UEFI,哪些是旧版,并且从此时起仅使用 UEFI 引导目标。
由于 Windows UEFI 引导加载程序显然已被破坏,因此需要重建它及其配置。如果你启动在 UEFI 模式下从 Windows 10 安装介质并使用其“修复启动”功能,它应该会自动执行正确的操作。但您可能希望sdb
在执行此操作时暂时断开连接或禁用,因此 Windows 将被迫选择正确的磁盘来重建 UEFI 引导加载程序。 (众所周知,Windows 10 安装程序有时对于如何选择用于安装 UEFI Windows 引导加载程序的磁盘有一些奇怪的想法。)
之后,您应该能够进入 Windows - 但不一定能进入您的 MX 安装。下一步是使您的(可能是最新的)MX 安装恢复正常sda4
。
如果 MX Linux 具有与 Debian 类似的救援模式,请从 MX 安装介质启动在 UEFI 模式下,在 GRUB 引导菜单中选择救援模式,选择区域设置和键盘,然后救援模式就会启动:它会自动搜索现有的 MX 安装,并让您选择其中一个进行安装。挑选sda4
。自动安装后,它会询问您是否激活网络接口。说是的。然后它会给你一个 root shell 并建议chroot
用于访问已安装的安装的命令。使用建议的命令。现在,您将在安装中有效地处于仅命令提示符模式sda4
,并且可以开始修复它。
首先,删除软件包grub-pc
和grub-pc-bin
并安装efibootmgr
、grub-efi-amd64
、 ,grub-efi-amd64-bin
也许还可以安装grub-efi-amd64-signed
和shim-signed
(如果您认为可以启用安全启动)软件包来代替它们。然后跑grub-install /dev/sda
。
此后,您的 BIOS 启动菜单现在应该包含指示要启动的操作系统名称的项目:Windows Boot Manager
对于 Windows,可能还有涉及 MX Linux 的项目。将“MX Linux”引导项作为您的主要引导目标,您应该已准备就绪。
您还应该efibootmgr -v
以 root 身份运行来查看 UEFI NVRAM 引导变量,并学习理解其输出(这并不难,但它对于 UEFI 来说是全新的,并且没有真正的传统 BIOS 等效项)。
有时刷新 BIOS 可能会擦除这些启动变量,这可能会导致您的系统再次仅启动到 Windows。但如果您有efibootmgr -v
打印输出和 Linux 启动介质,您将能够很快修复它。