I can make no promises, but try this from a Windows Command Prompt window launched with Administrator privileges:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Note that {bootmgr}
should be typed exactly; that's not a variable. If that doesn't work, you could try this in Linux:
- Back up the entire contents of
/boot/efi
(your EFI System Partition, or ESP).
- Type
sudo mv /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft
.
- Type
cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
.
- Create a new
/etc/grub.d/40_custom
file entry that refers to EFI/Microsoft/bootmgfw.efi
. Model it after the existing entry in /boot/grub/grub.cfg
that refers to EFI/Microsoft/Boot/bootmgfw.efi
; just remove Boot
from the boot path and give the entry a new name.
- Type
sudo update-grub
to install the new GRUB entry.
When you reboot, GRUB should come up. The trouble is that if/when Windows decides to re-install its boot loader, the system will start booting straight to Windows again.
For step 4, you can:
- Copy the
40_custom
entry beginning with menuentry 'Windows ...'
situated between a set of ### BEGIN <path> ###
and ### END <path> ###
tags/comments. This is the entry having the path containing Boot
.
- Create a new entry in file
/etc/grub.d/40_custom
by adding the copied menuentry
.
- Change the name of the new entry (original should be
Windows Boot Manager
or something similar).
- Change the path from
EFI/Microsoft/Boot/bootmgfw.efi
to EFI/Microsoft/bootmgfw.efi
.
EDIT:
Since writing this answer, I've become aware of a third-party Windows tool called EasyUEFI, which is an easier GUI tool than bcdedit
for adjusting the EFI boot order from Windows. I don't know if EasyUEFI will stop Windows from making changes, though, if Windows has a habit of setting itself as the default on every boot. Thus, bcdedit
may still be required, but EasyUEFI is definitely worth trying, too.