Linux is a clone of the Unix OS that has been popular in academia and many business environments for years. Formerly used exclusively on large mainframes, Unix and Linux can now run on small computers—which are actually far more powerful than the mainframes of just a few years ago. Because of its mainframe heritage, Unix (and hence also Linux) scales well to perform today’s demanding scientific, engineering, and network server tasks. Linux consists of a kernel, which is the core control software, and many libraries and utilities that rely upon the kernel to provide features with which users interact. The OS is available in many different distributions, which are bundlings of a specific kernel with specific support programs.
Most computers are not designed or sold with Linux in mind. This means that Linux doesn’t always run properly on them, or it may not take full advantage of the computer’s hardware. Therefore, if you need to buy or build a new computer, it’s important to understand what Linux needs with respect to hardware so that you can buy a computer with appropriate specifications.
Just as you should understand Linux’s hardware requirements, you need to know something about the Linux software world. When you are determining what operating system (OS) to install on a computer, one of the most critical questions you should ask yourself is whether the software you need is available on the OS in question. Locating Linux software and understanding its licensing terms are also important aspects of software requirements for Linux.
Understanding these fundamental hardware and software features will help you in every subsequent aspect of Linux configuration and use because they lay the groundwork for additional Linux layers. Many of your installation choices (discussed in Chapter 2, “Installing Linux”) depend upon your hardware, for instance, and many details of system configuration and administration (discussed throughout the rest of the book) rely upon your choice of Linux vendor.
If you’re building or buying a new computer, one of the first steps you must take is to lay out the system’s general hardware requirements the amount of RAM, the approximate
central processing unit (CPU) speed, the amount of disk space, and so on. These characteristics are determined in large part by the role or roles the computer will play. For instance, a workstation for a graphics designer will require a large monitor and good video card, but an Internet server needs neither. Once you’ve decided the general outline of the hardware requirements, you can evaluate your resource limitations (such as your budget) and arrive at more specific hardware selections specific brands and models for the individual components, or for a pre-built computer.
A workstation is a computer that is used primarily or exclusively from that computer’s own console (the keyboard and monitor attached directly to the computer). Workstations are sometimes also referred to as desktop computers, although some people apply the latter term to somewhat lowerperformance computers without network connections, reserving the term “workstation” for systems with network connections. Because they’re used by individuals, workstations typically require fairly good input/output devices a large display (typically 17-inch or larger), a high-quality keyboard, and a good 3-button mouse. (Linux, unlike Windows, uses all three buttons, so a 2-button mouse is suboptimal.) Workstations also frequently include audio hardware (a sound card, speakers, and sometimes a microphone) and high-capacity removable media drives (Zip or LS-120 drives, perhaps CD-R or CD-RW burners, and often a DVD-ROM drive). CPU speed, memory, and hard disk requirements vary from one application to another. A low-end workstation that’s to be used for simple tasks such as word processing can get by with less of each of these values than is available on new computers today. A high-end workstation that will be used for video rendering, heavy-duty scientific simulations, or the like may need the fastest CPU, the most RAM, and the biggest hard disk available. Likewise, low-end workstations are likely to have less cutting-edge network hardware than are high-end workstations, and the differing hard disk requirements dictate less in the way of backup hardware for the low-end workstation.
The word server can mean one of two things: a program that responds to network requests from other computers, or the computer on which the server program runs. When designing a computer, the latter is the appropriate definition. Servers usually have little or no need for user-oriented features like large monitors or sound cards. Most servers make heavy use of their hard disks, however, so large and high-performance disks are desirable in servers. For the same reason, Small Computer System Interface (SCSI) disks are preferred to Enhanced Integrated Device Electronics (EIDE) disks SCSI disks tend to perform better, particularly when multiple disks are present on a single computer. (This issue is discussed more later in the chapter, in the section entitled “Hard Disk Space.”) Small servers, such as those handling a few users in a small office, don’t need much in the way of CPU speed or RAM, but larger servers need more of these quantities, especially RAM. Linux automatically buffers disk accesses, meaning that Linux keeps recent disk accesses in memory, and reads more than it requested from disk. These practices mean that when subsequent requests come in, Linux can deliver them from memory, which is faster than going back to the disk to obtain the data. Thus, a server with lots of RAM can often outperform an otherwise similar server with only a modest amount of RAM. It’s important to realize that server needs fall along a continuum; a very low-demand Web site might not require a very powerful computer, but a very popular Web site might need an extraordinarily powerful system. There are also many other types of servers available, including Usenet news servers, database servers, time servers, and more. (News and database servers are particularly likely to require very large hard disks.)
Some Linux systems function as dedicated appliances as routers, print servers for just one or two printers, the OS in small robots, and so on. In some cases, as when the computer functions as a small router, Linux can enable recycling of old hardware that’s otherwise unusable. Dedicated applications like these often require little in the way of specialized hardware. Other times, the application demands very specialized hardware, such as custom motherboards or touch-panel input devices. Overall, it’s difficult to make sweeping generalizations concerning the needs of dedicated appliances. Sometimes, the intended use of the computer requires specialized hardware of one variety or another. Common examples include the following:
Video input
If the computer must digitize video signals, such as those from a television broadcast or a videotape, you will need a video input board. The Linux kernel includes drivers for several such products, and a variety of programs are available to handle such inputs. The Video4Linux project (http://roadrunner.swansea.linux.org.uk/v4l.shtml) supports these efforts.
Scientific data acquisition
Many scientific experiments require realtime data acquisition. This requires special timing capabilities, drivers for data acquisition hardware, and software. The Linux Lab Project (http://www.llp.fu-berlin.de) is a good starting point from which to locate appropriate information for such applications.
USB devices
The Universal Serial Bus (USB) is a multipurpose external hardware interface. It’s seeing increased use as an interface method for keyboards, mice, modems, scanners, digital cameras, printers, removablemedia drives, and other devices. Linux added USB support in the 2.2.18 and 2.4.x kernels. This support is good for some devices but weak or nonexistent for others. Check http://www.linux-usb.org to learn about support for specific devices. You’ll also have to be sure to use a distribution with USB support, or at least upgrade the kernel to include this support.