If you’ve heard of Linux, you’ve probably also heard the following comment (or something like it):

Linux won’t be ready for mainstream use until it “just works.”

Or maybe:

I wanted to like Linux, but after installing it my (insert hardware) and (insert hardware) didn’t work.

Some are even so elegant as to say it like this:

LINUX SUX IT DONT WORK ON MY AWSOME COMPUTER. WINDOWS RULZ!

All these arguments boil down to the same flawed perception: that getting hardware to work in a Linux environment is unreasonably difficult.

I would like to provide two examples - one, an analogy; the other, a personal experience - that help explain why Linux hardware support is much better than many people perceive.

The Analogy

Imagine, for a moment, that you have a car that’s several years old.  You like this car - the body’s in decent shape, the color is nice, it runs well - but you’re simply not getting the performance out of it that you’d like.  Rather than buy a whole new car, you make the reasonable decision to simply upgrade the engine.

So you do some shopping around, and eventually you stumble upon a website where someone is giving away brand new engines… for free.  The engine claims to be powerful (the article states that this type of engine is used on 80% of the world’s sports cars), reasonably easy to install and use, and you’re also allowed to modify the engine however you would like.  In return, the website simply asks you to donate some money to their cause if you can, and pass along word of what they’re offering.

It sounds too good to be true, but since they offer to send you an engine for free, you go for it.

While you wait for the engine to arrive, you go about stripping the current engine out of your car.  You take careful notes on the location of every hose, belt, and bolt, and by the time the new engine arrives, the car is ready for it.

With the help of a friend you drop the new engine into place and reattach all the critical parts.  After checking and double-checking to make sure you haven’t missed anything, you start up the car…and to your amazement, it actually starts!  After a couple final adjustments to get everything perfect, you close the hood and take your almost-new car for a ride.

PAUSE

I’ll admit - no analogy is perfect.  But I find this one both relevant and instructive.

As you’ve probably figured out, the car in this analogy represents a PC’s hardware, while the engine represents a PC’s operating system.

Like cars and engines, PC hardware and operating systems are theoretically interchangeable.  It might take a hacksaw and a welding iron, but you could theoretically get any internal combustion engine to run in almost any chassis.  Similarly, it might take some time and hacking, but you could theoretically get any OS to run on almost any PC hardware.

Unfortunately, some individuals mistakenly think that any OS should run on any hardware configuration without user intervention.  This is as foolish as thinking you could stick any engine in any car and - without any effort - have it magically work.  Mixing and matching parts that weren’t designed for each other is not a perfect science.  It will almost always take some tweaking to get everything working.

By and large, manufacturers assume the burden of ensuring that a stock engine works in its associated car.  You don’t typically buy a new car, take it home, then realize that the manufacturer has forgotten to connect three or four hoses.  Similarly, when you buy a PC, you can be reasonably sure that the PC vendor - Dell, HP, whoever - has ensured that the computer’s hardware and OS play together nicely.

To summarize:

When you purchase a PC pre-loaded with an operating system, it should always “just work”

Obviously a new computer with a pre-installed OS should be expected to “just work.”  If it doesn’t, it’s the fault of the PC vendor - not the hardware manufacturers or the OS.

Many zealots (on both sides of the aisle) fail to acknowledge this point.  Pro-Windows zealots wrongly assume that because they bought a PC with Windows on it and it “just worked,” Windows is a superior operating system.  This is a faulty correlation. It’s akin to saying “the stock tires that came with my car are superior because they just worked.”  Remember: stock parts should always “just work.”

Which leads to my next point.

In the example above, you did some homework before sticking a new engine into your car.  You carefully removed the old engine, taking note of where each belt, hose, and bolt went.  You probably made use of all of that information when installing the new engine.

Only a crazy person would take the stock engine out of a car, then drop in a new one and expect the car to “just work.”  Obviously, some hoses are going to need to be re-attached, some belts are going to need to be hooked up, etc.

Why should a computer be any different?

It is not reasonable to drop a new operating system onto a computer and expect it to “just work.”

I don’t care what you’ve heard about Windows or Linux - if you install a new operating system onto a computer for which it was not specifically designed - and by specifically, I mean “specific down to every single piece of hardware” - there is a chance you will need to perform some manual adjustments.  Sometimes you may get lucky and have it “just work.”  But most of the time, regardless of OS choice, you will need to tie up a couple loose ends.  Such is life.

Now I know what some of you are thinking - “yeah, but I installed (insert OS here) on my computer and it just worked.”  If that’s the case, consider yourself one of the lucky ones.  Very, very few people can install an OS onto randomly assembled hardware and have it work on the first try.

It’s unfortunate that so many people misunderstand this basic issue, and they broadly label the quality of a secondary operating system based on whether or not it “just works.” Aftermarket equipment - be it software or material goods - should always be installed by a professional, or by someone capable of “reattaching all the hoses and belts,” so-to-speak. If you choose to install a secondary operating system without a firm grasp of the technology behind it, any problems that arise are not really the operating system’s fault… they’re yours. (Don’t take this personally - the same applies if you try to replace your car’s engine with a new one, despite having no idea how an engine works.)

It is my personal opinion that when all aspects are considered, the overall operating system with best hardware support is Linux.  This is a fundamentally unfair generalization, since there are actually thousands of different Linux distributions, each one with its own strengths and weaknesses - but if we’re going to broadly label whole software ecosystems by the titles “Linux” and/or “Windows,” I think it’s safe to say that Linux comes out on top.

As you may have noticed from the link in the analogy above, Linux runs on almost 80% of the world’s supercomputers.  It also runs on an ever-growing number of servers.  Desktop Linux users number somewhere in the 15+ millions.  Some 90+% of the desktops and servers in Hollywood run on Linux.  Offshoots of Linux power cellphones, traffic signals, election machines, satellites, military equipment, medical equipment, particle accelerators, digital cameras, TVs, DVD players, mp3 players, and many government systems.  If you’re interested in reading a huge list of specific uses for Linux, check out the bottom of this link.

Impressive as this is, it unfortunately doesn’t apply to the everyday user.  After all, I’m not building my own particle accelerator or traffic signal.

So the real question for most users is - how well will Linux work for me?

And the answer is, of necessity, vague.  No one can say for certain how well Linux will work for you.  The only way to know is to try it.

One of the problems with attempting to predict how well an OS will work on a particular set of PC hardware is that there are more possible hardware combinations in a modern computer than there are atoms in the universe.  (That isn’t an exaggeration, btw.)  And that’s just for major hardware - processor, motherboard, RAM, hard drive, video card, sound card, monitor, keyboard, mouse.  When you start factoring in optional hardware (like any of a million possible USB devices), the list of possible computer configurations quickly approaches numbers difficult to quantify.

So in reality, it is impossible to guarantee that a given OS will work on any system other than ones for which it has been specifically designed.

I realize that an esoteric answer like that still doesn’t answer the core question of “will Linux work for me?” For that, let me try something else - sharing a personal experience.

A Random Experiment with Linux and Windows Hardware Support

This Christmas I picked up a refurbished HP Pavilion Media Center PC.  The specs are similar to this, including:

  • 2.8ghz AMD Athlon 64 X2 5600+
  • 2gb RAM (667mhz DDR2)
  • 500gb SATA hard drive, plus another 200gb SATA drive manually installed by me
  • NVidia GeForce 9400GT video card
  • Sound Blaster Audigy2 ZS sound card with recording hub (pulled from my old PC)
  • LightScribe DVD Burner
  • Memory card reader (one of those 9-in-1 or 10-in-1 things)
  • TV Tuner Card (Hauppauge 1600)
  • The usual set of ports (6xUSB, 2xFirewire)

In addition, I’d be tying the PC into an existing monitor (22” HP LCD), 5.1 surround speakers, Epson Stylus printer/scanner/copier, an off-brand graphics tablet, and a webcam.

