First I tried sticking with the Windows 7 that came preloaded. That lasted about 1 day. Despite the hype there is little difference between Vista and 7, especially look up the "winsxs" folder nightmare if you want to know my main gripe against it - I've seen brand new systems hosed because of it. And this makes me more annoyed at the BestBuy Dweeb squad insisting on making some mysterious changes I explicitly told them not to then refusing to give me the restore disks. Well, that all got wiped.
I started with a bit of preplanning. I needed a partition large enough to run Windows XP no matter how much crap I load on there in the future, 50gb sounded reasonable, a partition to run Linux which can be pretty minimal but I went with 23gb to be safe, and the remainder of the drive as a large data partition for them to share - 150+gb. I decided only 1 Linux distro, and not to multihome more than 1 distro. I thought that was enough planning...
First I loaded Windows. For any Windows/Linux always start with Windows, installing Linux plays nicely with existing Windows installs. Installing Windows does NOT play nicely with anything.
I had some issues right from the get go. The Mini has some cutting edge hardware which is not supported from an XP boot disk. Namely the SATA controller. If the boot disk cannot see the hard drive, your install is in trouble. I did some searching on the Intel site and found some XP drivers for an older model ICH7/MDH SATA AHCI controller. The Mini actually has like a #9 or 11, but it turns out the #7 drivers work just fine. I first tried one of those tools which bundle new drivers into a new install iso and tried that disk but it never worked right. Fortunately, I have a USB floppy drive lying around. (An old Dell laptop module with a secondary USB port so you could use the floppy and CD at the same time - shame the cd didn't have it also or it would have saved me from buying an external CD burner) I put the drivers on a floppy and when starting the XP install, you can tell it to get extra drivers from a floppy. Worked great. Needed to update, and get some wireless drivers via a wired network, but the install went smooth at that point.
Linux was not so easy. First I chose CentOS. (Choosing your Linux flavor/distro can be a pain, I did not choose wisely...) CentOS is a recompilation of RHEL that gets used at work so I wanted to stay with what is familiar. RHEL is so popular with businesses because there is no cutting edge software in it. All the cutting edge stuff gets tested in a generation or two of Fedora Linux before being put into RHEL. Then the CentOS guys need some time to rebrand and customize the RHEL code before releasing their versions. So CentOS is always a few steps behind on new technology, and the Mini was using new technology. But I tried it anyway.
CentOS tries to use the kitchen sink approach so its like 5 CDs but they miss the most basic package for any Linux install: GCC. Seriously. First I had to use a backdoor trick of getting another driver for the SATA on a floppy the same as with XP. Actually I put both a Linux driver, and the XP driver with a Linux wrapper on the same floppy so I'm not sure which one worked, but CentOS could finally see the hard drives. Then once I installed it, NO NETWORK DRIVERS WORKED! I kid you not, not even the wired ethernet driver. I found the necessary packages and downloaded them to my data drive with Windows and rebooted to CentOS. Thats when I discovered that CentOS (and RHEL) cannot read NTFS file systems. I did not feel like resizing and formatting it as FAT32 so I just burned the stuff onto CDs. (I have rewritable ones so I wasn't wasting anything.) That's when I discovered that I could not use the drivers because there was no compiler, no GCC! I tried downloading complete packages, and tracing dependencies for a few days before I finally gave up on CentOS. Its nice, its well supported, it just does not run on my Mini 110c.
FYI - that was CentOS 5.4, I haven't tried 5.5 and don't care to. If an OS gives me that many headaches, its not worth using. I want an alternative to Windows, not a knockoff. And I will never waste my time on Gentoo ever - it had to have been the most obnoxious distro I ever tried. The other thing I disliked about CentOS is it used an LVM file system by default which is a nightmare if you ever try to do a disk recovery. I never want to see LVM again.
Another funny side note, I tried the 100mb tiny little PuppyLinux live cd and it works great. I considered using that, but wanted something a bit more robust as a permanent OS.
So I tried Ubuntu 10.04. I've worked with both the server and workstation before so figured it was worth a try. It had its own headaches but ultimately works.
On the install, none of the automated options could properly place the Ubuntu over the CentOS so I needed to go with the manual options. Deleted the CentOS partition. Created a 2gb Swap partition at the end of the drive. (The laptop has 1gb but can support a 2gb upgrade, so planning ahead.) Created a mount point for the existing Boot partition. Did not format it as I was paranoid of a failure, in retrospect I should have to delete old useless configs. Then installed Ubuntu on the remaining space.
It reads the hard drive no problem. It connects to the wired ethernet no problem. It mounts the NTFS data drive no problem. Only the wireless and the GRUB boot menu gave me grief, but I was installed and online so it was workable to solve it.
Broadcomm has a wireless driver for Linux available with Ubuntu but NOT in place by default. The first time you log in, it gives you a popup window to install it but if you wait, the popup will not return. The driver trouble manifests itself by crashing at boot time intermittently. The key is that if you keep trying to boot, it will eventually come back up! With or without recovery mode. The solution is posted on Ubuntu's website:
Basically, you have to install the STA driver package "bcmwl-kernel-source" and it works fine. Recovery mode not needed.
Grub2 turns out to be a real pain compared to the original Grub. Some idiot decided a single editable config file should be replaced with half a dozen scripts. The documentation is here:
It tells you to install a non default package called "startupmanager" which gives you a GUI to change the default OS and timeout. The scripts automatically decide to list OS options and I decided it wasn't worth my time to delete the old useless CentOS ones the tools automatically populate, and rewrite over any manual config changes you make. I get a list of 7 options and only 2 or 3 of them I actually need or want. Grub1 was better for this.
Looking online, there seems to be a lot of grief with people trying to do what I did so I figured a blog post was in order to show that it can be done and how.