2

I have a dual-boot system with Trisquel GNU/Linux and Windows 8.1, using the GRUB bootloader. However, I am having a problem where, every time I boot into Windows, it seems to be overwriting GRUB, so that on subsequent boots, it boots straight into Windows. I know how to boot into a live USB and re-install GRUB, but it is becoming a real pain to have to do it every time I boot into Windows. I need a longer-term solution to prevent Windows from overwriting my bootloader.

I am aware of this existing question at Unix & Linux SE:

https://unix.stackexchange.com/questions/68581/how-can-i-prevent-windows-from-overwriting-grub-when-using-a-dual-boot-machine

However, the answers there have not helped me (and may be out of date). I have disabled Windows automatic updates and I have verified that no Windows update has been performed since last year. (I posted a follow-up on U&L SE and they recommended I try here instead).

So, does anyone know how I can absolutely prevent Windows from ever overwriting my bootloader, without my permission?

Please note that I am not looking for advice on how to re-install GRUB. I know how to do that and have done it countless times. I need a more sustainable solution to prevent Windows from screwing with my boot sector in the first place.

  • UEFI or Legacy? – user772515 Feb 27 '18 at 1:19
  • @MichaelBay UEFI. I have legacy boot disabled in the BIOS. – Time4Tea Feb 27 '18 at 4:10
  • If so neither Windows is overwriting Grub nor it needs to be reinstalled. There are two reason for your reported issue: 1. Windows somehow is putting itself as first boot priority (happens in some cases with feature updates) which is rare (never happened to me) or 2. You have a "broken UEFI" that violates UEFI standards and tends to boot Windows only. – user772515 Feb 27 '18 at 4:20
  • Although there's really no solution for #2 except an update from the manufacturer, for #1 it's simply a matter of opening UEFI settings and select Grub (Trisquel in this case) again as the first boot priority. Then boot Trisquel and update Grub: sudo update-grub (probably, I don't know Trisquel, the command is for any Debian or derivative). – user772515 Feb 27 '18 at 4:24
  • PS - The linked guide obviously isn't applicable for your case. It's for legacy (BIOS) install and MBR only! – user772515 Feb 27 '18 at 4:25
3

Following the advice of MichaelBay in the comments, I believe I have figured out what the problem was. It seems that on booting, Windows was changing the UEFI boot settings to set the Windows Boot Manager to be the default bootloader. I have to admit that I was somewhat ignorant of how UEFI booting works, but I found this page to be very helpful:

https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/

The issue was essentially the same as this question:

Windows 8 changes boot order

My machine is a Dell Inspiron 660 desktop and it seems that, unfortunately, the UEFI firmware UI for it is basically garbage. However, I was able to use the following commands at the Windows command prompt to change the bootloader back to GRUB:

bcdedit /set {bootmgr} path \EFI\trisquel\grubx64.efi
bcdedit /set {bootmgr} description GRUB

Since I did this, Windows no longer seems to be trying to change the settings and GRUB is loading up every time. Problem solved!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.