GRUB's makeactive

I’ve run into a strange problem recently. My primary OS right now is Windows 7, and OpenSUSE is secondary. I had GRUB as the bootloader, and everything seemed fine, but I ran into one problem in Windows 7: one program refused to work correctly with ATI forced anti-aliasing on, but it is needed by others (or else edges look jagged). So I decided to install ATI Tray Tools. But it seems that Windows 7 is being evil and won’t let install drivers that their creators didn’t pay Microsoft for (thank goodness that’s not the case in Linux…). That means I had to use a driver overrider program, and that means that it had to change the Windows 7 BCD options. And that’s where bootloaders kick in. It seems that Windows 7 is too lazy to check for its BCD on other than active partitions, so it doesn’t allow the overrider to function.

So what I did was change GRUB to boot Windows 7 with makeactive flag. The problem now is - it won’t deactivate! I no longer get GRUB’s boot screen, it just boots to BCD directly. So my question is - is there a way to deactivate (or, rather, reactivate the /boot partition) after Windows 7 shuts down or restarts automatically? Obviously I don’t want to use GPartEd each time I want to boot to Linux…

Put the windows boot code back to original with the W7 DVD
Then reinstall grub like this
Re-Install Grub Quickly with Parted Magic - openSUSE Forums

Err, neither bootloader is broken, I can use both, only that makeactive effect is permanent for some reason, so I don’t see how reinstalling them would help.

Well … if I correctly understand, you did install Grub in the bootsector of the Linux boot partition and set the active flag. If Windows happens to reset the flag (to it’s own partition), only Windows (the active partition) will boot. Actually, this is normal. You should simply install Grub in the MBR. An alternative is to save Linux bootsector to a file and boot it from Windows boot manager. (If it’s still possible with Windows 7, I don’t know).

Oh, so simply running setup (hd0) in the GRUB console should work? I’ll try that, thanks.

Yes but set the root device first to the Linux partition where /boot/grub is located (more likely your / partition) with

root (hd0,x)

where x is the number of the Linux partition (starting by 0). I guess you can use Linux device names to.
And take a look in /boot/grub/menu.lst to make sure that there is an entry to boot Windows with a line ‘makeactive’ underneath.

Oh, yes, sure. It’s (hd0,2). And it’s my /boot partition.

OK, seems to work fine right now, thanks! Ati Tray Tools, EasyBCD and GRUB all work as they should. Not sure if that will change if I change something with EasyBCD, but at the moment I have no need.

So thanks for pointing that out :slight_smile: