For a fast machine on a budget, buy hardware one generation old.
In your big-box stores, most computer systems are running between $600 and $700 at a minimum, and some run well into the four-figure range. All of them include an extra couple of hundred bucks' worth of unnecessary proprietary software. Considering these realities, one begins to wonder what it would take to roll one's own hardware, just as one would compile a kernel. Recently, Don Marti asked me that very question, and at his request, I'm sharing my response with you.
The goal here is to put together the best bang-for-buck basic workstation. There is a point on any price list from which further improvements get really expensive; we want to aim just below that point. This aim translates to one-generation-back technology—the stuff that's still new in the box, but is last year's model and can be had at a bargain. This machine isn't the Ultimate Linux Box, however; this is simply something you can use to get on the Web, do your taxes and maybe play a game or two of TuxRacer.
A wander through my favorite computer store reveals a couple of things that stand out as places to start a design, simply because they are dirt cheap: PC-133 memory and AMD Duron processors. These items pretty much determine what kind of motherboard we will use—something with a socket A and SDRAM slots. When I built my own box some months ago, I went with a Chaintech 7AJA2E, based on the VIA KT-133 chipset. It has the advantage of fast UDMA-100 IDE disk controllers while still taking the older memory. It also has on-board audio that, while not the best, will do for being on a budget. New, motherboard and CPU (an AMD Duron 1.1GHz) run about $50 each; memory, a generic 256MB DIMM, was about $45. More memory is better if you can afford it; more processor speed, however, is overkill. (My wife does her work just fine on a K6-2/300 I built several years ago.)
Okay, now that we have the basics, we need something to put it in. Cases these days run from your basic no-name cheap case, at about $25, to the all-aluminum Lian Li's, which is in the three-figure range. I'm partial to neither, because neither case absorbs the kind of punishment a hardware geek will give it over several years of upgrades, taking it apart and putting it back together time and again. I used to be hooked on Enlights; two of them lurk here under the computer table in the hobbit-hole. My new hotrod, however, is in a Future P4300W, whose sides come off independently of the front. It also has a pair of USB ports hiding under a panel at the bottom front edge. Forty bucks gets you the plain silver hood; colors and windows are extra. Enermax also makes a case in this range, and they are known for good power supplies. But pick the one you like. After all, you've got to live with it.
Also something to consider here: you'll come out a lot better buying a case with the power supply already in it. Purchasing the power supply separately can cost as much as the case, and you're not guaranteed to get any better performance. The idea here is inexpensive and serviceable, not zero to a terahertz in four seconds.
Well, we almost have enough here to get a BIOS screen, so let's add video. This is an area where you can pick up almost anything cheap and it will work. Matrox G200s, nVIDIA RIVA TNTs, ATI Rage Pro, even the venerable Voodoo line all handle 3-D, though you may wish to go up a notch and get a GeForce 2 or a Radeon. If you're going to do serious gaming, the GPU is where it's at, but if you're only going to run a browser, you don't need a whole lot of horsepower. You can sink a lot of cost here on something fancy, but then we'd be building a gamer's box. On the other hand, a low-end Radeon or GeForce card runs about $50. The ATI cards take the standard XFree86 drivers. Matrox and nVIDIA both offer downloads for their accelerated drivers. I have seen cases where running the nVIDIA drivers on their smaller cards was actually slower than the regular VESA driver, at least in 2-D mode. Purists will want to go non-nVIDIA anyway, as the driver contains a non-GPL kernel module. I'm no purist. You decide.
Another cost consideration: AGP actually is cheaper than PCI in low-end cards. I surmise this is because everybody has an AGP slot these days, and thus the demand for AGP cards drives the production rate up and the cost down. I see the same phenomenon in PC-100 RAM versus PC-133.
Now for the pricey part of our little shopping expedition—drives. As of this writing, it looks like the break point is about $100, for which you can get somewhere between 40 and 60GB, 80 if you're lucky. As luck would have it, Seagate recently released its shiny new line of serial ATA drives, which means the price of its 40GB Barracuda, a drive I've admired for quite a while, has broken the $100 barrier. Maxtors and IBM's can be had for similar coin; Western Digitals seem to run a bit more. Of course, even if you fire up Red Hat or Mandrake and click on “Everything”, this is an incredible amount of space for your basic e-surfboard. Then again, it may not seem like so much after you rip your CD collection to OGGs.
And this leads me to our next item, the CD-RW device. You need some way to back up the system, some way to install it and something to do with all those OGG files. Plain CD-R has become passé in the last few months; your basic RW device runs $60-140, depending on how impatient you are. If your motherboard supports USB 2.0 (or you want to buy a PCI USB controller), you can buy an external USB one and share it around, if you like. The older motherboards may not boot from USB either, though, making installation painful. Best to stick with IDE here, and don't be afraid to go cheap unless you need fast. The $60 one will do just fine.
We mustn't forget our old friend the floppy drive. How else are you going to upgrade the BIOS? (Don't forget to do that later.) If you're paying $20 for one, you're getting ripped off, but don't leave it out either. Sometimes it's the fastest way to sneakernet across that critical file you rmed.
Speaking of sneakernet, you need a way to communicate with the outside world. If you're stuck in dial-up world, you'll need a modem. External is best, albeit pricey, but you don't want to have to reboot Linux and spoil your three-digit uptime because the modem flaked. If you need to go internal for the savings, make sure you don't buy a Winmodem; you can tell this if it calls for a Pentium II rather than a 486.
Unless this machine is your only computer and you're modem-bound, you'll need at least one network card. The little Netgear units are cheap and ubiquitous; they take either the Natsemi driver or the Tulip. If the installer doesn't know for sure already, pick one and try it; if it doesn't work, use the other one. Other good and cheap 10/100 cards include RealTek's 8139, which is sold under a number of brands, and the Linksys and D-Link cards. Basically, if it's a PCI card, it probably will work. Even Intel's e100-based cards have come down into the $20 range, minus all the bells and whistles. You can get away with 10baseT-only cards in a pinch; after all, it's not like you'll be able to drive more than that on your outside link, even on a cable modem.
(Driver consideration: If you use the Intel, be sure to get the latest e100 driver for it, if your distro doesn't already have one. The eepro100 driver has issues if you start hammering it, for instance, moving all those OGGs off your old machine. As of this writing, Red Hat 8.0 has the driver, but Debian Woody does not. The new versions are GPL; RMS would be proud.)
One more thing and we're done: you'll need a cooler for that CPU. This is where not being a hotrod saves us even more dough. Gigahertz-class Durons don't throw heat like the old Thunderbirds or the high-end Palamino-core Athlons. You can get away with a sub-$10 fan if that's all you wanted to spend. One thing to look for, though, are slow fans. I made the mistake of picking up a 7,000 RPM DragonOrb when I built my current box, which sounded like an idling jet engine from the other end of my apartment. Needless to say, I got another, slower fan. Thermaltake makes a few good ones; the Volcano 6 has a copper base, a 4,500 RPM fan and lists for $15.
By my count, we have spent $50 a piece for motherboard and CPU, $45 each for memory and case (I took the color upgrade on the FutureCase), another $50 for video, an even three figures for the drive, $60 for the CD-RW, $20 for the NIC and $15 each for the floppy and cooler. Total cost, $450 plus tax (and shipping, if you'd rather stay in your nice dark office and let FedEx do all the walking around).
But this was supposed to be a dirt cheap machine, you say. Here's where we begin to be really resourceful. These are retail prices are for all new equipment. But, we're Linux geeks; we don't pay for software, why should we pay full price for hardware? Get on your local Linux User Group's mailing list (if you aren't already, you should be) and ask where the good second-hand computer stores are. You might find something in this class you can spruce up. Or maybe they'll have something a touch slower—a lot of K6-2 machines are floating around. Extra memory, as we've said, is cheap; add a decent 3-D video card, and you're set. Sound can be added with a SoundBlaster of some variety, and a used one costs $15 or less. Drives are another place where you can save lots of cash; used ones can be had for around a buck a gig, and if you're not hogging OGGs, you don't need the extra space. If you're feeling really cheap, Debian can be shoehorned into 2GB reasonably comfortably, but you might wish to stay with at least UDMA-33 drives for performance. That should put you in the 10-20GB range. If you're adding to a fleet of machines, and already have a CD-RW elsewhere, you can get a cheap CD-ROM drive, put it in your machine and move files across the network to burn. Another option, the one I used, is to put the cheap drive in the old machine, which happened to be slower, and put the RW in the shiny new box. Floppies can be had from your own old machines, or if you're fresh out, pick one up second-hand for $5. Stay with the good video card unless you're building a server; you'll wish you had if you don't. (Smart shopping might get you something around $30, but make sure the chipset is what you think it is. If XFree86 doesn't recognize it, you'll be stuck with plain VESA mode, which is painful at best.)
You should be able to get a second-hand box for around $100, add memory and a CD-RW and come out with something quite usable for under $250. On the plus side, the older boxes don't need as much cooling (if you avoid Thunderbirds, which run hot) and therefore are quieter. And because Linux runs on practically anything these days, you can upgrade the system a bit at a time, which will save interest on your already well-worn credit cards.
Of course, with all the money you've saved, you might want to get yourself a second drive. Either RAID them both with software or with a little Promise controller ($20), the latter of which is also a good way to get UDMA-100 performance into an older machine, or simply run one system and one data and keep good backups. Splitting up your filesystems also enables you to run XMMS while doing something else data-intensive (like burning CDs or compiling the kernel) on the other drive, even on older hardware. But, make sure you've got things spread out across controllers. To be safe, I would put the system onboard primary, the writer on secondary and any auxiliary drives on the extra controller.
So there you have it. Cheap Penguin Gold, $450; the Silver model, minor scratches, $250; or Platinum, with RAID-1, $570. Happy hacking!
Glenn Stone is a Red Hat Certified Engineer, sysadmin, technical writer, cover model and general Linux flunkie. He has been hand-building computers for fun and profit since 1999, and he is a happy denizen of the Pacific Northwest.