5
votes

Windows keeps overriding the UEFI boot order even if I change it with efibootmgr from Ubuntu. However BootNext option is not overridden, that is, I can set BootNext to Ubuntu and it boots into Ubuntu upon rebooting. I, therefore wrote the following script to run every time I boot into Ubuntu :

efibootmgr > file.txt
CURR="$(grep "BootCurrent" file.txt | grep -Eo "[0-9]{4}")"
efibootmgr -n $CURR
rm file.txt
exit 0

This ensures that I can boot into grub when I reboot from Ubuntu. Is there a way to do the same from Windows so that I can boot into grub when rebooting from Windows?

EDIT :

Running bcdedit /v gives (No Ubuntu entry):

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\ubuntu\shimx64.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default                 {9b4692db-d6e1-11e6-8040-f733056555ec}
resumeobject            {9b4692da-d6e1-11e6-8040-f733056555ec}
displayorder            {9b4692db-d6e1-11e6-8040-f733056555ec}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 0

Windows Boot Loader
-------------------
identifier              {9b4692db-d6e1-11e6-8040-f733056555ec}
device                  partition=C:
path                    \WINDOWS\system32\winload.efi
description             Windows 10
locale                  en-US
inherit                 {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence        {9b4692dc-d6e1-11e6-8040-f733056555ec}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {9b4692da-d6e1-11e6-8040-f733056555ec}
nx                      OptIn
bootmenupolicy          Standard
2
I can't seem to be able to find an Ubuntu entry in BCDedit. @wOxxOm please take a look at the EDIT. - Naveen Unnikrishnan
I was wrong: Windows boot manager runs after UEFI, of course. - wOxxOm
EasyUEFI supports one-time boot sequence and CLI. Maybe you can find pure CLI utilities. - wOxxOm
Thanks for the input @wOxxOm. However, CLI is only available with the paid version. I'd rather not spend $30 to fix this. - Naveen Unnikrishnan
I am looking for this too. - Mike Wise

2 Answers

4
votes

On Windows you can use "bcdedit /enum firmware" to list all firmware applications, then "bcdedit /set {fwbootmgr} bootsequence {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" to set BootNext option.

1
votes

Don't you have to create UBuntu loader similar to {9b4692db-d6e1-11e6-8040-f733056555ec}?

Basically the ubuntu node should be changed from boot manager to boot loader app. Then have a boot manager at EFI\Boot\bootx64.efi.
Create a {bootmgr} node for boot manager. Set its displayorder to include both the guids above. Then set the default value for {bootmgr} to ubuntu guid. That should make ubuntu item sticky across reboots.