Three ways to recycle commodity hardware with Linux

Creating Linux appliances with spare parts

Turn garbage into gold

H. Peter Anvin, a Linux luminary, recently repurposed an older system for use as a file server. He chose Fedora as the operating system for its frequent security updates, its RPM-based package-management system, and its quantity of prepackaged software pertinent to servers. His system hosts 9TB of new hard disks in a redundant array of independent disks (RAID) 6 configuration. An older development machine that was sitting decommissioned under a desk is now performing a valuable task.

Even when it's not very old, retired computer hardware generally represents a problem. It's too old to support, generally too slow to keep up with the modern world, and not technically reliable—particularly if it is out of warranty. However, it is far too valuable to simply throw away. Many organizations (and homes) give older systems new lives by giving them away to schools or libraries, but too often, the recipients don't know what to do with those systems either, and the hardware ends up in a recycling plant. Not only is that a waste of resources, but sometimes, recycled computers end up in landfills or incinerators in so-called third-world countries, creating a new problem called e-waste (see Related topics for more information).

This article describes how to use the Linux operating system to repurpose an older but functional computer system, giving it a new life as a server, a media player, or a thin client.

Repurposing, step by step

The repurposing process appears on the surface to be much the same as any other Linux conversion process: Install Linux on the machine. That seems simple enough, particularly with modern distributions, but the devil is in the details. Which Linux, and which machine?

I recommend these five steps:

  1. Determine your project's requirements.

    A lot of excited system builders skip this step, but it is possibly the most important of the bunch. If you don't know what you want, it will be difficult to determine whether your work is finished. The section Determine project requirements below has guidelines for three projects.

  2. Assess your hardware's suitability.

    This step seems simple, and it is. Compare the project requirements to the hardware you have on hand. Assume at this point that you will be able to find suitable software. See Assess your hardware for hints as well as a checklist for the projects mentioned here.

  3. Determine appropriate software for your project.

    For me, at least, this is the fun part. For older desktop or laptop hardware, Linux is nearly always the answer, as hardware driver support is maintained by the many, many people out there actually using hardware identical to yours. Do some research on which distribution suits your project best (see Determine an appropriate Linux distribution below for guidelines). You may need to track down drivers for some hardware.

  4. Hunt and gather software, install it, and configure it.

    Get your project up and running. Installing Linux is usually as easy as downloading a CD image, burning it to a disk, and booting from it on your project system. Follow the installer's instructions, see Hunt, gather, and implement for some reminders, and away you go.

  5. Maintain your system.

    Backups are important, of course. Particularly with older systems, though, keep an eye and an ear out for hardware trouble.

Determine project requirements

First, pick a project and define it. Your requirements don't have to match those listed below; the point is that you think about them in terms that allow you to judge available hardware.

File server project requirements

A file server project typically has the following requirements:

  • The system needs to be reliable but not necessarily fast.
  • A fairly large (and possibly new) hard disk is important, as this system may serve as your backup server. A RAID might be well advised, thus the motherboard would need support for it.
  • Networking support is required.
  • Graphics and audio support are not necessary, as this system may not even have a monitor or speakers.
  • Virtual Network Computing (VNC) support is required for remote maintenance, especially if the system has no monitor or keyboard.

Media player project requirements

A media player could be a headless jukebox (that is, have no monitor or keyboard) holding all your music, a home theater with 7.1 audio and a digital projector, or a simple bedroom movie player. (Older laptops make great bedroom media players.) This section provides some ideas on how to think about requirements.

  • The system needs to be fast enough to play video.
  • The hard disk should be large enough to hold some quantity of media.
  • If the system will play video, the graphics interface must support your monitor or television. This could be anything from S-video to HDMI, depending on what the monitor requires. Also check the graphics card's supported resolutions.
  • The audio interface must support your amplifier and speaker setup. If this is a simple bedroom system with headphones or cheap computer speakers, you may opt to use the motherboard's stock headphone plug or the laptop's built-in speakers. For a home theater, the system should have a good sound card (luckily, they are not usually expensive).
  • Networking support is required for downloading but not for playback.
  • A CD/DVD drive is required to play CDs and/or DVDs.
  • For remote control, a remote and an infrared interface is necessary.

Thin client project requirements

