在我的笔记本电脑上安装 Windows 10 升级后,它破坏了 grub 启动管理器,我只能在 Windows 10 中启动。我使用带有该boot-repair
工具的 Live CD 修复了启动管理器,但它只识别了 Ubuntu 分区,而不能识别 Windows 分区。
因此我编辑了该/etc/grub.d/40_custom
文件并添加了以下内容:
menuentry "Windows 10" {
set root='(hd0,3)'
chainloader +1
}
运行后sudo update-grub2
,我在启动菜单中获得了一个条目,但分区未加载。它给出以下错误:
Error: Invalid signature.
有人知道如何克服这个错误吗?
我最近的启动修复转储在这里:http://paste.ubuntu.com/11965327/,我想要启动的分区是这个:
sda4: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows 8/2012: NTFS
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files: /bootmgr /Windows/System32/winload.exe
答案1
您的安装有一些特殊之处:
- 您的计算机有两个 Windows 恢复环境分区,
/dev/sda1
和/dev/sda5
。我猜一个来自您以前的 Windows 安装,另一个用于新安装,但我不能肯定。我怀疑这种重复本身是否会导致任何问题;我提到它只是因为它是机器更改历史的标志,而这种更改既可能是问题的原因,也可能使找出问题所在变得困难。 - 你的EFI 系统分区 (ESP)是
/dev/sda4
。这完全合法,但并不常见;ESP 通常是/dev/sda1
或/dev/sda2
。ESP 保存 EFI 模式引导加载程序和相关文件。我的直觉是 ESP 是在机器历史的后期创建的——也许它曾经是 Ubuntu 专用的,然后你安装了 Windows,从而在这个不寻常的位置创建了 ESP。 - 启动信息脚本输出未识别 ESP 上的任何 EFI 引导加载程序。我怀疑它们确实存在,但脚本省略了这些条目。(我时不时看到这种情况发生。)另一方面,如果这些文件丢失,则意味着 Windows 无法安装其引导加载程序。Ubuntu 也可能如此;但请参见下文……
- 您的磁盘使用GUID 分区表 (GPT),这意味着 Windows 将仅在 EFI 模式下安装到此磁盘并从此磁盘启动;但有证据表明 BIOS 模式安装了 GRUB,即标准的 Ubuntu 引导加载程序。这种混乱意味着您无法从此计算机上的 BIOS 模式 GRUB 启动 Windows。可能是您也有一个 EFI 模式 GRUB 并一直以这种方式启动;或者您可能一直使用计算机的内置启动管理器在操作系统之间切换(通常在启动时按 Esc、Enter 或功能键来访问)。
此时,最好的办法是安装 Linux 的 EFI 模式引导加载程序。有两种方法可以做到这一点,它们相对安全且简单。如果您先输入固件并完全禁用使用 BIOS、CSM 或传统模式引导的任何选项,这两种方法都会发挥最佳效果。(这三个术语指的是同一件事。)有时这些选项的表述方式不同——您必须使能够EFI 或 UEFI 支持。完成后,请执行以下两项操作之一:
- 方法 1:启动你的 Ubuntu 安装盘,通过查找目录确保你已经以 EFI 模式启动
/sys/firmware/efi
(如果存在,则说明你已经以 EFI 模式启动),安装软件包boot-repair
并运行它。这应该通过安装 EFI 版本的 GRUB 来修复您的安装。这通常有效,但偶尔无效。我知道您已经运行了 Boot Repair,但我怀疑您是在 BIOS 模式下运行的,这当然意味着它会安装 BIOS 模式的 GRUB,这对于启动 Windows 毫无用处。 - 方法 2:如果你还没有这样做,请禁用固件中的安全启动。然后,你可以从我的 CD-R 或 USB 闪存驱动器版本下载并准备启动介质rEFInd 启动管理器。启动它;它应该会显示一个菜单,其中至少有一个适用于 Windows 和 Ubuntu 的选项。测试这些以确保您可以启动这两个操作系统,然后启动 Ubuntu。此时,您可以安装 rEFInd Debian 包或 PPA。(或者,您可以安装 EFI 版本的 GRUB。)此时您可能能够重新启用安全启动,但您可能需要完成一些额外的步骤才能使其正常工作。
没有必要重新安装 Ubuntu,也可能不需要重新安装 Windows。Ubuntu 的 BIOS 模式和 EFI 模式安装除了引导加载程序(和相关分区 - 但您有处理这两种模式的分区)之外是相同的。
答案2
来自启动修复命令的输出,看起来你有一个 UEFI 系统……
然而,Ubuntu 安装在非 UEFI 模式,并且 Windows 安装在UEFI 模式因此,在不改变启动参数的情况下,两者中只有一个能够同时工作……
您能做的最好的事情是:以非 UEFI 模式重新安装 Windows 10 或以 UEFI 模式重新安装 Ubuntu,具体取决于您最常使用哪种模式。
答案3
作为双启动设置的替代方案,您可以尝试设置格鲁布,它是从 Windows 安装的 GRUB 的实现,并具有 UEFI 支持。请注意,Grub2Win 不会与现有的 GRUB 安装集成,而是创建自己的 GRUB。
一旦安装,它将检测 Windows 的 UEFI 启动选项。
它可能会自动检测您的 Linux 分区,如果没有,您可以手动将菜单项添加到 C:\grub2\grub.cfg,您可以从 Linux 中现有的 grub.cfg(通常位于 /boot/grub/grub.cfg)中获取菜单项,类似于:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os --class icon-linux {
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt6'
search --no-floppy --fs-uuid --set=root ###################
linux /boot/vmlinuz-5.4.0-48-generic root=UUID=################### ro quiet splash $vt_handoff
initrd /boot/initrd.img-5.4.0-48-generic
}
请注意,您应该使用 Linux 分区 UUID(而不是上面的 ######),并使用安装在 /boot 目录中的实际启动映像名称。
这使我能够成功实现 Windows 10 + Ubuntu 20.04 双启动设置。