Designing and Building a Homebuilt Linux Computer
Linux is the world's most popular server operating system. It's also becoming more popular as a desktop OS, so Linux hardware detection and support have improved quite a bit since the first version of this site was written.
Nowadays, if you walk into a computer parts store, buy a cart full 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 I wouldn't count on it just yet.
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 in very rare cases, 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 box. 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. Fortunately, most of them do nowadays. But it wouldn't hurt to ask on the Linux.org Forum or the forum for the Linux distribution you're thinking about installing.
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.
Checking Linux Hardware Compatibility
Most Linux distributions maintain either lists of supported hardware or forums where you can ask questions about hardware before you buy it. Some of the more useful resources are:
Red Hat Certified Hardware (Also relevant to Fedora, CentOS, etc.)
Debian Hardware Wiki (also relevant to Ubuntu, Mint, etc.)
OpenSUSE Hardware Portal
Arch Linux Hardware Wiki (also relevant to Manjaro)
Video Cards and Linux
The choice of a video card for a Linux box is important enough that I thought I should add a section just for that.
In the past, I always leaned toward Nvidia-based video cards for Linux machines. Nvidia has a long history of supporting the Linux community with official drivers, as well as being actively involved in Linux development. Open-source purists have always resented the fact that Nvidia drivers, while free-to-use, are not open-source (which I always considered akin to looking a gift horse in the mouth); but hey, no one was forcing them to use them if they didn't want to.
The problem right now, as I write this revision, is that Linux is in the process of transitioning from the X-org display server to one known as Wayland; and Nvidia isn't happy about the direction the project is heading because it would require them to expose some of their own source code to assure compatibility.
Now, my personal opinion is that the Linux community owes Nvidia some respect for all the support they've given us over the decades (man, time flies). But not everyone feels that way, including some of the Wayland developers. Some of them are open-source zealots who would rather spend a year reverse-engineering a driver than use an official one if it's closed-source.
For me, it's more a matter of what works best than one of religion. I have no problem using Nvidia's drivers. But others (maybe including you) feel differently.
In the end, this is what it comes down to: I still like Nvidia as a company and appreciate the support and drivers they've provided to the Linux community all these years. If I were building a Linux box today, I'd probably use an Nvidia card. But if you buy one, just be aware that there's a chance it will never be properly supported in Wayland. I think it's a small chance, but I do want you to know that it's possible.
Fortunately, AMD video cards, as a general rule, are also well-supported in Linux, so you do have that option. Some of them are quite good nowadays. And if you're building a box for general desktop use rather than gaming or other video-intensive use, all of the Intel processors with integrated graphics are well-supported in Linux. I'm actually amazed at how well my i5-based laptop does 3-D in Linux, to be honest. It wouldn't work well for intensive gaming, but it runs Extreme Tux Racer very well.
Finally, on Linux machines, the degree of support for GPU's varies with individual GPU's within a company's line, as well as with the Linux distribution (and to some extent, even the desktop environment). So you really have to do your due diligence to make sure that the exact card you're thinking about buying will work with the Linux distro and desktop environment that you're using. This will save you a lot of annoyance later on. (Don't ask me how I know.)
Printers for Linux
Many years ago, when I was new to Linux, I asked a supplier of mine what would be a good printer to use with a Linux box. His answer was "any HP printer." And you know what? He was right. In all these years, and with all the Linux boxes I've built, I've never come across an HP printer that didn't work perfectly, including HP network printers and network multifunction printers. I'm not saying they're not out there, but I've never met one.
My general experience has been that if I just sit around long enough, most desktop Linux machines will find and configure an HP printer on their own. I go to install and configure it, and it's there already. But HP also has a tool called HP Linux Imaging and Printing that provides Linux drivers for pretty much anything they make. They're another company that's supported Linux from the beginning, and I highly recommend their products for Linux users.