In all honesty, I consider this to be a pretty nasty adventure for any OS.  That’s an eclectic mix of hardware ranging from almost brand-new parts (the video card came out August 2008) to relatively old parts (my sound card was purchased in 2002).

As for an OS, because the system was refurbished it came without a pre-installed OS.  I made the choice to install Ubuntu 8.10 to the 500gb drive and Windows XP on the 200gb drive.

Here’s how it all went down.

Ubuntu 8.10:

By and large, Ubuntu 8.10 worked shockingly well.  I had to manually configure only the following three pieces of hardware:

  • Hauppauge 1600 TV Tuner card (simple process using these instructions)
  • Epson printer/scanner/copier (my model is CX8400, to make it work you just have to select the CX7800 model - found that by a quick googling).
  • Graphics tablet (using this guide)

Windows XP:

Unfortunately, Windows XP was a different story.  Upon install my ethernet refused to work, which prevented me from using any automated means of updating drivers.

After some serious google-hunting on a separate laptop, I finally tracked down an NVidia installer that got my ethernet working (apparently that ASUS motherboard utilized an NVidia chipset).  With that fixed, I set about finding and installing drivers for the following devices:

  • NVidia GeForce 9400GT (video card worked, but to change any of the settings and enable 3D acceleration I had to download and install specific drivers)
  • TV Tuner Card (non-functional until I tracked down official Hauppauge drivers online; however, I don’t have any recording software, so the card is still technically useless).
  • Sound Blaster Audigy 2 ZS (sound worked, but to get surround sound I had to find the CD that came with the card and install specific drivers)
  • Epson Stylus printer (printing worked, but to access printer-specific settings I had to find the CD that came with the card and install specific drivers)
  • Graphics tablet (non-functional and drivers not available for download; fortunately, I had a Windows driver CD that came with the tablet)
  • Webcam (non-functional until I used my webcam installer CD).

After a lot of restarts (five, I think), I eventually got my XP install up and running.

What’s the Point of This Story

My final point is this: with some determination, you can get both Windows and Linux to run on almost any hardware.  If you have driver CDs for every piece hardware, Windows should be fairly trivial to install.  Linux is much more a function of googling, since very few hardware manufacturers include Linux drivers on their included CDs.

In my specific case, installing Ubuntu 8.10 was a much more pleasant experience than installing Windows XP.  Part of this is because Linux is specifically designed to be installed on random hardware.  Very few computers come pre-installed with Linux, and many hardware manufacturers don’t provide comprehensive Linux support. Linux has evolved to deal with this as elegantly as it can, and in many cases it is surprisingly successful at self-configuring new hardware.

Installing XP was ugly because XP was not designed to be dumped onto untested computers.  Microsoft goes to great lengths to ensure that hardware manufacturers comply with Windows hardware-compatibility requirements, as well as requiring PC vendors to ensure that pre-installed (or OEM) copies of Windows are properly configured.  XP has very few drivers pre-configured, since they rely on hardware manufacturers to provide install CDs with their hardware.  Since my refurbished machine came with no install CDs, tracking down the necessary drivers was a nightmare.

In Conclusion

Maybe this is your first time seeing an example where installing Windows was significantly harder than installing Linux (in the form of Ubuntu 8.10).  If you bought a computer with Windows pre-installed, chances are that it will work better “out of the box” than Linux will.  Don’t be surprised, and don’t fault Linux for that.  Besides - if you’re installing Linux solely for better hardware support, you may not know what you’re doing.

For this particular set of hardware, I found it well worth the effort to get Linux up and running, and I am indebted to the hard-working developers that provided me with an open-source operating system and accompanying software that helped this particular PC be much more enjoyable and productive to use.

Will Linux do the same for you?  Who knows! If you’re feeling adventurous, head to www.ubuntu.com (or any other Linux distro’s homepage) and give it a try.

Just remember the analogy from the start of this article: like replacing the engine in a car, you may have to do a bit of work to get Linux working just the way you like it, and you’ll definitely have a better experience if you go in prepared.

But for what it’s worth - if you’re willing to put in a little extra work, I think you’ll find Linux well worth the effort.