操作系统启动管理器代替 grub 运行(传统启动)

操作系统启动管理器代替 grub 运行(传统启动)

我在笔记本电脑上安装了 Windows 7 和 Kali Linux,但当我打开电脑时,它会自动启动 Windows。要启动 Kali,我必须进入启动顺序菜单,并选择笔记本电脑硬盘启动选项,然后它开始使用 Kali 运行 grub。

另一个选项,首先执行的是操作系统启动管理器,我认为它是 Windows 启动加载程序,尽管它是 BIOS 启动顺序中的最后一个。

我发现分区已配置好,因此 grub 可以启动,但是 uefi 已设置好,因此它首先从 SO 启动管理器启动,而该管理器仅启动 Windows。

Bios 设置图像

为了启动 Kali,我必须手动插入从驱动器启动:

启动选项图像

更改启动顺序 第三个选项启动 grub,第一个选项启动 windows,由于缺陷,这是第一个,我无法更改它。 有什么想法可以将 grub 配置到操作系统启动管理器中,或者让硬盘首先启动?

答案1

我发现有些计算机(尤其是 HP)的 BIOS 出现故障,在指定 legacy 之后,它会维持 uefi 配置以进行启动,从而首先执行 Windows .efi 文件(我发现它总是这样做)。

最好的解决方案是退货,前提是 Bios 有 bug,这样他们就不会继续犯错误了。我想出了一个解决方法,但真的不推荐(永远不要弄乱启动)。

  1. 您检测到您的“EFI 分区系统”分区,它通常位于 /dev/sda1,但可能会有所不同。您可以使用检查分区sudo fdisk -l

  2. 将 EFI 分区挂载到/mnt(或任何地方,但这就是它/mnt在那里的原因)。

  3. 在这个分区中,应该至少有 2 个文件夹EFI(如果您有 Windows 和 Linux):一个名为 Microsoft,另一个文件夹的名称与您拥有的 Linux 操作系统的名称相同(在我的情况下是 Kali),有时如果它是从其中一个派生的发行版,它可能会说 Debian 或 Fedora(我会把它写成 [OS])。

UEFI OS 启动管理器运行文件EFI/Microsoft/Boot/bootmgfw.efi,这是执行所有其余文件以启动 Windows 的链式加载程序。Linux grub 位于[OS]文件夹中(名称可能是 grubx64.efi 或 grubia32.efi,具体取决于架构)。

  1. 将文件复制/mnt/EFI/Microsoft/Boot/bootmgfw.efi到主文件夹,您可以/EFI/这样做(从):sudo cp MIcrosoft/Boot/bootmgfw.efi bootmgfw.efi

  2. 将 grub 文件作为 bootmgfw.efi 复制到 Windows(来自 /mnt/EFI/)sudo cp kali/grubx64.efi /Microsoft/Boot/bootmgfw.efi:。

  3. 卸载分区并重新启动,现在它应该直接启动到 grub,但 Windows 会循环回到 grub。要解决这个问题,您可以在选择 Windows 分区之前按 e 更改配置,然后将其中显示的位置更改chainloader +1chainloader /EFI/bootmgfw.efi

  4. 为了使其永久生效,请启动 Linux,并/boot/grub/grub.cfg在 Windows 7 的菜单项中编辑文件。然后运行 ​​update-grub 和 grub-install。

注意:请小心不要更改任何其他内容,因为这可能会导致计算机无法启动任何内容。不建议更改 grub 文件。

相关内容