Two types of systems are generally referred to as thin clients:

  • Dedicated thin clients. These clients perform no local processing but connect to a larger server, which provides desktop services as well as applications.
  • Stand-alone thin clients. These machines are fully operational systems used as thin clients. Desktop services are provided locally, but applications (and usually data, as well) are hosted elsewhere. These are far more common currently, as even mobile phones have the ability to present a desktop environment and multiple applications. This is the standard arrangement for cloud computing, where local systems use larger remote servers for processing. (See Related topics for more information.)

System requirements will depend somewhat on the type of thin client used. Very old and slow systems should be used as dedicated thin clients, while medium-grade systems can go either way. Some small and light Linux distributions, even very old, slow, and/or resource-constrained systems can run acceptably fast as stand-alone clients.

  • The system must be fast enough to drive graphics and, for stand-alone clients, to run a minimal operating system and window manager.
  • Networking is required.
  • For dedicated thin clients, a server on the local network is required. Setting up such a server is beyond the scope of this article, but there are many to choose from, Linux and otherwise.
  • For stand-alone thin clients, a server on the local network is not required but can be used. The system can also be used as a cloud computing system, accessing information through a Web browser. Hotel and convention kiosks are often set up in this fashion.
  • A hard disk is not required but can be used to host the operating system.

Assess your hardware

Next, look with a jaundiced eye at the system you are thinking about repurposing. It's true that some systems are beyond repurposing. Make sure the system has no failing components, particularly those like the motherboard that might necessitate retiring the entire machine. See Identify unsuitable candidates if you have doubts.

The most useful software tool for diagnosing (and often fixing) system problems is the Ultimate Boot CD, which is happily also based on Linux. This one CD contains a wide variety of hard disk and network tools available at no cost—many of them provided by hardware manufacturers—all in one place and easily accessible from a fast-booting front end. See Related topics for a link.

Make sure the system has all the components you need for your project. Table 1 shows general guidelines for each project. Don't let these guidelines limit your imagination, though. For example, if you want your file server to function as both a router and a firewall, you will likely need at least two network adapters: one for the local area network (LAN) and one for the wide area network (WAN).

Note that if your project does not require a hard disk, as is the case for many thin clients, it must boot via CD, USB, or Preboot eXecution Environment (PXE—that is, network boot). Obviously, the boot method must also be supported by hardware, which means a CD/ROM drive to boot from CD, a USB key and motherboard support to boot via USB, and a local system server to boot via PXE. You can usually determine supported boot arrangements by looking in the system's basic input/output system (BIOS) under boot settings or checking its manual.

Note also that if your project requires fancy graphics or audio, hardware can be a big issue. Historically, NVIDIA graphics cards have been much better supported by manufacturers than ATI cards, although this is slowly changing. For audio, the default Linux kernel sound driver supports a wide variety of devices, but it pays to research your device, particularly if it is built-in on the motherboard.

Finally, if your project system is pre-built by a manufacturer, search the Internet with the system's part number along with the keyword linux. For example, to look for information on running Linux on a Lenovo ThinkPad T43, try a search for thinkpad t43 linux. You will find loads of technical data as well as anecdotal advice on getting Linux to work on that system specifically.

Determine an appropriate Linux distribution

Possibly the best method for researching an appropriate Linux distribution is trial and error, as distros are easy to download and try on LiveCDs or USB flash drives (UFDs). Your primary research, though, should start with DistroWatch, a Web site that collects information and real-world stories about each distribution (see Related topics for a link). The notes below should be considered guidelines rather than hard recommendations; the best course is research and experiment.

File and print server

In a server configuration, the most important operating system consideration is ease of maintenance. Once you get it set up, you want it to stay set up without your intervention. The distribution should have built-in support for network service, particularly interfacing with other systems (read: Windows®), and a large collection of drivers for operating printers, network cards, and other hardware.

Distributions that meet these requirements include Ubuntu Server Edition, CentOS, Fedora, and OpenSUSE. From the command line, the most obvious difference among these is package management, as Ubuntu and OpenSUSE use aptitude, while Fedora and CentOS use RPM-based tools. If your server has specific non-standard package requirements, it makes sense to look through the supported package list for each distribution. However, practically any modern desktop or server-edition Linux distribution comes with network support, Samba support for sharing files with other systems, lots of hardware drivers, and advanced package management, and can thus function as a perfectly sound server.

Media player project requirements

For a media player, the most important operating system consideration is hardware support. Find out precisely what audio and video hardware you have, and search on the Internet for it with the keyword linux to see and learn from the experience of others.

