Sonntag, 26. April 2015

Infinite install/rollback cycle of KB3033929 caused by missing boot flag

If Microsoft's KB 3033929 turned bad on you, do not fear!

Microsoft's update KB 3033929, pushed recently to Windows users, has reportedly caused infinite reboot loops for some users [1,2,3,4].

Most systems hitting this bug were multi-boot installations, many of them Windows/Linux installations using GNU's Grand Unified Boot loader (GRUB). But then again not all of them. Other dual-boot users reported the update installing with not problems. On the other hand, pure Windows users reported being hit by the vicious reboot cycle. Dual boot seemed to promote the problem, but not cause it.

A workaround was proposed for dual boot systems with GRUB installed on a second hard disk, which finally made it to Microsoft's support page for KB3033929. It features reconfiguration of the boot device, which is a complicated and potentially dangerous operation for inexperienced users.

The workaround on Microsoft's support page and originally posted here does not capture the problem. It also affects dual-boot systems using a single, partitioned had disk. It may even hit Windows-only systems.

I believe the problem is caused by a missing boot flag.

The Windows boot loader looks at the partition table's boot flag to know which partition to boot from. KB 3033929 seems to rely on this. However, the boot flag may not be set as expected (i.e. in Windows multi-boot environments, and most probably not for any non-Microsoft boot loader such as GRUB and others).

GRUB and other boot loaders do not even look at the boot flag, but present the user with a choice of which partition to boot from. Microsoft's Windows chooses not to offer a choice, it takes the one with the boot flag set -- and if this is not present, it fails. This causes the endless reboot cycle.

In short:

GRUB (and other boot loaders) do not care about the boot flag. Windows and KB 3033929 do. Set the boot flag on your Windows partition to make the update work.

Here is how it can be done:

I am sure there are ways to do this in Windows. Sorry, I am not a Windows user. If in doubt, ask your personal Windows Guru about it. She will know.

If you are on a Linux/Windows system, please boot into Linux ;-). In lack of Linux, you may boot into a live installation, such as the Ubuntu Live DVD downloaded from Canonical.

There are many tools for modifying the partition table, like "parted" (and its graphical counterpart, "gparted"). Let's assume you have a single-disk, multi-boot environment. This means, your disk will be referenced as "/dev/sda/". Have a look at its partition table:

> sudo parted /dev/sda
(parted) print

Identify which partition is your Windows main partition. Chances are, this is the biggest partition you will find ;-). (Windows always plays big. Doesn't it?) File system will be "ntfs". Say this is partition n. Do

(parted) set n boot on

Be sure to substitute n for the number on your Windows boot partition. Do

(parted) print

to verify the boot flag is set on the right partition. If you are sure, do

(parted) quit

That will be it. Reboot you system, and allow it to boot into Windows. It may take two or three reboot cycles to complete, but Windows will install KB 3033929 and not bother you again.



Keine Kommentare:

Kommentar veröffentlichen