User Tools

Site Tools


computing:bootloaders

This is an old revision of the document!


Dual Window Grub Bootloader

If Windows update overwrites the Grub bootloader. Simple way to restore is to copy the debian bootloader (grubx64.efi) over the windows bootloader. We do the following steps:

  1. Save the bootloader installed by Windows: copy E:\EFI\Microsoft\Boot\bootmgfw.efi E:\EFI\Microsoft\Boot\bootmgfw.efi.original
  2. Copy the debian grub bootloader over the bootloader installed by Microsoft (bootmgfw.efi). copy E:\EFI\debian\grubx64.efi E:\EFI\Microsoft\Boot\bootmgfw.efi
  3. Add an entry in Grub boot menu to start the orginal windows loader.

Correct within Windows

Open CMD prompt as “Administrator” and mount the EFT partition as E: drive with:

mountvol E: /S

E:\EFI>dir
 Volume in drive E has no label.
 Volume Serial Number is 502B-5BC6

 Directory of E:\EFI

06-12-2016  20:05    <DIR>          .
06-12-2016  20:05    <DIR>          ..
06-12-2016  20:05    <DIR>          Microsoft
13-02-2021  19:01    <DIR>          Boot
27-11-2021  20:18    <DIR>          HP
13-02-2021  08:35    <DIR>          debian
               0 File(s)              0 bytes
               6 Dir(s)     160.800.768 bytes free

copy the debian grub bootloader over the bootloader installed by Microsoft (bootmgfw.efi).

copy E:\EFI\debian\grubx64.efi E:\EFI\Microsoft\Boot\bootmgfw.efi

Add Windows enty in grub

Add the following lines to: /etc/grub.d/40_custom

menuentry 'WIN 10 (on /dev/sda1)' --class windows --class os $menuentry_id_option 'Win10-efi-502B-5BC6' {
        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  502B-5BC6
        else
          search --no-floppy --fs-uuid --set=root 502B-5BC6
        fi
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi.original.20221209
}

BCDedit

C:\WINDOWS\system32>bcdedit

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  nl-NL
inherit                 {globalsettings}
default                 {current}
resumeobject            {6beefd36-680a-11eb-ac07-a7444769703e}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 0

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  nl-NL
inherit                 {bootloadersettings}
recoverysequence        {5c5834f8-aff6-11e9-ac26-ce270aa00281}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {6beefd36-680a-11eb-ac07-a7444769703e}
nx                      OptIn
bootmenupolicy          Standard
bcdedit /set {bootmgr} path \EFI\debian\grubx64.efi
bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi

bcdedit /enum firmware
bcdedit /timeout 10
bcdedit /copy {current} /d "Linux"
Windows Boot Manager
--------------------
identifier              {6beefd39-680a-11eb-ac07-a7444769703e}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Linux
locale                  nl-NL
inherit                 {globalsettings}
default                 {current}
resumeobject            {6beefd36-680a-11eb-ac07-a7444769703e}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 10
computing/bootloaders.1670584817.txt.gz · Last modified: by oscar