Being home from school for the break I took it upon myself to finally upgrade my macbook from Mac OS X 10.5 (Leopard) to OS X 10.6 (Snow Leopard) — intended to be a relatively trivial upgrade, I somehow managed to stumble the whole way through. This was the last of my 3 Operating Systems to be upgraded (XP -> 7, Ubuntu 9.04 -> 9.10).
Important and Helpful things I learned or used in this exercise:
WARNING: there are commands in here that if used improperly can do serious damage to your install, tread lightly. BACKUP your home directory. Use an external hard drive and run something like:
rsync -ahv –delete –exclude=/Downloads/ –size-only ~/ /Volumes/BACKUPDrive/username/ From the Terminal in your home directory. (Apple or Command key + Space to bring finder search type terminal in this window).
Running the Snow Leopard disc yielded my major issue: My Mac disc showed a yellow triangle and wouldn’t let me use my mac drive for the upgrade. Following a note I had seen online, I used Disk Utility (on the booted SL dvd) to resize the partition — DOES NOT WORK WELL — it in fact seemed to mess up both of my other installs (win7 and ubuntu 9.10), uggghhh.
Accepting the inevitable and having backups of my data, I decided to run with this, I took the opportunity to clean all of my installs.
From here, I believe I made two mistakes. My first mistake was when I repartitioned my drive I created 3 partitions, one large one for OS X and 2 smaller ones for the others, but I didn’t format them, just left them as free space. For some reason I believe this messed up how the computer decided to boot from them, it was like the GPT/EFI support with MBR got somehow confused.
The way you should partition for triple booting a mac is to use the command line it seems with something like:
diskutil list This should yield the drive and volume number you need for the next command
sudo diskutil resizeVolume diskDRIVENUMBERsVOLUMENUMBER 80G “MS-DOS FAT32” “Linux” 15G “MS-DOS FAT32” “Windows” 15G This seems to be the best way to re-size.
From here you should be able to continue installing your operating systems of choice. rEFIt is the best way to triple boot, it should be installed now if it hasn’t already been.
Installing Linux / Ubuntu
My second mistake: the most important thing to note in Linux is to install GRUB to the Linux Partition rather than the MBR (default). In ubuntu, near the end of the install there is an advanced options tab which will allow you to install it in the local partition, you want to do this.
If however, you are dumb and mess up like me, you have to fix this later, because windows and linux will fight and will result in only one being bootable.
grub-install /dev/sdaPARTITIONNUMBER will install GRUB to your needed partition.
You will also want to delete the GRUB MBR entry (alternatively, install Windows at this point which will overwrite it without asking). This is a little more interesting:
The Power of dd
dd is a very powerful and useful command, I ended up using it for several different things during this installation. dd provides relatively low level access to disk reading and writing functions. BE VERY CAREFUL TO GET PROPER if= AND of= ARGUMENTS.
dd if=/dev/zero of=/dev/sda bs=440 count=1 will clear your MBR. (OS X equivalent would be of=/dev/disk0 however it doesn’t let you do this to that partition. I saw reference to using fdisk on the /dev/disk0 partition (the 200mb EFI partition), but I’d like to avoid that if possible. DON’T GET THIS ONE WRONG, and backup the MBR by basically inverting making if=/dev/sda and of=/path/to/backup.efi
dd if=/dev/disk1 of=/whereveryouwant/DiskImage.iso bs=2048 is a good way to make ISO images of CD’s/DVD’s (use diskutil list to verify if=/dev/disk1 )
dd if=/whereveryouwant/DiskImage.iso of=/dev/disk2 bs=1m is a good way to make a USB drive boot an image. (use diskutil list to verify if=/dev/disk1 ). ***This will almost certainly wipe whatever is on the USB drive (/dev/disk2) so make sure you don’t need whatever is on there. Under OS X this is the best way I’ve found to make bootable USB flash drives.
Back to the Point
Avoiding redundant GRUB entries avoids refit from displaying phantom legacy OS boot options, or extra linux options. Installing windows will overwrite the MBR and you should be able to boot from any of your operating systems.
How to: Bypass Windows 7 Upgrade “Key is Not Valid”
If you do things as terribly out of order and with partitioning as I did that you need to reinstall windows, you might come across a windows upgrade issue. Windows 7 has a new way of verifying if you are using an upgrade DVD — rather than asking you to input an old CD or DVD, it will look on your system for pre-installed versions of windows. However, having just formatted everything this is an issue.
Solutions: 1) Reinstall XP/Vista (NOT IDEAL). 2) Plug in external or other hard drive with XP/Vista Install (NOT IDEAL). 3) Install Windows 7, make it through the install to where it asks for your key. If you put in your key (and you’re sure it’s correct) and it says “key is not valid” (Note: this is in the initial key entering, not activating), then you seem to have no way forward. However, if you reboot and relaunch the installer, Windows seems to detect the install you just created as a valid install, which will let you input your key the second time without harassing you.
Other Useful Tools/Notes:
rEFIt has a partition tool. This is a way to use gptsync, and this is very useful. There were a few situations I needed it in, sometimes you have to help the computer sync MBR/GPT. It will basically auto correct differences in the table that it detects.
gparted is a useful linux tool for partition management. I needed this for a few small things and it can help point to where your issues are. There is a live image or you can find it on most live distributions (ubuntu).
To answer why, after all this I triple boot rather than virtualize… I’m running an old 32-bit Core Duo macbook — I don’t believe they have the Intel Virtualization Technology. More importantly, I use Ubuntu generally for certain low level tasks (i.e. Wifi card in promiscuous mode). I use Windows for (limited) gaming/weird hardware access and most of the solutions that port graphics don’t support my chip (VMWare Fuzion).
I’m sure this process ended up being far more painful for me than it needed to be, but I’m back to happily triple booting.