Monday, June 1, 2009

Stop clobbering my bootloader!

During this past weekend I tried to get Windows XP, Windows 7, OSX, Debian, and Ubuntu all on one machine. Due to some mishaps, driver oddities with Windows 7, and other things, I had to install certain operating systems multiple times. Now, the problem is, each operating system has it's own peculiar way of loading. Linux uses GRUB, Windows XP has NTLDR, 7 has the Windows Boot Manager, etc. Most of these operating systems also decide it would be helpful for the end-user that when his computer reboots, it can actually load the new OS. That's great, but I already have a bootloader.

I have a partition at /dev/sda5 which contains a GRUB installation. That's supposed to handle every OS's own method of booting, including the Linux installations which have their own GRUBs on their own partitions. But when you decide to overwrite the MBR, I don't get your nice and shiny OS. A good number of OSes use an MBR that won't boot an extended partition anyway. So instead of seeing your bright and shiny new OS, I see "NTLDR is missing". Or the ever-so-helpful "boot0: error". I'm -lucky- if I even get an OS at all, much less one that can load the grub shell so I can fix what you broke.

I understand having 3 GRUB installations plus a whole bunch of other bootloaders isn't exactly a standard use case. Most people don't go beyond dual-boot. But please, for the love of all that is holy, please just put a little checkmark somewhere,"Do not replace MBR". Ubuntu and Debian are the only OSes that actually give you that option in some form.

Or better yet, let's all just standardize on GRUB. Sure, it's not perfect, but it's as flexible as you can get.


  1. "Ubuntu and Debian are the only OSes that actually give you that option in some form."

    Untrue, I've installed OpenSuse and Fedora as well as Ubuntu, and all of them allowed installing their own GRUB to their own partition without touching the 'master' Gentoo GRUB in the MBR. Chainloading is fun.

  2. There are no such thing as "extended partitions" in boot loaders. Technically extended partitions are partitions in a primary or an other extended partition (partitions in a partition).

    So, IMO, the boot loader do the right thing: load and execute the boot sector on such partition. So it is expected that you have a boot code (e.g. a standard MBR) at every level of the partition chain. And IIRC this is the problem, some partition program doesn't include std code.

  3. Which GNU GRUB version do you want to standardise on?

    An orphaned one from 2003 which is out of development?

    One where the first usable version is from about 2008, with no documentation and everything?

    Besides, it’s not freely enough licenced for most OSes to use. (But at least some plan to add support for the Multiboot spec. Which version of it? Yes, there is more than one… and implementation bugs in grub-legacy… It sucks. Plus, you can only get bugs fixed quickly enough in your own bootloaders.)