Over the past few days I have been installing Windows Updates on my two most recently acquired Windows 8 systems (see My New ASUS Laptop and My New Compaq Laptop). I had read several news items and blogposts noting that recent Windows Updates were destroying the Linux portion of dual-boot Windows 8/Linux setups. After struggling with this for a while, I can finally report that yes, there is a problem — but it's generally not as serious as has been reported.
This post assumes a fair amount of knowledge of UEFI firmware configuration and boot setup. If you're unfamiliar with how a system with UEFI firmware is configured for dual-booting Windows and Linux, you might want to review a few of my previous posts describing that process (sometimes in painful detail).
This post also assumes that the system with UEFI firmware is NOT set up with Legacy Boot enabled. I don't care whether Secure Boot is enabled or not, as that would have no effect on the following description and operation. I haven't tested this in any way with Legacy Boot enabled, so I have no idea whether it would work the same, or if it might be more (or less) immune to problems.
To configure dual-boot Windows 8 and Linux, you have to add a Linux item to the UEFI boot object list, and then change the boot sequence so that Linux precedes Windows. Again, I have explained this in detail in several recent posts, so I will not go into any more depth than this. The important thing here is that this is the key to dual-booting Linux and Windows, because as far as I have been able to determine it's impossible to boot Linux from the Windows bootloader.
When I installed the latest Windows 8 updates on my two new laptops, both of them suddenly stopped booting Linux by default, and went back to booting Windows 8. This did not make me a happy person — I hate it when an update changes something like this without even giving a warning or notice, much less asking for permission or attempting to preserve the configuration that I have gone to a lot of trouble to set up.
Obvious and non-obvious changes
When I investigated exactly what had happened, I found two things — one rather obvious and not too surprising, and one not at all obvious and very surprising.
The obvious change is that something in the Windows Updates has altered the UEFI boot sequence configuration, and put Windows at the front of the list again. This is the reason that the computer suddenly starts booting Windows by default again, rather than Linux. The important thing to note here, though, is that (at least in my experience), the actual list of boot items has not been changed, so you can fix this problem by using whatever your Boot Select key is to interrupt the boot process, then select Linux to boot, and finally use the efibootmgr program under Linux to reset the boot sequence again, putting whatever Linux distribution you want to boot first in the list.
The non-obvious change is one that can make this situation a lot more difficult and confusing. I have mentioned before that Windows 8 has introduced a new 'feature' called Fast Startup, which a lot of laptop manufacturers have enabled by default. Under Fast Startup, when you instruct Windows to 'Shut down', it doesn't really 'shut down' in the way it always has before. Instead, it actually just goes into hibernation, saving the state of the system to the disk and then powering off, so that when you power on again it will come up and be ready to use much faster. I consider this to be more of a 'dirty trick' than a feature, because it's very poorly documented, if at all, and while it has the obvious effect of making Windows boot seem to be much faster than it really is, it has the much less obvious effect of not doing a real 'power on start up' when you turn the system on again after doing what you thought was a shutdown.
The reason this is so bad, and so deceptive, is actually well illustrated by these current UEFI Boot reset problems. Even if you realize what might have happened when your computer unexpectedly boots Windows instead of Linux after the updates have been installed, you then try to shut down and reboot to Linux so that you can check and repair the UEFI boot configuration. But after the shutdown has finished, you power on again and are madly pressing whatever the Boot Selection key is (Esc, F9, F12, whatever is right for your system), but it doesn't work, because this is NOT a 'boot' — it's a 'wake up from Hibernate'! You can't get back to Boot Select, so you can't boot Linux, so you can't fix whatever the update did to the boot configuration. I think that THIS is the reason for a lot of the recent posts claiming that the Windows Update "completely destroyed" their dual-boot configuration.
What you actually need to do is tell Windows to Restart, rather than 'Shut down'. That will force it all the way through a shutdown and restart; then pressing the Boot Select key will work, and you should be able to get back to Linux again. Whew. Then you can change the boot order back to Linux first (efibootmgr -o nnnn,mmmm,....) and the world will be a wonderful place again. Sort of.
The other thing that you could do to save yourself some future grief would be to disable the Windows Fast Startup option, so that you don't get fooled or stuck again the next time. This can be done by going to Power Options on the Control Panel — I find the easiest way to get there is to right-click on the battery icon in the Taskbar. Then select 'Choose what the power buttons do', and scroll all the way to the bottom of that list. You should see an option that says 'Turn on fast startup', which you can then disable.
As I said, this information is based on my own experience with my two newest laptops. In fact, one of them had Fast Startup enabled by default and the other did not, so there are clearly differences between manufacturers on this.
While I found that I was able to 'fix' the loss of Linux dual-booting on both of my systems, I am NOT trying to say that everyone who has posted claims about dual-boot being 'destroyed' by Windows Update is wrong. I certainly have enough experience with UEFI boot configuration to know that all sorts of strange things are possible, and it may well be that some systems, with some configurations, really do get more seriously damaged by Windows Update than mine have. One very obvious example might be that the Linux items could get deleted from the boot object list. If that happened you would have to use efibootmgr to put them back again.
Anyway, after having repaired the UEFI boot configuration on my two laptops, they are both back to dual-booting with Linux GRUB as the default bootloader again. Whew.