Monday, December 12, 2005

All that Ever Was and Ever Will Be

My laptop arrived on Friday. I say arrived in the literal sense, for in the figurative sense my laptop has always been with me. With less than 72 hours of exposure I feel like I've always had it, and wouldn't know how to go on without it. But the process of getting here was nothing short of heroic.

Warning: If you do not consider yourself a geek, you may want to skip the rest of this post.

When I get a computer the first I do is boot into Windows (which always comes pre-installed) to confirm two items. First, yes the world is still controlled by Microsoft. Second, yes the hardware functions. Immediately following those critical confirmations I turn to the task of installing Debian GNU/Linux.

The Toshiba Protege R200 has neither optical or floppy drive. The same goes for my old, inferior laptop. Thankfully I have a PCMCIA CD drive, I should just be able to toss in the Debian Net Install CD, boot of the drive and go through the process. No (get use to seeing that word). Turns out you cannot boot of the PCMCIA drive. So, I whip up some boot diskettes and boot of my USB floppy drive. Perfect, now when I get to the Debian Net install I'll just connect to my wireless and get the software. No. Turns out the wireless is not supported by the stock kernel. No problem, it's got a built in GIGABIT ethernet. No. The device is so new that the opensource driver won't work, you need a patch from the vendor.

No problem, I've got the entire Debian Sarge distribution burned to DVD. I can install from that! No. For reasons passing understanding the CD drive only works intermittently. Really no solution other than to try again and again until it works. Which I did. So now it was just a matter of using the provided tools to shrink the windows partition to make space for Debian. No. Stupid NTFS, I had to use the Toshiba recovery partition to format the entire computer and put Windows in a tiny 10 gig partition. And then we were ready, finally getting through the install process. Yay!!! Now all I needed was to get online, it would be cakewalk once I had an IP address.

Two routes then, wireless or ethernet. First the wireless, which could be compiled as a separate module. Only trouble is that I had to use the latest Debian kernel (which I burned to CD from another computer) which had been compiled with GCC 4.0. Debian Sarge comes with GCC 3.3. If you're thinking it should be easy to just copy over the appropriate debian packages to install GCC 4.0 you clearly don't understand the scope of the problem. So when I tried to compile the module I had binary incompatibility issues. Fine, I'll just recompile the whole kernel from source. Except all the kernels I created were causing kernel panics at boot (turns out this was my fault, as I later learned from Eric). Okay, what about the ethernet device. Well, the internet wasn't a whole lot of help... bunch of people saying different things about how to get it to work. Eventually I figured out I needed to patch the kernel and compile a new... but wait, I couldn't get that to work with a stock kernel, why would this be any different.

Then I had a brilliant idea. Compile the wireless driver on a different computer, copy it over and install it. Now it was just a simple matter of booting into windows, copying over the appropriate modules, tools related to the module (madwifi is really strange) and associated libraries, booting back into Linux, mount the Windows partition, hand place each file into the appropriate directory and load the module. Except that all of my other computers are AMD and the laptop is i686. Another incompatible binary! After learning how to cross compile I eventually went through the whole process again and finally... FINALLY had a working internet connection.

The rest was pretty painless. Thanks to the amazing opensource community I was able to stand on the shoulders of giants and get everything else working in a matter of hours.

End of Geek Alert

No comments: