It’s rather ironic that after a week of research on free software, software compatibility and protocols I was unable to get Ubuntu 9.10 to boot from EFI on my MacBook Pro 5,1 (late 2008). It’s not the fault of Ubuntu or grub2 developers. It’s Apple’s implementation of EFI, they weren’t loyal to the standards. I didn’t give up yet but I am taking a break.
You might want to know what EFI is and why I would like to “efi-boot” my Ubuntu 9.10. EFI is basically a replacement for BIOS. Using EFI, much more complex devices can be handled before the OS is booted, so we can make shiny boot loaders…
But the real reason I want to efi-boot is the fact that MBP 5,1 has two NVIDIA cards. One of them is 9600 GT the other one is 9400 GT. If Ubuntu is booted with older grub, in a special BIOS compatibility mode, it can only detect the 9600 GT. This results in an extremely over-heated system. I suspect, the undetected card is working at full capacity without doing anything. Anyway, If Ubuntu detects both cards, by the way a lot of people had success doing that, you can select one of the cards to be active without frying your system. This also fixes the battery issue, the battery lasts longer because there is no extra device to leech power in the background.
For three days, I tried gazillion different configurations, beta builds, compiled grub from source with several combinations of modules. I joined the grub IRC channel to get some help and ne of the main developers gave me an experimental version and another version that he modified specially for my problem. None of them worked. Grub just freezes after loading the kernel and the initrd image. I don’t have time to learn about EFI, BIOS or grub internals, I’ll have to wait until people figure out the problem and fix this.
Apple, why would you do this to me?


Updating more stuff
I have created a “Resources” page. I’ll be adding everything I produce on that page. For now there is only this article I have written as an assignment. I also have a tagging plugin for jquery that I am planning to add. TagComplete needs a lot more work to be usable. I’ll write up a readme to briefly explain how to use it. It’s quite easy actually but I want to make it really usable: Include a js file, call a function when DOM is ready and nothing more, no cryptic config options, etc. It also has a Django widget that can be used without much effort. If you’d like to figure it out yourself, be my guest, the code is on github. Or you can poke me to write that readme.