我有一台戴尔 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。这是我解决这个问题的方法:
- 将目录重命名
/boot/efi/EFI/Microsoft
为Microsoft0
- 相应地更改路径
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
,以/EFI/Microsoft0/Boot/bootmgfw.efi
似乎我的笔记本电脑中的 BIOS 总是将 Microsoft 引导加载程序放在列表的顶部,无论您如何配置它。因此,重命名Microsoft
EFI 分区中的目录可以欺骗 BIOS,使其不会自动启动到 Windows。
答案3
答案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 作为虚拟机),并从适合任何特定任务的平台处理共享数据驱动器。