将Windows 10添加到GRUB OS列表

我最近从学校买了一台电脑。 它随Windows 8.1一起安装。 然后我安装了Windows 8.1的另一个副本(因此它将使用内置的Windows Pro许可证)并将其升级到Windows 10.然后我将Windows 8和10安装在Ubuntu上。

请注意,我为/ boot创建了一个单独的255MB ext2分区。

现在,当我启动计算机时,我首先看到一个GRUB提示符(我已经用Windows 8和Ubuntu选项取消了grub提示符’因为我喜欢这样)。 但是,没有Windows 10选项。 如果我选择Ubuntu,计算机将启动到Ubuntu。 但是,如果我选择Windows 8选项,那么我会被发送到Windows引导程序,然后它可以选择启动Windows 8或Windows 10.(但是,到目前为止,计算机已经加载了内核,所有显然,微软误解了启动加载程序的概念,并认为这意味着“在实际显示引导加载程序之前实际启动整个系统”。典型的Microsoft。)

如何禁用Windows引导加载程序并向GRUB添加Windows 10选项? 编辑:有人回答告诉我禁用Windows引导程序。 但是,我仍然不知道如何将Windows添加到GRUB OS列表中。 有人能帮忙吗?

编辑2:使用EasyBCD从Windows引导程序中删除Windows 10后,似乎在几次重新启动后,它将不断取消隐藏,Windows 10将重新出现。 但是,我后来从msconfig中的操作系统列表中删除了Windows 10,它似乎一直没有被删除。

但是,我仍然没有设法让Windows 10出现在GRUB中。 这就好像GRUB根本没有检测到它。

另外,我会把这个放在问题中,以便人们看到它 – 我尝试过使用boot-repair ,但是,它没有任何帮助。

使用:

 sudo update-grub sudo grub-install /dev/[BOOT PARTITION eg. Sda6] 

Ubuntu终端中的命令,可能会解决你的问题。

通过此命令系统将自动检测窗口安装并将其添加到grub列表。

有时os-prober是错误的。

查看Windows 10分区的UUID,例如:

 sudo blkid /dev/sda2 

然后编辑/etc/grub.d/40_custom ,并在文件末尾添加:

 menuentry "Windows 10" --class windows --class os { insmod ntfs search --no-floppy --set=root --fs-uuid $your_uuid_here$ ntldr /bootmgr } 

不要忘记更改UUID。

最后更新你的grub配置文件:

 sudo update-grub 

资源

使用此应用程序EasyBCD for windows http://neosmart.net/EasyBCD/下载免费版本并安装它。

打开它时,您将看到一个用于Windows 8的条目和一个用于Windows 10的条目。

删除Windows 8条目,你会很高兴。

执行上述步骤后更新返回Ubuntu,

ctrl + alt + T打开终端

然后将这些命令一个接一个地复制到它,

 sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt-get update sudo apt-get install -y boot-repair 

通过这个,你将安装一个名为boot-repair的工具。

从破折号打开启动修复,你会得到这个窗口

在此处输入图像描述

选择推荐的维修并按照步骤操作。

请注意 ,使用引导修复时必须连接到Internet。

据我所知,您在一个或多个硬盘上安装了两个不同的Windows,并且您不希望Windows加载程序妨碍或管理两个Windows安装。 我记得在遗留设置中直接从Grub引导Windows内核是可能的(我可能在这里错了)但我无法在UEFI设置上执行此操作。 拥有两个可以独立从Grub调用的独立Windows引导加载程序配置应该非常接近您要查找的内容。

它随Windows 8.1一起安装。

我将假设这是一台支持UEFI的计算机。

  1. 请检查计算机是否真的具有UEFIfunction(如果不是,我将删除我的答案)并熟悉BIOS和UEFI之间的差异( 不同的启动模式 ,efibootmgr,不同的分区表,EFI系统分区(ESP),EFI加载器…)。
  2. 然后检查所有操作系统是否都安装在UEFI模式下,并检查您是否有GPT分区表。 您可以使用Windows的dism将分区备份和还原到新的分区表布局,并使用最新Windows安装介质中的命令提示符重新安装引导加载程序,有关详细信息,请参阅下一页。
    • 由于建议您尝试各种其他无法解决问题的工具,因此必须将这些更改恢复到原始状态,否则会出现越来越多的混乱。 对于那个很抱歉。 🙁
  3. 您可以使用我的答案如何通过GRUB从UEFI模式的旧MBR分区启动Windows 8?
    • 这个答案确实通过bcdboot在一个不同的位置安装一个独立的Windows启动加载程序配置,Grub会调用它。 为方便起见,我选择了Windows根分区。 您需要为每个 Windows安装执行此操作,以便每个Windows安装都有自己的安装,并且只会自行启动(从其他条目清除单个Windows启动菜单)。
    • 请记住,您需要为要在/etc/grub.d/40_custom引导的每个Windows安装创建单独的条目,并按照有关UUID,分区和分区表的说明和说明进行操作。
    • 可能会禁用每个检测不同操作系统的半智能function,例如Grub中的OS-prober( GRUB_DISABLE_OS_PROBER ),或者解决Windows启动问题或启动修复(或者在它们之后手动清理)。

注意:您的要求是能够使用Grub管理所有操作系统,但是对于UEFI,传统的“双启动”术语几乎是用词不当。 UEFI允许在ESP上共存多个引导加载程序,您可以选择引导哪个引导加载程序(如果它们已在UEFI固件中注册,并且制造商固件不会像仅引导Windows那样进行规范光顾)。 令人遗憾的是,只有极少数人可以考虑将一个以上(独立)版本的Windows ,Linux或一个Ubuntu版本安装到一台计算机上 (或者是与几台计算机一起使用的硬盘驱动器并启动不同的安装。在每台计算机上发布相同的OS)。 其中大部分已经成为可能,但Windows和Ubuntu(Fedora,…)中的机制明显地选择覆盖其命名空间中的内容,假设只能有一个。

(我在台计算机上启动了Windows8 / 10,Ubuntu,Ubuntu LTS和Fedora,并且根据不同的要求在UEFI启动时进行了几次修改。)

此解决方案在grub2菜单中提供了正确的输入,并在不参考BIOS的情况下直接链接到Windows 10中。 它来自https://ihaveabackup.net/article/grub2-entry-for-windows-10-uefi所以我声称没有信用。 找到一个有效的解决方案真是太宽慰了

简而言之,编辑/etc/grub.d/40_custom并添加:

 menuentry 'Windows 10' { search --fs-uuid --no-floppy --set=root CC66-4B02 chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi } 

要查找–set = root行(示例中为CC66-4B02)的UUID,请使用sudo fdisk -l标识EFI分区,然后使用sudo blkid / dev / sda1(或其他)查​​找EFI分区的UUID 。 请注意,它不是Windows分区,而是您需要的EFI分区。 保存编辑后,运行sudo update-grub以生成/boot/grub/menu.cfg文件,然后重新启动以进行测试。

只需登录您的Ubuntu操作系统,打开一个终端:

 sudo update-grub 

重启