我想在 Windows 分区上安装 grub。在 Windows 分区“C:”上安装 grub 将覆盖 Windows“卷启动代码”,因此 Windows-8 将无法启动。“chainloader +1”命令不起作用。
在这种情况下,有什么方法可以用来启动进入窗口吗?
从我在本主题中读到的内容来看,使用“ntldr /boomgr”命令可能是可行的。根据该答案,“ntldr /bootmgr”将绕过 PBR 并直接加载“bootmgr”。
set root=(hdX,Y) #where bootmgr is located.
insmod ntfs # load ntfs module
ntldr /bootmgr
boot
你们当中有人尝试过这个吗?
答案1
对我来说,这是有效的。我做了类似的事情:
您可以添加一个合适的条目/etc/grub.d/40_custom
,然后执行sudo update-grub
。条目可能看起来像这些:
如果你找到 EFI 分区
menuentry "Win 8" {
set root='(hd0,gpt1)'
chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}
尽管如果你找到 bootmgr 文件
menuentry "Win 8" {
set root='(hd0,msdos1)'
ntldr /bootmgr
boot
}
(hd0,msdos1)
是我的磁盘和安装 win 8 的分区。要找到正确的设置,set root='(hd0,gpt1)'
您可以执行以下操作:
- GRUB 启动时:按
c
进入命令行模式 - 编写命令
ls
以获取所有(磁盘,分区)条目的列表,例如(hd0,gpt1)
等等。 - 键入
ls (hd0,gpt1)
并尝试其他方法以找到安装 win 8 的正确方法。 - 找到正确的分区后,您可以键入
ls (hd0,gpt1)/
以列出分区的内容。然后查看是否有/EFI/
文件夹或只有一个/bootmgr
文件
现在您终于可以在文件中添加正确的条目了/etc/grub.d/40_custom
!