^Once you've decided on the approximate specifications for a computer and you've set a budget, you can begin deciding on exact specifications. If you possess the necessary knowledge, I recommend indicating manufacturer and model numbers for every component, along with one or two backups for each. (RAM, however, is close to being a commodity; few people shop for RAM by brand, although the type of RAM is important.) You can then take this list to a store and compare it to the components included in particular systems, or you can deliver your list to a custom-build shop to obtain a quote. If you don't have enough in-depth knowledge of specific components, you can omit the make and model numbers for some components, such as the hard disk, CD-ROM drive, monitor, and motherboard. You should definitely research Linux compatibility with video cards, network cards, SCSI host adapters (if you decide to use SCSI components), and sound cards (if the computer is to be so equipped). These components can cause problems for Linux, so unless you buy from a shop that's experienced in building Linux systems, a little research now can save you a lot of aggravation later when you try to get a component working in Linux.
Computers are built from several components that must interact with each other in highly controlled ways. If a single component misbehaves or if the interactions go awry, the computer as a whole will malfunction in subtle or obvious ways. Major components in computers include the following:
Motherboard The motherboard (also sometimes called the mainboard) holds the CPU, RAM, and plug-in cards. It contains circuitry that "glues" all these components together. The motherboard determines what type of memory and CPU the computer can hold. It also includes the BIOS, which controls the boot process, and it usually has built-in support for hard disks, floppy disks, serial ports, and other common hardware.
CPU The CPU is the computer's brain—it performs most of the computations that result in a system's ability to crunch numbers in a spreadsheet, lay out text in a word processor, transform PostScript to printer-specific formats for a print queue, and so on. To be sure, some computations are performed by other components, such as some video computations by a video card, but the CPU does the bulk of the computational work.
Memory Computers hold various types of memory; the most common general classes of these are random access memory (RAM) and read-only memory (ROM). There are several varieties of each of these. Memory holds data, which can include Linux software and the data upon which that software operates. Memory varies in access speed and capacity.
Disk storage Disk storage, like memory, is used to retain data. Disk storage is slower than memory, but usually higher in capacity. Typically, Linux itself resides on disk storage, and when the system boots, parts of Linux are loaded into RAM. In addition to the common hard disks, there are lower-capacity removable disks, CD-ROMs, and so on. Disks are controlled through EIDE or SCSI circuitry on the motherboard or separate cards. As a general rule, Linux doesn't need specific drivers for disks, but Linux does need drivers for the controller.
Video hardware Video hardware includes the video card and the monitor. The video card may or may not literally be a separate card; sometimes it's built into the motherboard. Collectively, video hardware provides the primary means for a computer to communicate with its user, but Linux has the ability to do so through other computers' video hardware. Linux's video support is provided in two ways: through standard text-mode features in the kernel that work with just about any video card; and through drivers in XFree86, Linux's GUI package, that work with most cards, but not absolutely all of them.
Input devices The keyboard and mouse allow you to give commands to the computer. These devices are well standardized, although there are a few variants of each type. Linux requires no unusual drivers for most common keyboards and mice (including trackballs and similar mouse alternatives), but if you use USB devices, you may need to use a recent kernel—2.2.18 or 2.4.0 or later.
Network devices In most business settings, network hardware consists of an Ethernet card or a card for a similar type of computer network. Such networks link several computers together over a few tens or hundreds of feet, and they can interface to larger networks. Even many homes now use such a network. It's also possible to link computers via modems, which use telephone lines to create a low-speed network over potentially thousands of miles. These devices are usually quiescent until late in the boot process, when Linux may launch programs to begin network interactions. There are ways to boot a computer via network connections, though.
Audio hardware Many workstations include audio hardware, which lets the system create sounds and digitize sounds using microphones or other audio input devices. These aren't critical to basic system functioning, though; Linux will boot quite well without a sound card.
To understand how these components interact, consider Figure 1.1, which shows a simplified diagram of the relationship between various system components. Components are tied together with lines that correspond to traces on a circuit board, chips on a circuit board, and physical cables. These are known as busses, and they carry data between components. Some busses are contained within the motherboard, but others are not. Components on a single bus can often communicate directly with one another, but components on different busses require some form of mediation, such as from the CPU. (Although not shown in Figure 1.1, there are lines of communication between the memory and PCI busses that don't directly involve the CPU.) A lot of what a computer does is coordinate the transfer of data between components on different busses. For instance, to run a program, data must be transferred from a hard disk to memory, and from there to the CPU. The CPU then operates on data in memory, and may transfer some of it to the video card. Busses may vary in speed (generally measured in megahertz, MHz) and width (generally measured in bits). Faster and wider busses are better than slower and narrower ones.
FIGURE 1.1 A computer is a collection of individual components that connect together in various ways.
CPU Video card
Figure 1.1 is very simplified. For instance, the link between the CPU and RAM passes through the motherboard's chipset and various types of cache, as described briefly in the upcoming section, "RAM."
The next few sections examine several critical system components in more detail.
Linux was originally developed for Intel's popular 80x86 (or x86 for short) line of CPUs. In particular, a 386 was the original development platform. (Earlier CPUs in the line lack features required by Linux.) Linux also works on subsequent CPUs, including the 486, Pentium, Pentium MMX, Pentium Pro, Pentium II, Pentium III, Pentium 4, and Celeron.
In addition to working on Intel-brand CPUs, x86 versions of Linux also work on competitors' x86-compatible chips. Today, the most important of these are the AMD K6 series, Athlon, and Duron. VIA also sells a line of CPUs originally developed by Cyrix and IDT, but in 2001, these lag substantially behind the offerings from Intel and AMD in speed. A few other companies have sold x86-compatible CPUs in the past, but these companies have failed or been consumed by others. (IBM and some other firms sell Cyrix or AMD designs under their own names, sometimes as part of a package to upgrade an existing motherboard beyond its originally-designed maximum CPU speed.)
As a general rule, Linux has no problems with CPUs from any of the x86 CPU manufacturers. When a new CPU is introduced, Linux distributions occasionally have problems booting and installing on it, but such problems are usually fixed quickly.
In addition to x86 CPUs, Linux runs on many other CPUs, including the Apple/IBM/Motorola PowerPC (PPC), Compaq's (formerly DEC's) Alpha, and the SPARC CPU in Sun workstations. Linux is most mature on x86 hardware, and that hardware tends to be less expensive than hardware for other architectures, so it's generally best to buy x86 hardware for Linux.
The best CPUs of some non-x86 lines sometimes perform slightly better than the best x86 CPUs, particularly in floating-point math, so you might favor alternative architectures for these reasons. You might also want to dual-boot between Linux and an OS that's available for some other architecture, such as MacOS.
To date, x86 systems use 32-bit internal registers, although Pentium systems and above have 64-bit links to memory. Some non-x86 systems use 64bit internal registers, and both Intel and AMD are developing 64-bit variants of the x86 architecture. The Intel variant is known as IA-64 and has been implemented in Intel's Itanium CPU. IA-64 works best with code that has been specially designed for the IA-64 architecture. The Linux kernel works on IA-64, and some IA-64 Linux distributions are available. AMD is developing a different 64-bit version of the x86 architecture, known as x86-64. The code name for AMD's 64-bit CPU is Hammer, and the company hopes to release this CPU by the end of 2001.
When comparing CPU performance, most people look at the chips' speeds in megahertz (MHz) or gigahertz (GHz; 1GHz is 1,000MHz). This measure is useful when comparing CPUs of the same type; for instance, a 750MHz Athlon is slower than a 900MHz Athlon. Comparing across CPU models is trickier, though, because one model may be able to do more in a single CPU cycle than another can. What's worse, this comparison may differ according to the nature of the computation. For instance, in general, x86 CPUs have a reputation for poor floating-point math performance, although they've been improving on this measure in recent years. Thus, an Intel CPU might be the equal of an Alpha in most tasks, but the Alpha might have a substantial advantage in applications that require floating-point math, such as ray tracing and certain scientific applications. When comparing different CPUs (for instance, Pentium 4 to Athlon), you should look at a measure such as MIPS (millions of instructions per second) or a benchmark test that's relevant to your intended application. (The Linux kernel uses a measure called Bogo-MIPS as a calibration loop when it boots, but this is not a valid measure of CPU performance; it's used only to calibrate some internal timing loops.) The best measure is how quickly the software you use runs on both CPUs.
CPUs plug into specific motherboards, which are the main (and sometimes the only) major circuit board in a computer. The motherboard contains a chipset, which implements major functions such as an EIDE controller, an interface between the CPU and memory, an interface to the keyboard, and so on. Linux works with most motherboards, although on occasion, Linux doesn't support all of a motherboard's features. For instance, a motherboard may include an integrated video or audio chipset for which Linux drivers are immature or non-existent. The key consideration in choosing a motherboard is that it is compatible with the CPU you buy—both its model and its speed. If you buy a preassembled system, this won't be a concern.
RAM comes in several forms, the most common of which in 2001 is the dual inline memory module (DIMM). Older motherboards and some other components use the single inline memory module (SIMM) format, which comes in both 30-pin and 72-pin varieties. Figure 1.2 shows a DIMM and a 72-pin SIMM. A few motherboards use RDRAM inline memory modules (RIMMs), which physically resemble DIMMs, but use a special type of RAM known as RAMbus dynamic RAM (RDRAM).
Motherboards host sockets for particular types of memory—30-pin SIMM sockets in many 486 and older motherboards, 72-pin SIMM sockets in some 486- and Pentium-class motherboards, DIMM sockets in some Pentium-class and later motherboards, and RIMM sockets in some Pentium II and later motherboards. Depending upon the module and CPU type, you may need to add modules singly, in pairs, or in groups of four. Pentium and later systems take 72-pin SIMMs in pairs and DIMMs or RIMMs singly.
FIGURE 1.2 Currently, DIMMs (top) are used in many computers; SIMMs (bottom) are used in older computers and some peripherals.
FIGURE 1.2 Currently, DIMMs (top) are used in many computers; SIMMs (bottom) are used in older computers and some peripherals.
In addition to differences in physical interfaces, RAM varies in its electronic characteristics. RAM today is largely derived from dynamic RAM (DRAM), which has spawned many improved variants, such as fast page mode (FPM) DRAM, extended data out (EDO) DRAM, synchronous DRAM (SDRAM), double data rate (DDR) SDRAM, and RDRAM. Most motherboards accept just one or two types of RAM, and with the exception of RDRAM and RIMMs, the physical format of the memory does not clearly indicate the RAM's electronic type. In 2001, most motherboards accept some combination of SDRAM, DDR SDRAM, or RDRAM, and possibly one or two lesser varieties. DDR SDRAM and RDRAM are the speed champions today. Each has its adherents. DDR SDRAM uses fairly conventional improvements to regular DRAM, delivering fast memory access by using a wide (64-bit) and moderately fast (66-133 MHz) bus. RDRAM uses a more unusual design in which the RIMM uses a narrow (16-bit) but unusually fast (800 MHz) bus externally and a separate bus within the RIMM that uses a more conventional configuration.
RAM also varies in how well it copes with errors. Computer memory is composed of individual bits, which are binary (base 2) numbers—each digit is either 1 or 0. A byte is composed of eight bits. If a single bit changes its value, say because of a cosmic ray hitting the memory, the data becomes corrupt. This can cause subtle or extreme errors in computations or it can result in other data being corrupted. Some memory modules incorporate a ninth bit in each byte as an error-detection bit. This bit is encoded to indicate whether an even or odd number of bits in the other eight bits in the byte are set. If an error occurs, the motherboard's memory controller can detect this fact. Unfortunately, the usual result is a system crash, the idea being that it's better to crash the computer than to propagate bad data.
A more sophisticated approach is error correction. Like the error detection process described above, error correction also requires one extra bit per byte (or, more precisely, eight extra bits for every 64 bits in a Pentium-class or above system). In this case, though, a motherboard that supports error correction can correct 98 percent of the errors that occur, resulting in no disruption to the computer's operation. This is clearly a desirable characteristic, particularly in mission-critical systems such as important servers.
All of these characteristics apply to main memory, which, as you might imagine, is the main type of memory in a computer. Motherboards or CPUs also support another type of memory, though—cache memory. A computer has much less cache memory than main memory (typically under 1MB), but the cache memory is much faster. The system stores frequently used memory in the cache, which results in a substantial performance increase. Typically, two caches exist. The first, known as the L1 cache, resides in the main part of the CPU and is a few kilobytes in size. On Pentium-class and earlier systems, the second cache, known as L2, is on the motherboard and can sometimes be upgraded. On Pentium Pro, Athlon, and later systems, the L2 cache is on the CPU package, but it's not part of the same chip as the CPU. A few motherboards that take CPUs with an on-board L2 cache also provide a cache on the motherboard. In this configuration, the motherboard's cache is known as the L3 cache.
Linux itself is unconcerned with these details. To Linux, memory is memory, and the OS doesn't particularly care about what physical or electronic form the memory takes or whether it supports any form of error detection or correction. All these details are handled by the motherboard, which is why it's so important that your memory match the motherboard's requirements.
When upgrading a computer's memory, try to buy from a retailer that has a memory cross-reference tool. Such a tool may be a Web-based form or a printed book. You look up or enter your motherboard or computer model and find a specific model of memory that's compatible with your computer. If such a tool is unavailable, check your motherboard's manual for detailed specifications concerning the types of memory it accepts, and use those specifications when shopping.
The great divide in hard disks is between EIDE and SCSI devices. Both of these busses come in a variety of speeds, ranging from less than 10MBps to 160MBps, with higher speeds on the way. In order to achieve a given speed, both the hard disk and its interface must support the same speed. For instance, using an old 10MBps Fast SCSI drive with an 80MBps Ultra2 Wide SCSI host adapter will yield only 10MBps speeds, not 80MBps speeds.
It's important to distinguish between the speed of the interface and the speed of the device. Manufacturers typically emphasize the speed of the interface, but the mechanical device usually can't support these speeds. A hard disk might have an 80MBps Ultra2 Wide SCSI interface but be capable of only 35MBps sustained transfer rates. Manufacturers express the device's true maximum speed as an internal transfer rate, as opposed to the external transfer rate (of the interface). To further confuse matters, many manufacturers give the internal transfer rate in megabits per second (Mbps), but the external rate in megabytes per second (MBps). If you fail to do the appropriate conversion (dividing or multiplying by 8), you'll erroneously believe that the interface is the bottleneck in data transfers to and from the device. Disks can transfer data at their external transfer rate only when they've previously stored data from the disk in their internal caches. For this reason, external speeds substantially higher than internal speeds can produce modest speed benefits, and disks with large caches are preferable to those with small caches.
As a general rule, SCSI devices are preferred in computers in which disk performance is important. There are several reasons for this:
■ Depending upon the variety of SCSI, each SCSI host adapter can support 7-15 devices on one hardware interrupt. (There are only 15 interrupts available in the x86 architecture, and many are reserved for critical hardware like the keyboard.) EIDE, by contrast, supports just two devices per cable (and hence per interrupt), although most motherboards include support for two chains (using two interrupts), for a total of four devices.
■ SCSI devices multitask better than do EIDE devices. Given sufficient capacity on the SCSI host adapter, multiple SCSI devices can be engaged in data transfers at full speed. EIDE, by contrast, dedicates its full capacity to one device per chain, even if that device can't use the EIDE controller's full capacity.
■ Hard disk manufacturers tend to release their fastest and highest-capacity drives in SCSI format. EIDE drives tend to be slower and smaller.
These advantages are substantial, but for many situations, they're overwhelmed by one advantage of EIDE: It's less expensive. As just mentioned, modern x86 motherboards ship with support for two EIDE chains, so there's no need to buy an EIDE controller. EIDE hard disks are also typically less expensive than SCSI devices of the same capacity, although the EIDE drives are often slower.
On the whole, SCSI is worthwhile when disk performance is important or when you need to support a large number of storage devices (including CD-ROM, DVD-ROM, removable disk, and tape drives). For most low-end and even mid-range workstations, though, EIDE's lower cost makes it appealing, and EIDE performance is adequate for many such systems.
Fortunately, Linux's support for both EIDE and SCSI adapters is excellent. Most EIDE controllers can be run in an old-style (and slow) mode using generic drivers, but faster speeds often require explicit driver support. Therefore, you may want to check on Linux's EIDE drivers for your motherboard or EIDE controller. There is no generic SCSI host adapter support, so you must have support for your specific SCSI host adapter.
Once you configure Linux to work with an EIDE controller or a SCSI host adapter, you don't need to worry about support for specific models of disk. (If you recompile your kernel, you need to explicitly include support for hard disks or any other devices attached to your adapter, but this support is present by default in all major Linux distributions.) You can purchase hard disks and other storage devices on the basis of capacity, speed, and the reputation for quality of a manufacturer or model.
Hard disks consist of spinning platters with read/write heads reading or writing data from those platters as the platters move under the heads. You'll usually see ads that list the rotational velocity of platters, such as 7,200 revolutions per minute (rpm); and the latency or seek time, such as 9 milliseconds (ms). A faster rotational velocity translates into data passing under the heads faster. The latency is the time it takes to move a head to a new position from the center of the disk, so a lower latency is better than a higher one. Unfortunately, these two figures aren't the only important ones in determining the speed of a hard disk. The data density—how much data can be packed into a given amount of space—interacts with the rotational velocity to determine disk speed. A 7,200rpm disk might actually be faster than a
10,000rpm disk, if the former has a substantially higher data density. For this reason, you should look for the actual transfer rates, expressed in MBps or Mbps.
The data transfer rate varies between inner and outer tracks—outer tracks contain more data than inner tracks do, so outer tracks produce higher transfer rates.
Ethernet is the most common type of network in 2001. There are several different varieties of Ethernet, including 10Base-2 and 10Base-5 (which use thin and thick coaxial cabling, respectively); 10Base-T, 100Base-T, and 1000Base-T (which use twisted-pair cabling similar to telephone wires); and 1000Base-SX (which uses fiber-optic cabling). In any of these cases, the first number (10, 100, or 1000) represents the maximum speed of the network, in Mbps. Of these classes of Ethernet, 100Base-T is currently the most popular choice for new installations.
Most 100Base-T network cards also support 10Base-T speeds. This fact can help you migrate a network from 10Base-T to 100Base-T; you can install dual-speed cards in new systems and eventually replace older 10Base-T hardware with dual-speed hardware to upgrade the entire network. Similarly, many 1000Base-T cards also support 100Base-T and even 10Base-T speeds.
Linux's support for Ethernet cards is, on the whole, excellent. Linux drivers are written for particular chipsets, rather than specific models of network card. Therefore, the driver names often bear no resemblance to the name of the card you've bought, and you may use the same driver for boards purchased from different manufacturers. Fortunately, most distributions do a good job of auto-detecting the appropriate chipset during installation, so you probably won't have to deal with this issue if the card is installed when you install Linux. Chapter 8 covers adding new hardware, should you need to add a network card after the fact.
If you're faced with the choice, purchase a Peripheral Component Interconnect (PCI) card rather than an Industry Standard Architecture (ISA) card. PCI cards tend to be easier to configure, and they support higher transfer rates. The ISA bus tops out at a theoretical maximum speed of 64Mbps— less than that of 100Base-T Ethernet. A 32-bit PCI card has a theoretical maximum speed of 1056Mbps, which is barely enough for gigabit Ethernet.
In practice, PCI can't handle this full speed because the needs of other devices and deviations from theoretical maximum performance will degrade performance. (A rare 64-bit PCI variant is better able to sustain full gigabit Ethernet speeds.)
Linux supports networking standards other than Ethernet, but these devices are less well supported overall. Linux includes support for some Token Ring, Fiber Distributed Data Interface (FDDI), LocalTalk, Fibre Channel, and wireless products, among others. If your existing network uses one of these technologies, you should carefully research Linux's support for specific network cards before buying one.
Networking hardware outside of the computer doesn't require Linux-specific drivers. Network cables, hubs, switches, routers, and so on are all OS-independent. They also generally work well with each other no matter what their brands, although brand-to-brand incompatibilities occasionally crop up.
One partial exception to the rule of needing no specific Linux support is in the case of network-capable printers. If you buy a printer with a network interface, you must still have appropriate Linux printer drivers to use the printer, as described in Chapter 8. Fortunately, network-capable printers usually understand PostScript, which is ideal from a Linux point of view.
Linux works in text mode with just about any video card available for x86 systems. This means you can log in, type commands, use text-based utilities, and so on. Such operation is probably adequate for a system intended to function as a server, so selection of a video card for a server need not occupy too much of your time. Workstations, though, usually operate in GUI mode, which means they run XFree86 or a commercial X Window System (X for short) server.
Unlike most other drivers, the drivers necessary to operate a video card in the bitmapped graphics modes used by X do not reside in the kernel; they're part of the X server. Therefore, you should research the compatibility of a video card with XFree86 (http://www.xfree86.org) or the commercial X servers, Accelerated-X (http://www.xig.com) and Metro-X (http:// www.metrolink.com). Because XFree86 ships with all major Linux distributions, it's best to use a board it supports. As a general rule of thumb, it's best to avoid the most recent video cards because drivers for XFree86 tend to lag a few months behind the release of the hardware. A few manufacturers do provide XFree86 servers for their products, though, and the commercial X servers sometimes introduce drivers more rapidly than does the XFree86 team.
The Linux kernel is beginning to acquire a number of video drivers, known as frame buffer drivers. XFree86 includes a driver to interface to these kernellevel drivers. This approach is particularly common outside of the x86 world.
One important question when deciding on a video card is how much memory it should contain. The video card uses on-board memory to store a copy of the image displayed on the screen. Because of this, the video card must have enough memory to hold this image. The formula for determining this value is
In this equation, R is the RAM in megabytes, x and y are the width and height of the screen, respectively, and b is the color depth in bits (typically 8, 16, 24, or 32). For instance, to support a 1024 x 768 display at 16-bit color depth requires 1.5MB of RAM.
Most video cards available in 2001 have at least 8MB of RAM, which is more than enough to handle a 1600 x 1200 display with a 32-bit color depth—a very high resolution and color depth. Cards with more memory than this typically use it in conjunction with 3D effects processors, which are useful in games and certain types of 3D rendering packages. 3D acceleration is still rare in Linux, and few Linux programs take advantage of these effects. If you need them, you should research 3D support carefully before settling on a product to buy.
Some hardware is so well standardized that there's no reason to give it much thought for Linux compatibility. The following are included in this category:
Cases Computer cases are hunks of plastic and metal shaped to hold other components. Usually, they also include power supplies, fans, and a few wires. Cases do vary in quality—check for rough edges, a good fit, and easy access. There's nothing OS-specific about them, though.
Floppy drives Standard floppy drives are very standardized. There are a few variant technologies, though, like LS-120 drives, which typically interface via the EIDE port. These may need to be treated like hard disks in the /etc/fstab configuration file (described in Chapter 6, "Managing Files and Services").
CD-ROM drives Today, most CD-ROM drives use either the EIDE (aka AT Attachment Packet Interface, or ATAPI) or the SCSI interface, and the devices are very well standardized. The main exceptions are USB-interfaced drives. Even DVD-ROM drives are well standardized. Recordable and rewriteable CDs (CD-R and CD-RW drives) are also becoming well standardized.
Tape drives Most tape drives use a standard EIDE/ATAPI or SCSI interface. These drives almost always respond to a standardized set of commands, and so they don't require a special configuration in Linux. There are a few older floppy-interfaced drives that work with the Linux ftape drivers, which are part of the kernel. Some old parallel-interfaced drives can cause problems, and newer USB-interfaced drives are as yet rare and not well tested.
Keyboards Standard PC keyboards are well supported by Linux and require no special configuration. Some keyboards include special keys that may not be recognized by Linux, though, like volume-control keys or keys to launch specific applications. There are also USB keyboards available. These are supported in 2.4.x kernels, but they aren't as well tested.
Mice Most mice today use USB or PS/2 interfaces, but some older mice used RS-232 serial or various exotic interfaces. All are well supported, although USB support prior to the 2.4.x kernels was poor. Note that the tracking technology (conventional wheeled mouse, optical mouse, trackball, touchpad, and so on) is unimportant; it's only the interface protocols and the type of hardware interface that are important. Mice using USB or PS/2 hardware use the PS/2 protocol or a variant of it that supports wheels.
Serial and parallel ports If you need to add extra serial or parallel ports, you can do so with plug-in cards. These cards are fairly well standardized, so they'll seldom pose serious problems with Linux itself, although they can sometimes conflict with other hardware.
Monitors Monitors don't require drivers, although you may need to know certain features of a monitor to configure it in XFree86. Specifically, you may need to know the monitor's maximum horizontal and vertical refresh rates (expressed in kHz and Hz, respectively). With XFree86 4.0 and later, the X server can sometimes obtain this information from the monitor. (Chapter 2 covers X configuration in detail.)
Some other types of hardware require special consideration. These devices may require unusual drivers or configuration in Linux. Examples include the following:
USB devices Linux needs drivers for each USB device; a single USB driver isn't sufficient to handle all USB devices. The 2.2.18 and 2.4.x kernels add support for many—but by no means all—USB devices. Check http://www.linux-usb.org for information on what's currently supported.
Internal modems In years gone by, internal modems seldom caused problems in Linux, because they were essentially composed of ordinary modem hardware linked to an ordinary serial port, all on one card. Today, though, internal modems are more likely to be software modems—devices that rely upon the CPU to do some of the modem's traditional chores. Such devices require special drivers, which sometimes don't exist for Linux. Check http://www.linmodems.org for information on what's supported and what's not.
Sound cards Linux supports most sound cards. The standard kernel includes drivers for many cards. Commercial variants of these drivers (often called the Open Sound System, or OSS) are available from http:// www.4front-tech.com. An entirely separate project, the Advanced Linux Sound Architecture (ALSA; http://www.alsa-project.org) aims to replace the standard kernel drivers, and supports a different (but overlapping) set of cards. You can also check to see if the sound card vendor provides drivers, which may be unique or work along with the kernel or ALSA core.
Video acquisition boards Video acquisition hardware includes cameras (which typically interface via the parallel, USB, or RS-232 serial ports) and internal cards that accept television input signals. The Video4Linux project (http://www.exploits.org/v4l) is devoted to developing tools for such devices, and the standard kernel includes many of the requisite drivers—but be sure to check for supported hardware if this is important.
Aside from trivial components like cables, you should be cautious about adding hardware to a Linux computer without checking its compatibility with Linux. It's easy to forget that computer hardware often requires drivers, and if nobody has written appropriate drivers for Linux, that hardware simply will not work. These drivers can also vary in quality, which is part of why one device may work well while another works poorly.
Unreliable drivers can be a major cause of system instability. Most drivers have privileged access to the computer's hardware as well as to kernel data structures. As a result, a bug in a driver is unusually likely to crash the system or cause other major problems.
Was this article helpful?
Read how to maintain and repair any desktop and laptop computer. This Ebook has articles with photos and videos that show detailed step by step pc repair and maintenance procedures. There are many links to online videos that explain how you can build, maintain, speed up, clean, and repair your computer yourself. Put the money that you were going to pay the PC Tech in your own pocket.