This article is a guide to building capable Linux workstations from cheap generic PC hardware.
by Eric S. Raymond
Most of the good things about Linux flow from the fact that it makes a full-featured Unix accessible on inexpensive hardware. Accordingly, there's a huge amount of documentation and folk knowledge in the Linux community about how to get people who already have cheap hardware to use Linux on it. Up to now there hasn't been much advice available on how to acquire cheap hardware that is well-matched to Linux, for someone who already knows Linux.
At today's prices, it's possible to put together a terrific personal Unix platform for less than $2,000 US. If you're prepared to go mail-order, shop carefully and make a few minor tradeoffs, you can do it for $1,500 or even less. But beware. If you buy as though for a DOS/Windows box, you won't get the best value or performance. Linux works its hardware harder than Unix does, and configurations that are marginal under DOS/Windows can cause problems under Linux.
In this article, we'll develop a recipe for a cheap but capable Linux workstation. While developing it, we'll discuss the recipe choices in some detail, and see how to avoid common pitfalls that can cause you grief.
We are going to stick to Intel hardware in this article. Alphas are fast and have that wonderful 64-bit architecture, and SPARCs too have earned their fans. However, I think PC hardware is still overall the most cost-effective--cheapest to buy, easiest to get serviced and best-tested with Linux. And, given the relative sizes of the respective markets, PC hardware seems likely to hold its lead for years yet.
For more detail on this subject, organized in a reference rather than narrative format, surf to my PC-Clone UNIX Hardware Buyer's Guide at http://www.ccil.org/~esr/clone-hw-guide/contents.html. I've been maintaining this document and its FAQ ancestor for longer than Linux has existed, and have been running Unix on PC hardware since shortly after it first became possible in the late 1980s.
Most people think of the processor as the most important choice in specifying any kind of personal-computer system. Our first lesson in building Linux boxes is this: for Linux, the processor type is nearly a red herring. It's far more important to specify a capable system bus and disk I/O subsystem.
One important reason for this is precisely because PC systems are marketed in a way that presents processor speed as a primary figure of merit. The result is that the development of processor technology has naturally gotten pushed harder than anything else, and off-the-shelf PCs have processors that are quite overpowered relative to the speed of everything else in the system. Your typical PC these days has spare CPU-seconds it will never use, because the screen, disk, modem and other peripherals can't be driven fast enough to tax it.
If you're already running Linux, you may find it enlightening to keep top(1) running for a while as you use your machine. Notice how seldom the CPU idle percentage drops below 90%.
It's true that after people upgrade their motherboards, they often report a throughput increase. But this is often due more to other changes that go with the processor upgrade, such as improved cache memory or an increase in the system bus's clocking speed, i.e., enabling data to get in and out of the processor faster.
The unbalanced, processor-heavy architecture of PCs is hard to notice under DOS and Windows 3.1, because neither OS hits the disk very much. But any OS that uses virtual memory and keeps lots of on-disk logs and other transaction states is a different matter--it will load the disk more heavily and will suffer more from the imbalance.
Linux is in this category, and I'd guess Windows NT and OS/2 are too. Assuming you're buying for Linux on a fixed budget, it makes sense to trade away some excess processor clocks to get a faster bus and disk subsystem.
The truth is that any true 32-bit processor now on the market is more than fast enough for your disks under a typical Linux-like load, even if it's a lowly 386/25. Your screen, if you're running X, can be a bit more demanding--but even a 486/50 will let you drag Xterm windows around like paper. And that's a lot slower than the cheapest new desktop machine you'll be able to find by the time this article hits paper.
So buy a fast bus. And especially, buy fast disks. How does this translate into a recipe? Like this:
Buying PCI will get you maximum bus throughput, and makes sense from several other angles as well. The doggy old ISA bus is clearly headed for extinction at this point, and you don't hear much about its other competitors (EISA, VESA local-bus video or MCA) anymore. With PCI now being used in Macintoshes and Alphas as well as all high-end Intel boxes, it's clearly here to stay, and a good way to protect your investment in I/O cards from rapid obsolescence.
The case for SCSI is a little less obvious, but is still compelling. For starters, SCSI is still at least 10-15% faster than EIDE running flat out. Furthermore, EIDE is still something of a ``jerry-rig''. Like Windows, it's layered over an ancestral design (ST-512) that's antiquated and prone to failure under stress. SCSI, on the other hand, was designed from the beginning to scale up well to high-speed, high-throughput systems. Because it's perceived as a ``professional'' choice, SCSI peripherals are generally better engineered than EIDE equivalents. You'll pay a few dollars more, but for Linux the cost is well repaid in increased throughput and reliability.
For the fastest disks you can find, pay close attention to seek and latency times. The former is an upper bound on the time required to seek to any track; the latter is the maximum time required for any sector on a track to come under the heads, and is a function of the disk's rotation speed.
Of these, seek time is more important and is the one manufacturers usually quote. When you're running Linux, a one millisecond faster seek time can make a substantial difference in system throughput. Back when PC processors were slow enough for the comparison to be possible (and I was running System V Unix), it was easily worth as much as a 30mHz increment in processor speed. Today the corresponding figure would be higher.
We just got through with a lengthy explanation of why processor speed isn't that important. But nobody is going to buy a 386/25 (or even 386/50) at this point; if nothing else, you want to get a newer motherboard so you can put this week's flavor of RAM module on it. And who knows? Maybe you will end up doing real-time 3D graphics or nuclear-explosion modeling or one of the handful of applications that can really strain your processor.
So for all you processor-speed junkies out there who want to be able to wave around megahertz figures like gearheads bragging abut the compression ratios in their hot-rods, here's a simple rule:
Why? Because of the way manufacturers' price-performance curves are shaped. The top-of-line system is generally boob bait for corporate executives and other people with more money than sense. Chances are the system design is new and untried--if you're at the wrong point in the technology cycle, the chip may even be a pre-production sample, or an early production step with undiscovered bugs, like the infamous Pentium FDIV problem. You don't need such troubles. Better to go with a chip/motherboard combination that's been out for a while and is well known. It's not like you need the extra speed, after all.
Besides, if you buy one of these gold-plated systems, you're only going to kick yourself three months later when the price plunges by 30%. Further down the product line there's been more real competition, and the manufacturer's margins are already squeezed. There's less room for prices to fall, so you won't watch your new toy lose street value so fast. Its price will still drop, but it won't plummet sickeningly.
Again, bear in mind that the cheapest processor you can buy new today is plenty fast enough for Linux. So if dropping back to a Pentium 90 or 75 will bring you in under budget, you can do it with no regrets.
At December 1996 prices, there's really no reason to consider buying less than a 1-gigabyte disk. This is a convenient size, because ``install everything'' on most Linux distributions will lay out more than 540MB, but less than 1GB of stuff.
If you can afford 2GB, the natural thing to think about is buying a 2GB disk instead. But personally, I like a configuration with two 1GB disks better--one ``system'' disk and one ``home'' disk. There are several good reasons for this kind of setup. Most of them come down to the fact that you are quite a bit less likely to trash two disks at once than you are to trash a single one.
A lot of us do Linux upgrades every three months or so. Wouldn't it give you a warm, comforting feeling during your next one to be able to dismount your ``home'' disk in advance and know that there's no way the upgrade can possibly step on your personal files?
Or let's suppose you have a fatal disk crash. If you have only one disk, goodbye Charlie. If you have two, maybe the crashed one was your system disk, in which case you can buy another and mess around with a new Linux installation knowing your personal files are safe (see above). Or maybe it was your home disk; in that case, you can still run and do recovery stuff and basic Net communications until you can buy another home disk and restore it from backups (you did keep backups, right?).
You can even tune your disk configuration for performance this way. SCSI controllers can interleave requests to different disks, so your swapper and other system daemons will be able to use scratch files on the system disk at the same time your applications are using files on the home disk. Thus, you may find you actually get faster throughput with two smaller disks than one big one.
To get the most leverage from this effect, choose your system disk for access speed and your home disk for capacity. In December 96 I would ideally choose a 1GB fast system disk and a 2GB home disk.
First, buy your monitor. We won't go into detail about this here because the issues aren't at all specific to Linux--you can find good guidance in any DOS-related buyer's guide. There's not a whole lot of price variance among functionally equivalent monitors, since it's a mature commodity technology, so the basic question is, ``how many square inches of screen can you afford?''
This is one of the areas where pinching pennies is not a good idea. You're going to be looking at your monitor for hours on end, and using the screen real estate constantly. Buy the best quality, largest screen you possibly can--it will be worth it. I personally shelled out $2,000 for a 21-inch monitor in January 1996. Though I have no regular income and this represented a significant portion of my bank account, I have never regretted it.
The reasons not to pinch pennies are also reasons why you should actually see the monitor you're contemplating before you buy it. A factory flaw like serious edge mis-convergence or a tilted yoke is not a happy thing to discover just after you've cut a check.
You may want to consider looking for a repaired or reconditioned monitor with a warranty. These are often as good as new and much cheaper.
Next, buy your card. The major issue here is matching the card to the capacity of your monitor--you don't want to pay for more card than your screen can use, and you don't want to buy too cheap a card and find it can't drive your monitor at its maximum capability.
So once you've specified your monitor, find a video card with a maximum video bandwidth equal to or just slightly higher than the monitor's. That way you know your video system is properly balanced with a minimum of wasted capacity.
There is a fair amount of price variance among equivalent video cards, so shop aggressively here. If you're on a budget, one easy thing to trade away is bit depth. Manufacturers like to include 16- and 24-bit ``photographic'' color as sizzle in their advertisements, but unless you're doing something like specialty photocomposition work or medical graphics, you'll never use more than 256. So you can settle for 8-bit color.
The days when XFree86 seriously constrained your choice of video card are long past. Just about anything you can buy in a clone system should work fine these days. If you're in doubt about whether the card is supported, surf over to http://www.xfree86.org/ and check out their compatibility list.
Now we've got a good handle on the most important choices, disks, bus, processor and video. The rest is easier, and less dependent on the peculiarities of Linux.
Next in importance is your CD-ROM drive, since you'll almost certainly be installing Linux from it. You have a SCSI system, so get a SCSI CD-ROM. That's pretty much the end of spec, as SCSI CD-ROMs are a very generic item. The only significant difference among drivers is their speed--6x, 8x, 10x or up. It's hard to find 2x or 4x speeds anymore.
Again, bear in mind that you probably don't need the latest and greatest. High-speed CD-ROMS are really designed for people playing CD-ROM games or other applications involving image and sound archives. If you're doing the Linux thing, chances are you'll primarily use CD-ROMs that are code archives. Your average transfer size will be small and an apparent speed of 6x or even 4x is quite satisfactory. So here's a place to cut costs by buying well behind the leading edge.
Next, consider a backup device. This is another place where spending extra money pays. Cheap tape drives are unreliable, noisy and have agonizingly slow transfer speeds. It's no fun to listen to what sounds like a blender dicing celery for twenty minutes while your disk is backed up, so with the cheap drives you'll quickly find you're backing up less often than you really should.
The worst are the QIC mini-cartridge drives, including the new Travan technology. They're also the cheapest, and thus, exactly what clone makers tend to bundle and salespeople tend to push. Avoid them. Quarter-inch QIC drives are less nasty, mainly because they have higher transfer speed and get done quicker; also they're usually engineered better for reliability. But you really want to pay for a DAT or DLT drive.
Of course, buy 16MB of memory, unless you really like a text-only console--X is not comfortable when memory is tight. Having lots of free memory will also improve your virtual-memory performance. Fortunately, with RAM as cheap as it is now this is unlikely to bust your budget.
You'll also want a three-button serial mouse. I happen to like the three-button Logitech MouseMan and its kin--just the thing for a hacker's chronically cluttered desktop. Your mileage may vary.
You'll want a modem, of course. 28.8 is recommended for speediest possible net surfing. ``How to Buy a Modem'' could be an article in itself; we won't try to cover it here.
The rest is basically frills and freebies. You can get a sound card if you like, though under Linux you're not likely to use it for anything but playing Doom. Every system sold today has the requisite two floppy drives and two serial ports and one parallel port.
That about does it for basic hardware. Later on we'll look at some actual system configurations.
Don't buy jumperless peripheral cards, whether of the newer variety called ``Plug'n'Play'' or the older kind that requires a DOS utility to poke registers in the card at bootup time. These will cause you no end of grief. Plug'n'Play isn't yet supported under Linux as I write, and it would be totally nasty to have to boot DOS first every time you want to run Linux. A lot of these cards don't even hold their settings across a warm boot.
You need to be extra-vigilant about this when buying. The tiny, reptilian brains of most computer salespeople cannot seem to encompass the existence of clone-box OSs other than DOS or Windows. They think boot-time setup utilities are just fine and jumperless cards are the best things since sliced bread, because they are easier to set up and a whole fifty cents cheaper. So they'll push jumperless cards at you with glee and abandon. Foil them, or you'll suffer for it later.
Don't buy so-called ``WinModems'' or anything that advertises ``RPI'' or ``Rockwell Peripheral Interface'' on the box. These are ways for manufacturers to save a few bucks on firmware at your expense; they won't work without driver software that runs only under Windows.
Don't get stuck with a 2-button mouse. Specifying a three-button model is an easy detail to overlook when filling out your order.
When I originally launched the Buyer's Guide years ago, the major distribution channels for PCs were business-oriented storefront dealerships and mail order. The dealerships had, and still have, high overheads and higher prices. Accordingly, I recommended mail order.
I still like mail order, especially for techies on a tight budget. Publications like Computer Shopper and their web site at http://www.netbuyer.com/, are a great way to get a feel for prices, and these days most mail-order outfits with enough cash to advertise on glossy paper are good risks. The online version of my Buyer's Guide (see the URL at the top of this article) has details on how to protect yourself when buying through the mail.
These days, though, I'm also a fan of computer superstores--outfits like CompUSA and Circuit City that sell hundreds of machines a day out of warehouse-sized premises packed to the ceiling with discounted hardware. These obviously have more overhead than mail-order outfits, but their price premium over mail-order is small. They make back a lot of their margin on computer games and small accessories like mouse pads, cables and floppy disks.
So, if you shop carefully and don't fall for one of their name-brand ``prestige'' systems, you can get prices comparable to mail order with the comfort of knowing there's a trouble desk you can drive back to in a pinch. Also, you can see your monitor before you buy.
In a market where prices are dropping fast, it's always tempting to wait just another month or two to buy your hardware, because you know it will then be less expensive.
A good way to cope with this problem is to configure your system on paper, get a couple of initial estimates, then set a target price, below the lowest one, at what you're willing to pay. Then watch and wait. When the configuration cost hits your target price, place your order.
The advantage of this method is that it requires you to settle in your mind, well in advance, what you're willing to pay for what you're getting. That way, you'll buy at the earliest time you should, and won't stress out too much afterwards as it depreciates.
Let's look at some sample components, keeping in mind the guidelines we've developed. All prices are from the December 1996 Computer Shopper or their web site at http://www.netbuyer.com/. Check this site out--its search facilities are pretty good. Prices and vendors have been selected to represent what's generally available out there.
Now let's put these together into sample system configurations.
First, the deluxe system (A+E+F+G+H+I+K+M+N+O+P+Q): $2,824. That's pretty far off our $2,000 target, but now let's strip away as much as we can.
If we drop the 1.2MB floppy (you'll never use it), the secondary disk, and then downgrade to a 15" monitor with 1024x768 resolution, and drop back to a Pentium 75 (D+E+F+H+I+J+L+N+O+P+Q), suddenly the price is just $1,892.50.
Now, when you reflect that vendors of desktop systems buy in volume and get the parts up to 40% cheaper than you can even by mail-order, you can see that coming in under $1500 with a Pentium-75 system shouldn't really be difficult at all.
Even without a system vendor's volume discount, moving back up to a Pentium 100 (C+E+F+H+I+J+L+N+O+P+Q) makes our price $1932.50, still below our $2000 target. The parts list above is just intended as an example--it wouldn't actually be a good idea to build your box by separately assembling pieces like that. It's better and usually cheaper to go through a system vendor.
There are several advantages to using a system vendor. One is the vendor's ability to buy in volume and carve its margins mainly out of the volume discount it gets from parts suppliers. This is especially important for big-ticket items like the motherboard and disks. Another is expert assembly. A third is the pre-shipment burn-in. And then, of course, there's the warranty--a very reassuring thing to have in case your brand-new machine succumbs in spite of that burn-in.
Once you've designed your configuration, you should get quotes from two or three different system vendors. Any vendor who can't generate quotes for a custom configuration, or resists giving a quote without a buy commitment, is not worth your time--find another.
The weakest guarantee you should settle for should include:
Additionally, many vendors offer a year of on-site service free. You should find out who they contract the service to. Also, be sure the free service coverage area includes your site; some unscrupulous vendors weasel their way out with ``some locations pay extra,'' which translates roughly as ``through the nose if you're further away than our parking lot.''
If you're buying from a dealership or superstore, find out what they'll guarantee beyond the above. If the answer is ``nothing'', go somewhere else.
Ask your potential suppliers what kind and volume of documentation they supply with your hardware. You should get, at minimum, operations manuals for the motherboard and each card or peripheral. Skimpiness in this area is a valuable clue that they may be using no-name parts from Upper Baluchistan, which is not necessarily a red flag in itself, but should prompt you to ask more questions.
There are various cost-cutting tactics a vendor can use which bring down the system's overall quality. Here are some good questions to ask:
Your configuration is custom and involves slightly unusual hardware. Therefore, keep a copy of the configuration you wrote down, and check it against both the invoice and the actual delivered hardware. If there is a problem, calling your vendor back right away will maximize your chances of getting the matter settled quickly.
Then install your Linux and have fun.
Eric S. Raymond has been interested in Unix since 1973, on the Internet since 1976, among the leading Emacs hackers since 1983, and maintainer of the Jargon File since 1990. He is listed as a Linux core developer. When not hacking, he is likely to be found reading science fiction, playing jazz flute, or practicing telepathy with his girlfriend's cat. His web page is at http://www.ccil.org/~esr.