TL;DR: In a Windows 10 / Ubuntu UEFI dual-boot scenario, booting Windows 10 from Grub causes Windows Boot Manager to overwrite / remove Grub. How can I stop this from happening?
My PC has been happily UEFI single-booting Ubuntu 18.04 for a long time. I recently decided to install Windows 10 and dual boot them. I've done this plenty of times in the old BIOS/MBR days so didn't anticipate major problems.
Installation Process
My installation process was:
- Install Windows 10. As expected, this overwrote Grub with the Windows Boot Manager.
- Use a live-usb and Boot-Repair to reinstall Grub.
- Boot to my existing Ubuntu 18.04 installation and run
update-grub
which automagically picked-up the new Windows install. - Use Grub to boot Windows 10
The Problem
Here's where things went wrong. After spending some time in Windows I needed to boot back to Ubuntu. I restarted the machine and, to my surprise, found that it booted straight back into Windows 10 with no sign of Grub anywhere.
I restored Grub as before but found that booting into Windows caused Grub to "disappear" every time.
The Setup
- HP Z420: latest BIOS
- Boot Settings:
- UEFI boot mode enabled
- Legacy boot mode disabled
- Secureboot disabled
- Fastboot enabled
- Single SSD (
sda
) with GPT Tablesda1
: EFI System Partitionsda2
: Ubuntu 18.04 (mountssda1
under/boot/efi
)sda3
: Windows 10
Things I've Tried
- A lot of the answers which pop-up around this seem to suggest Legacy/MBR dual-booting. I'd like to avoid the hassle and potential data loss of switching GPT to a DOS partition table and also … it's 2020 it feels like this shouldn't be a problem!
- I tried deactivating and lowering the priority of Windows Boot Manager using
efibootmgr
as suggested here and here but Windows Boot Manager just re-enables itself when I boot Windows!
I would very much appreciate any assistance. I feel like this shouldn't be hard!
Best Answer
Apologies for answering my own question but in case it helps someone else in future.
As suggested in the comments, I tried the following:
but neither of these worked.
I was about to try renaming the original boot manager when I stumbled across this answer. Running the command:
has prevented Windows Boot Manager from replacing Grub. I've even successfully turned Hibernate and Fastboot back on with no loss of Grub.
NB: It is important to get the EFI path correct. After running boot-repair from a LiveUSB to get grub back, it will tell you the full path to use since it isn't always identical to what is listed above.