配置双启动 Ubuntu 14.04 和 Windows 10 时出现“错误:签名无效”

配置双启动 Ubuntu 14.04 和 Windows 10 时出现“错误:签名无效”

在我的笔记本电脑上安装 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 双启动设置。

相关内容