12

I recently installed Ubuntu in dual boot along with Windows 10 on an HP laptop. Initially I was unable to boot up Windows using grub as selecting the Windows options would just loop back to grub.

Then I performed a boot repair, and all these extra options showed up in the grub menu.

I'm able to open up Windows using "Windows UEFI bootmgfw.efi" option, but not using the standard option of "Windows Boot Manager (on /dev/sda1).

How do I reduce these entries and why can't I boot Windows using the latter option?

Here's an image of grub. The first option is Ubuntu:

grub - the 1st option is Ubuntu

karel
  • 114,770
Abhay
  • 123
  • 1
  • 3
    It isn't really a duplicate of that. Mine doesn't show Linux kernel entries. Plus the point that I'm unable to boot Windows using the boot manager option. – Abhay Jul 22 '17 at 07:45
  • 1
    Wow, you're quick! You should only accept after you've tried out an answer, but this one will surely help!!! ;-) Also, did I mention you should really take a back-up before starting or be really, really careful about what you delete?! – Fabby Jul 22 '17 at 10:26
  • 1
    Using GRUB Customizer, as Fabby suggests, is likely to help. As to why one option is working and another isn't, we'd need to see the /boot/grub/grub.cfg file from your system. My suspicion is that the non-working entry is designed for BIOS-based systems, but yours is clearly EFI-based, so a BIOS-mode option is a (literal) non-starter. – Rod Smith Jul 24 '17 at 14:14

2 Answers2

13

Every time I've run boot-repair it adds a 5 extra Windows boot options to my main grub menu that do not work. In your case it has added 11 extra entries!

grub.cfg shows the problem

The secret can be found within /etc/grub/grub.cfg file:

### 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 ###

The section 30_os-prober contains the "good" Windows grub menu entries you want to keep. Section 25_custom contains the bogus entries created by boot-repair. You can't edit the grub configuration file because it will simply be overwritten the next time update-grub is run.


Section 25_custom was created by Boot Repair

On my system:

$ 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

Take a look at the extra Windows options that were setup (and don't work):

$ 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

These are the erroneous entries boot-repair created in /etc/grub.d/25_custom that were subsequently compiled into \boot\grub\grub.cfg.


Reverse Boot Repair's change to 25_custom

Use sudo -H gedit /etc/grub.d/25_custom and delete everything except the first three lines:

#!/bin/sh
exec tail -n +3 $0
  • The file now contains two lines with text and one blank line.
  • Save the file.
  • Run sudo update-grub.
  • Reboot.

Now your menu is no longer bloated with five bogus Windows menu entries that don't work.

Double-check there are three lines in 25_custom

Run this command and verify 25_custom has three lines:

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

I added the # comments to decipher wc (word count) output.

  • 1
    I can't downvote my own answer nor delete it, but I can upvote you... :) Beware that a GUI solution will always get more votes than a text-based solution though the text-based solution is generally more exact (=technically better) – Fabby Apr 07 '18 at 08:48
  • 1
    As I just got an upvote on my answer, I'm surprised to see that your non-GUI has racked up more votes than mine! Good job! – Fabby Nov 19 '18 at 11:52
  • 1
    @Fabby Thanks. I just gave yours an up-vote too :) – WinEunuuchs2Unix Nov 19 '18 at 11:54
  • I might be late in asking but...why is 25_custom needed at all? Why are those 3 lines needed? – poomerang Sep 29 '19 at 18:25
  • @poomerang It's the natural order of an empty configuration file in grub's world. It's easier to conform than to rebel. – WinEunuuchs2Unix Sep 29 '19 at 19:10
  • @WinEunuuchs2Unix asking is free of charge though :) – poomerang Oct 01 '19 at 08:05
6

Windows is off-topic here, but the answer is that this is very old technology and the boot sector is only 512 bytes, so it's not big enough to hold everything we would like it to hold.

To easily add and remove entries from grub all on your own, please:

  1. Take a full system back-up of your entire computer including the other OSes using CloneZilla Live
  2. No, I wasn't kidding! Take a full system back-up first! :-)
  3. Whenever someone tells you to install a PPA be very cautious, do your own research if this is what you really want and only then continue
  4. Install grub-customizer by executing the following commands:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt update
    sudo apt install grub-customizer
    
  5. Start grub-customizer and customize the hell out of it: enter image description here

  6. If you run into serious trouble, restore your system back-up.

Fabby
  • 34,259
  • 1
    You have a delicate style in answers, and even in your comments. Honestly I really wonder why not everyone marks the correct and useful answer as an answer, frustrates me but I never asked for it. I may copy your comments and paste it after my answers – Haitham A. El-Ghareeb Jul 22 '17 at 11:27
  • I just gave you a plus one on a different grub question on hiding boot menu. However in this case "I'm relatively certain" the answer I just posted on this thread is the correct one. It's happened to me twice now and the repair method is flawless each time. – WinEunuuchs2Unix Apr 06 '18 at 23:42
  • FTR I've upvoted this answer too. Last year's comment may have been misconstrued. – WinEunuuchs2Unix Sep 29 '19 at 19:11