windows:dual-bootloader
Table of Contents
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:
- Save the bootloader installed by Windows: copy E:\EFI\Microsoft\Boot\bootmgfw.efi E:\EFI\Microsoft\Boot\bootmgfw.efi.original
- 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 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
}
Change Bootorder
efibootmgr -v BootCurrent: 0001 Timeout: 5 seconds BootOrder: 0002,0001,3001,0000,2001,2002 Boot0000* Notebook Hard Drive - SAMSUNG MZNTY128HDHP-000H1 BBS(HD,Notebook Hard Drive - SAMSUNG MZNTY128HDHP-000H1,0x500)................-...........A.....................................'.|.......A......................... Boot0001* Windows Boot Manager HD(1,GPT,76a20ae2-4fb2-11ec-bae4-fc39c25e3ce4,0x800,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)RC Boot0002* debian HD(1,GPT,76a20ae2-4fb2-11ec-bae4-fc39c25e3ce4,0x800,0x82000)/File(\EFI\debian\shimx64.efi) Boot2001* EFI USB Device RC Boot2002* EFI DVD/CDROM RC Boot3001* Internal Hard Disk or Solid State Disk RC
Change the boot order:
efibootmgr -o 0002,0001,3001,0000,2001,2002
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
windows/dual-bootloader.txt · Last modified: by 127.0.0.1
