引导修复为Windows创建了太多的grub菜单项


11

最近,我在HP笔记本电脑上以双启动方式安装了Ubuntu和Windows 10。最初,我无法使用grub来启动Windows,因为选择Windows选项只会循环回到grub。

然后,我进行了启动修复,所有这些额外的选项都显示在grub菜单中。

我可以使用“ Windows UEFI bootmgfw.efi”选项打开Windows,但不能使用“ Windows Boot Manager(在/ dev / sda1上)的标准选项”。

如何减少这些条目?为什么不能使用后一个选项引导Windows?

这是of的图像。第一个选项是Ubuntu:

grub-第一个选项是Ubuntu



3
这实际上不是重复的。我的没有显示Linux内核条目。再加上我无法使用启动管理器选项启动Windows。
Abhay

1
哇,你快!您只有在尝试了答案后才应该接受,但这肯定会有所帮助!!! ;-) 另外,我是否提到您应该在开始之前真正进行备份,或者对删除的内容非常谨慎?!
Fabby

1
如Fabby建议的那样,使用GRUB Customizer可能会有所帮助。至于为什么一个选项起作用而另一个不起作用,我们需要/boot/grub/grub.cfg从您的系统中查看文件。我怀疑这个无效的条目是为基于BIOS的系统设计的,但是您的条目显然是基于EFI的,因此BIOS模式选项是(字面意义上的)入门。
罗德·史密斯

Answers:


5

Windows不在这里, 但答案是这是一种非常古老的技术,引导扇区只有512字节,因此它不足以容纳我们想要容纳的所有内容。

要轻松地自行添加和删除grub中的条目,请执行以下操作:

  1. 使用CloneZilla Live对整个计算机(包括其他操作系统)进行完整的系统备份
  2. 不,我不是在开玩笑!首先进行完整的系统备份:-)
  3. 每当有人告诉您安装PPA时要非常谨慎时,如果这是您真正想要的,请进行自己的研究,然后再继续
  4. 通过执行以下命令来安装grub-customizer

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt update
    sudo apt install grub-customizer
    
  5. 启动grub-customizer并自定义它: 在此处输入图片说明

  6. 如果遇到严重问题,请还原系统备份。


1
您在回答甚至评论中都有一种精致的风格。老实说,我真的很奇怪,为什么不是每个人都将正确和有用的答案标记为答案,这让我感到沮丧,但我从未要求过。我可以复制你的意见和我的答案😂后粘贴
海赛姆A.埃尔- Ghareeb

我只是grub在隐藏启动菜单的另一个问题上给了你一个加号。但是,在这种情况下,“我比较确定”,我刚刚在此主题上发布的答案是正确的。现在我发生了两次,每次修复方法都完美无缺。
WinEunuuchs2Unix

FTR我也赞成这个答案。去年的评论可能被误解了。
WinEunuuchs2Unix

12

每次运行时,boot-repair它都会在我的主菜单中添加5个额外的Windows引导选项,grub这些选项不起作用。在您的情况下,它添加了11个额外的条目!

grub.cfg 显示问题

秘密可以在/etc/grub/grub.cfg文件中找到:

### BEGIN /etc/grub.d/25_custom ###
    menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi
### END /etc/grub.d/25_custom ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p2)' --class windows --class os $menuentry_id_option 'osprober-efi-D656-F2A8' {
    savedefault
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  D656-F2A8
    else
      search --no-floppy --fs-uuid --set=root D656-F2A8
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-9478-B6E2' {
    savedefault
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  9478-B6E2
    else
      search --no-floppy --fs-uuid --set=root 9478-B6E2
    fi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

该部分30_os-prober包含grub您要保留的“良好” Windows 菜单项。部分25_custom包含由创建的伪造条目boot-repair。您无法编辑grub配置文件,因为它将在下次update-grub运行时被覆盖。


该部分25_custom是由Boot Repair创建的

在我的系统上:

$ locate 25_custom
/boot/efi/boot-repair/log/20171111_224241/nvme0n1p5/25_custom
/boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
/etc/grub.d/25_custom

看一下已设置的其他Windows选项(不起作用):

$ cat /boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
#!/bin/sh
exec tail -n +3 $0

menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi

这些是其中boot-repair创建的错误条目,这些条目/etc/grub.d/25_custom随后被编译为\boot\grub\grub.cfg


反向启动修复更改为 25_custom

使用sudo -H gedit /etc/grub.d/25_custom和删除除前三行外的所有内容:

#!/bin/sh
exec tail -n +3 $0
  • 现在,该文件包含两行带有文本的行和一个空行。
  • 保存文件。
  • 运行sudo update-grub
  • 重启。

现在,您的菜单不再因五个无效的Windows虚假菜单条目而肿。

仔细检查其中有三行 25_custom

运行此命令并验证是否25_custom具有三行内容:

$ wc /etc/grub.d/25_custom
      3       6      30
#     ^       ^       ^
#     |       |       +--- Number of characters
#     |       +----------- Number of words
#     +------------------- Number of lines

我在#注释wc(字数)输出中添加了注释。


1
我不能投票给我自己的答案也不能删除它,但是我可以给你投票... :)注意,尽管基于文本的解决方案通常更精确,但GUI解决方案总是比基于文本的解决方案获得更多的选票。技术上更好)
Fabby

1
当我对我的回答表示支持时,我很惊讶地看到您的非GUI赢得了比我更多的选票! 做得好!
Fabby

1
@Fabby谢谢。我也给了你一个投票:)
WinEunuuchs2Unix

我可能迟到了,但是...为什么需要25_custom?为什么需要这三行?
poomerang

@poomerang这是grub世界中空配置文件的自然顺序。服从比叛逆更容易。
WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.