The cause of your issue could be that you are booting the EFI default bootloader of the harddrive instead of the Windows bootloader (NVRAM entry named Windows Boot Manager
), which usually "corrects" the boot order. Just use the Windows bootloader in that case, alternatively you could replace the default bootloader with another one.
You should first be aware that modern EFI-based computers boot in entirely different ways from older BIOS-based computers. I suspect you're laboring under incorrect BIOS-mode mental models, which is leading you astray. I recommend reading:
That's admittedly a long reading list. If you have time for just one, I'd go with the first, or possibly the second. The third and fourth are more practical tutorial on installation, but you've already got a working system, albeit one that's not working in quite the way you want.
Of particular importance for this discussion, under EFI, boot loaders are stored as ordinary files in the EFI System Partition (ESP). The boot loader to be launched by default is stored in NVRAM, which can be displayed by sudo efibootmgr -v
in Ubuntu, and modified with other options to efibootmgr
. (Type man efibootmgr
for details, in the usual terse manpage style.) Your /boot
partition holds Linux kernels, GRUB configuration and support files, and a few other boot-related tools; but the main GRUB binary, grubx64.efi
, is stored on the ESP, which is mounted at /boot/efi
in Ubuntu.
That out of the way, Windows requires the Windows boot loader, and Ubuntu requires a Linux boot loader. The latter is GRUB 2 by default, but can be any of several other EFI boot loaders for Linux. The task of a boot loader is to load an OS kernel into memory and start it running.
A boot manager, OTOH, displays a menu or otherwise provides a way for a user to select what OS to launch. GRUB and the Windows boot loader both provide boot manager functions as well as boot loader functions; but there are programs that provide boot loader functions only or boot manager functions only. In fact, all EFIs provide some sort of boot manager, although in some cases it's so primitive that it's useless.
I've heard that it's possible to configure the Windows boot manager to launch GRUB, even in EFI mode; but I don't know the details of how to do this. You might ask about it on a Windows forum if you want to investigate this approach.
Another alternative, if you don't like the GRUB UI, is to look into another boot manager. For something that's non-intimidating once configured, my own rEFInd boot manager may be to your liking. It presents a graphical view (although it's still keyboard-driven), so it's likely to be less intimidating than the text-mode GRUB. You might want to tweak rEFInd's configuration once it's installed. See its configuration and Secure Boot documentation in particular.
Best Answer
I also faced the same issue that Windows 10 (Education) automatically, on startup, moves the Windows Boot Manager EFI entry to the top again. If I changed it, after restarting with Windows, the next boot skipped Grub and directly booted into Windows. This is how I sovled it:
I would recommend the tool EasyUEFI http://www.easyuefi.com/ to view and change some EFI related settings.
Open the tool and select Manage EFI Boot Option
Take a loot at the exiting entries. The two important ones for me are:
And:
The next step is to make sure that Windows does not use its own
bootmgfw.efi
file again, but rathergrubx64.efi
. To do so, don't move an Ubuntu EFI entry to the top again (i.e. that's the problem we have), but just set the file path for the Windows Boot Manager to\EFI\ubuntu\grubx64.efi
. You can also do this from the administrator command line:Now, Windows should not change the EFI settings anymore and on every boot, GRUB is the default. As GRUB ideally already identified your Windows OS, it also contains its value in the grub settings.