Designing and Building a Homebuilt Linux Computer
Linux is the world's most popular server operating system and is becoming more popular as a desktop OS, so Linux hardware detection and support have improved quite a bit. Nowadays, if you walk into a computer parts store, buy a cartful of parts, and assemble them into a Linux computer, they'll probably work when you boot up the machine up for the first time.
But don't count on it.
The degree to which any given piece of computer hardware will be compatible with Linux will fall into one of the following broad results:
It will be automatically detected by Linux and will work properly when the machine is started up, with little or no human input.
It won't work right out of the box, but it can be made to work with some effort, which may vary from making an entry in a configuration file (easy), to recompiling the kernel (not easy).
It won't work and will never work, no matter what you do.
Choosing Hardware for your Homebuilt Linux Box
Obviously, most of us shoot for outcome Number 1 when designing our computers. Unless you have a particular need for a device that will require extensive configuration changes to make it work, it makes sense to choose hardware that will simply work right out of the wrapper. But how does one determine which hardware will work?
The number one rule when purchasing hardware for Linux is to avoid anything with "Win" in its name, such as "Winprinter" or "Winmodem." These devices tend to be designed to be as inexpensive as possible, and usually lack internal controller chips or onboard processors. They use components of the Windows operating system to take over the duties of the parts they lack; therefore, few (if any) of them can be made to work on a Linux box.
The second rule is to always check first before you buy to see if your hardware will work with your Linux distribution. This is especially important with motherboards. You'll want to make sure that all of the mobo's onboard components will work, such as integrated nic's, modems, sound cards, and so forth.
The third rule is to resist the temptation to buy brand-new, bleeding-edge hardware unless you are certain that it is supported in Linux. Since many Linux drivers are written by volunteers, it may take a while before newly released hardware will work in Linux -- and some never will. So be sure there's driver support before you buy that brand-new video card.
If you're building a server system that will handle mail, you'll also want to build redundancy into the machine to avoid downtime (for example, by using RAID), as well as considering incremental backup solutions. You want to protect against not only hardware failure, but also user problems such as accidental deletions and mail difficulties. In a Windows Server environment, it's easy. You can just use Ontrack PowerControls as an Exchange server recovery tool to retrieve all messages since your last backup. But in a Linux environment, you have more choices; and your recovery solution will depend on which software you choose to serve your organization's mail.
Checking Linux Hardware Compatibility
The best places to check for Linux hardware compatibility are the various message boards, forums, newsgroups, and databases that have sprung up around the issue. Some of these are pretty much distribution-neutral, such as:
- Linux-Friendly Hardware
- Linux Printer Compatibility Database
- Linux Hardware Compatibility HOWTO
- comp.os.linux.hardware (Usenet newsgroup)
In addition, most commercial Linux distributions maintain their own hardware compatibility lists, which tend to be more up-to-date and more exhaustive than the general resources available above. Here are the hardware compatibility pages for a few of the more popular distributions:
Building a Home-Made Linux Computer
There's absolutely no difference in the physical assembly process when building a Linux computer. Once in a while, you may have to change a motherboard jumper or a BIOS setting, but even that's unusual these days.
Most motherboards come pre-set with defaults that will work with Windows, and there's usually no need to change anything to make them work with Linux. Once in a while, though, you'll come across a mobo that has a special setting for Linux/UNIX. If so, then use that setting.
In addition, most motherboards have a CMOS option for PNP (plug-and-pray, eh, I mean plug-and-play) versus non-PNP operating systems. If the motherboard has a lot of integrated components, you may find that the non-PNP setting works better with Linux as it allows the BIOS to configure the internal devices.
Once again, checking the resources linked above will help you determine which setting is best for your particular situation. Ideally, you want to simply assemble the machine, install the OS, and use it. Increasingly, I'm finding this to be the case with Linux. The last five or six Linux installations I did (using Ubuntu) went more smoothly than most of the Windows installations I've done -- and I've done thousands of 'em.
- Getting Started