Anything and everything.
So long, Kubuntu…
… hello Idunnoyet.
For Christmas I gave my elder son ol’ faithful, a dual-core Athlon64 X2 4200+. Equipped with 2GB of DDR2, an EVGA GeForce 8800GTS, and a lone 250GB SATA hard drive, it is hardly a powerhouse but was more than suitable for playing with Linux (Kubuntu, as previously mentioned).
My son’s old hand-me-down from his grandad, an AthlonXP 2200+ with 512MB and a GeForce3 is far too old to play any of the latest PC games that have caught my son’s eye; specifically StarCraft 2 and the upcoming Diablo 3.
Anyway, wipe and install and he’s got XP SP3 flying on it and seems quite happy. I plan on swapping the 8800GTS for a 250GTS I’ve got kicking around after upgrading my main machine to a 460GTX for Christmas (paired with a 24″ LED backlit Samsung display… sweet sweet 1920×1080 goodness). I also got him his coveted StarCraft 2 for Christmas, which he’s been thoroughly enjoying. Hasn’t beat me in 1v1, yet. The boy needs to learn to hotkey.
But I digress…
This has left me with the AthlonXP to play with. Digging around I found some more memory for it that I didn’t even know I had, bringing it up to a gigabyte. It’s not matched, not even from the same manufacturer, but given how dog-slow this thing already is I’ll take any performance hit for an extra half-gig of RAM.
At first I threw Kubuntu on it, but it didn’t take long to realize that it’s just too much of a strain for the poor thing – everything felt sluggish. I decided this was the perfect opportunity to give one of the roll-your-own distros a try. Initially I was going to go with Linux from Scratch, but after a stroll through their docs I was reminded just how time-consuming it is. Instead I grabbed the latest Gentoo .iso to gave that a spin.
Gentoo is touted as being a “metadistribution”, it’s regarded as a more advanced distro as everything except the base system is installed from source rather than precompiled binaries. I may not know the inside-outs of every corner of a Linux system, but I consider myself knowledgeable enough to muddle through things eventually. I can’t for the life of me figure out sed (beyond using “s/what he said/humorous replacement/” in a reply on Slashdot) or write a script that does anything beyond the basics of setting an environment variable or calling another program, but I’m no stranger to the console and have an unnatural love for the sight of a screen full of text.
While I’ve read various opinions on whether or not compiling everything specifically for the host actually results in better performance, it certainly seems quicker. Some people say that it’s negligible, others claim their systems scream where they would otherwise drag. I figure if I can save a second here or there on everything I run, it’s a worthwhile benefit.
I set my CFLAGS conservatively, using -O2 for some decent optimizations, -march=native because the binaries will never run anywhere else, -fomit-frame-pointer because I’m terrible at debugging anyway and -pipe to avoid using temporary files.
After 4 days of reading and compiling, I ended up with a mostly functional system using uvesafb for the console and X.Org with OpenBox using the nVidia blob. I also built KDE, but opted for a lightweight window manager rather than a full blown desktop environment.
The only problem I’ve encountered is with the one program I use the most: Firefox. Attempting to drag anything on the main window causes it to crash. Removing the Google search box, moving buttons, even dragging tabs to reorganize them all cause it to dump out. Searching turned up no information on what’s causing this, and debugging it myself is out of the question. Somewhere there’s probably some library that’s broken in some way, but I’m just not good enough to figure out which of them it might be. Even mozilla.org’s prebuilt version crashes.
Although many claim that using Gentoo teaches you more about how a Linux system is built, run and maintained, I’ve found it’s less educational than my personal favourite, Slackware. Portage is really neat, and tracking a program’s every dependency is awesome, but the whole system seems messy. Setting the wrong USE flag can break things, there’s no concise listing of every flag (that I found) outside of portage’s tree, and having emerge configure and install without any real user interaction abstracts from the details of what each package can do and use.
It’s also not perfect. I ran in to one case where package A wouldn’t build because it required package B, but B had A as a dependency as well. It didn’t take long to figure out the proper USE= variable to circumvent package B requiring A, but it shows that even Gentoo is not immune to this sort of thing. It also required building B without A, building A with B, then rebuilding B with A. I might have also rebuilt A one more time just for the fun of it. For the curious, it was openldap and cyrus-sasl, and it’s documented here. I used USE=”-ldap” emerge cyrus-sasl to get around it.
Now, after a week of use, I’m thinking of scrapping Gentoo. Aside from the show-stopper Firefox problem, I am just not liking the feel of Gentoo. I cannot really put my finger on what I don’t like, but I just don’t feel comfortable with it.
Right now I’m playing with VirtualBox running a minimal Slackware-current. I rolled a trimmed down .iso with just enough to boot, network and compile. I’m thinking I’ll use this as a baseline for building the system up with what I want while gaining a greater understanding of each program’s and library’s interactions. It’s going to take longer than Gentoo, since dependency resolution is an issue, but I’m definitely back on familiar ground.
Right now I’ve got it up and running with the latest kernel (2.6.37) and uvesafb (it’s really spoiled me!), and I’m reading up on building the latest release of the GCC. Not something I’ve not had much luck with before, but that was under MinGW, which somewhat complicates things.
I’m still not ready to ditch Windows completely, though.