当ssd为hd1时安装Grub

当ssd为hd1时安装Grub

我有一台戴尔 G3 17 3779 笔记本电脑。
它有SATA HDD作为hd0,m.2 SSD作为hd1。两者都是 GPT 格式。

我删除了 SSD 中的所有内容并安装了 Windows 10。
我使用了 4 个分区:

  • Windows恢复环境(499M) |/dev/sdb1
  • 电喷系统(100M)|/dev/sdb2
  • 微软保留(MSR) (16M) |/dev/sdb3
  • 主Windows NTFS分区(70G)|/dev/sdb4

我还为 Arch Linux 2 分区添加了:

  • 对于/(47.7G)|/dev/sdb5
  • 交换 (980.3M) |/dev/sdb6

HDD磁盘有2个分区:

  • 微软保留(MSR) (16M) |/dev/sda1
  • 一些 NTFS (900G) |/dev/sda2

在 Windows 之后,我按照 wiki 手册从 UEFI 安装了 arch linux。

GRUB 与平常一样安装,grub-install无需密钥

我尝试使用手动配置来配置 GRUB:

/boot/grub/grub.cfg

. $prefix/menu.cfg

/boot/grub/menu.cfg

set default=0
set timeout=10
menuentry "ArchLinux" {
 linux /boot/vmlinuz-linux root=/dev/sdb4 rw
 initrd /boot/initramfs-linux.img
}
menuentry "Windows" {
  regexp -s root '\((.+)\)' "$cmdpath"
  chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

重新启动后,就启动了 Windows 10,没有任何启动菜单。

我安装os-prober并尝试grub-mkconfig并收到一些警告,例如:
WARNING: Failed to connect to lvmetad. Falling back to device scanning.

WARNING: Device /dev/loop0 not initialized in udev database even after waiting 10000000 microseconds.

相反,/dev/loop0在所有分区中。

并且仍然只启动Windows。

可能是因为我的 HDD 在 BIOS 中排在第一位,与 SSD 不同(hd0 与 hd1)?

如何解决这个问题?

更新: 这个答案https://askubuntu.com/a/816347/879272允许我打开 grub。

但是为什么 BIOS 启动 EFI/Microsoft/Boot/bootmgfw.efi 忽略另一个引导加载程序。
我可以禁用此行为吗?

磁盘驱动器

电喷

答案1

我认为 BIOS 仍在告诉 G3 启动 Windows。

Dell BIOS 有一个很好的文件浏览器来选择引导加载程序。当您看到 Dell 徽标屏幕并在 Windows 启动之前,请立即进入 BIOS 设置(可能是 F2 或 F8)。接下来使用文件浏览器找到要引导的引导加载程序 grubx64.efi 并选择。然后检查引导顺序并保存新设置以重新引导至 Grub。

答案2

几周前,我的笔记本电脑也遇到了同样的问题。它忽略了我的 GRUB2 并直接启动 Windows。这是我解决这个问题的方法:

  1. 将目录重命名/boot/efi/EFI/MicrosoftMicrosoft0
  2. 相应地更改路径chainloader /EFI/Microsoft/Boot/bootmgfw.efi,以/EFI/Microsoft0/Boot/bootmgfw.efi

似乎我的笔记本电脑中的 BIOS 总是将 Microsoft 引导加载程序放在列表的顶部,无论您如何配置它。因此,重命名MicrosoftEFI 分区中的目录可以欺骗 BIOS,使其不会自动启动到 Windows。

答案3

也许 grubx64.efi 引导加载程序有问题。这是一个令人惊奇的实用程序,可以在没有引导加载程序的情况下在任何地方启动任何东西:

超级Grub2

编辑:作为替代方案,有出色的 '重新寻找' 启动管理器,专门负责启动 EFI。该实用程序可以安装到 USB 可移动磁盘,以便紧急启动原本无法启动的固定磁盘,也可以安装到 EFI 系统分区以供常规使用。如果使用现代 Linux 发行版中经常包含的 UEFI 引导加载程序存根构建,“refind”可以找到 grub 引导加载程序或直接引导已安装的内核。

重新寻找

答案4

说实话,我不知道类似问题的根本原因,我曾使用 Win10 和 Kali 双启动,但我花了很长时间试图让它们双启动,但失败了。这是我用来让它工作的技巧。

  • 安装了Win
  • 在 BIOS 中禁用 secureboot
  • 在BIOS中禁用快速启动
  • 安装Ubuntu。因为 Ubuntu 与 Win 配合得很好,所以它grub以 Win“喜欢”的方式安装,然后机器成功地双启动了 Win 和 Ubuntu
  • 安装其他 Linux 操作系统(在我的例子中是 Kali),但无需重新安装grub
  • 启动到 Ubuntu 并grub从 Ubuntu(我使用“grubcustomizer”)重新配置为三重启动
  • 卸载Ubuntu
  • 启动到其他操作系统并清理grub并将启动优先级设置为根据需要启动(我再次使用grubcustomizer)。

当我迁移到这台(新)机器时,我刚刚安装了 Arch 并从 Virtualbox 运行 Windows,将 Win 数据复制到一个文件夹并在 Win VM 和 Arch 之间共享该文件夹。我现在可以让两台机器都运行(Arch 作为主力,Win 作为虚拟机),并从适合任何特定任务的平台处理共享数据驱动器。

相关内容