Then, think about applications. Most distributions come with media players of some sort. There are many applications to choose from, depending upon whether you want audio, video, photograph slide shows, TV tuning, or some combination of these. One excellent platform for tying all of these together is MythTV, which bills itself as a free digital video recorder (DVR), although in reality it does much more and has an active developer community. MythTV is supported on most major distributions but really shines with Fedora and Ubuntu. There are even versions of these distros that come with MythTV prepackaged, conveniently called MythDora and Mythbuntu, respectively. OpenSUSE is also a popular choice.

Finally, Linux is rather famous for not supporting the playback of DVDs. This is true only in the sense that most Linux distributions require the user to perform an extra step after installation in order to enable DVD playback. There is a complex legal reason for this, but the simple version is that DVD codecs are proprietary, while Linux itself has a free, open license. The extra step is quite simple and usually involves installing proprietary codecs and a library.

Thin client project requirements

Thin clients are generally constrained in resources. Even when they are not, the intention is for the client's operating system to disappear—or at least be unobtrusive and fast. An ideal operating system for dedicated thin clients (those that depend on the server for all functions, including desktop services) would support standard thin client communications protocols, particularly Citrix and RDP (Windows Terminal Services). Many small, lightweight Linux distributions fit the bill, including several designed specifically for thin clients.

Thinstation is one such distribution. Thinstation supports many connectivity protocols currently used for thin clients. It can be used for both dedicated thin clients and stand-alone systems. Puppy Linux is another possibility. Puppy is a very small distribution that uses Xfce as its window manager. Puppy is best suited for stand-alone systems used as thin clients. See Related topics for links to these distros.

Hunt, gather, and implement

Hunting and gathering resources consumed most of our ancestors' spare time. For these projects, though, you simply need to download the Linux distribution you have chosen, boot it on your project system, and configure it with any extra packages or support needed for your specific project. (It probably goes without saying, but all of these projects assume that the project system has been thoroughly cleansed and its data backed up elsewhere.)

  1. Download the latest version of your target distribution, and burn it to a CD.
  2. Insert the CD, and boot the system.

    You may need to change the BIOS settings in order to boot from CD. Follow the automated installation instructions.

  3. After the system reboots and you complete installation, set the system up to boot the way you want.

    For servers, you probably simply want to boot from an available hard drive. For media players or thin clients, however, you could boot from a CD, from a UFD, or over the network.

  4. Set up the system and applications to meet the requirements you set out earlier.

    Look through the system settings. Keep in mind all the project requirements you worked out earlier, and set the system up to do what you want. For example, servers should not depend on someone logging on to the console to start sharing files. A household media player should boot directly to the MythTV main screen (or whatever application you choose). A thin client used by multiple people should probably boot to a login screen.

  5. For any internal disks that you want to be publicly available, make sure they are shared using Samba.

    For more details, consult the Samba documentation as well as other articles on developerWorks that discuss Linux file sharing. Printers can be shared through Samba using CUPS. Make sure each shared printer is installed, then share it using Samba tools (see Related topics for a tutorial on Linux printing).

  6. For headless systems, be sure to install and configure VNC and/or sshd so that you can log in to the system remotely. Note that some systems, notably Ubuntu, call this Remote Desktop.

Identify unsuitable candidates

Be aware that not all project candidates will make the grade. If you find that a vital component is questionable, the system may be more appropriate for a different project, for a parts machine, or simply for putting out to pasture—keeping in mind, of course, the important issues surrounding e-waste.

Remember that hard disks, fans, and power supplies are the parts in your computer that physically move, making them the most likely to require replacement. Luckily, all are relatively inexpensive, so identifying them as a problem may not mean the end of your project. Memory is a bit more expensive, but even so, it can be replaced and even upgraded without trashing the whole project.

However, if the processor itself or the motherboard is bad, the system may not be worth recycling. Older motherboards can be difficult to find, and once you start upgrading the motherboard, you will invariably need a new processor to fit it, different memory modules, a new graphics card, maybe a new hard disk...and eventually your system is not so much recycled as replaced, part for part, like the carpenter's favorite old hammer that eventually got three new handles and two new heads.


Rescuing e-waste and putting it to good use is a fantastic way to save some money, to become more conversant with the systems on which you depend, and most importantly, to help prevent toxic materials and unrealized potential from ending up in the landfill or incinerator. The versatility of Linux makes the process fun. Join us in the Green computing group on My developerWorks and let us know how your project goes.

Downloadable resources

Related topics

ArticleTitle=Three ways to recycle commodity hardware with Linux