Ubuntu: Boot Repair created too many Grub menu entries for Windows



Question:

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 boot menu https://ibb.co/ecT625


Solution:1

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.


Solution:2

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

You want to edit the file /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:

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

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


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »