Now, you must be convinced of how wonderful Linux is and of all the great things that it can do for you. However, before you rush out and install the software, you need to be aware of its hardware requirements and limitations.
Keep in mind that Linux was developed by its users. This means, for the most part, that the hardware supported by Linux is that which users and developers actually have access to. As it turns out, most of the popular hardware and peripherals for 80x86 systems are supported (in fact, Linux probably supports more hardware than any commercial implementation of Unix). However, some of the more obscure and esoteric devices, as well as those with proprietary drivers for which the manufacturers do not easily make the specifications available, aren’t supported yet. As time goes on, a wider range of hardware will be supported, so if your favorite devices aren’t listed here, chances are that support for them is forthcoming.
Another drawback for hardware support under Linux is that many companies have decided to keep the hardware interface proprietary. The upshot of this is that volunteer Linux developers simply can’t write drivers for those devices (if they could, those drivers would be owned by the company that owned the interface, which would violate the GPL). The companies that maintain proprietary interfaces write their own drivers for operating systems, such as Microsoft Windows; the end user (that’s you) never needs to know about the interface. Unfortunately, this does not allow Linux developers to write drivers for those devices.
Little can be done about the situation. In some cases, programmers have attempted to write hackish drivers based on assumptions about the interface. In other cases, developers work with the company in question and attempt to obtain information about the device interface, with varying degrees of success.
Linux includes a number of laptop-specific features, such as PCMCIA (or “PC Card”) support and APM. The PCMCIA Tools package for Linux includes drivers for many PCMCIA devices, including modems, Ethernet cards, and SCSI adaptors; the PCMCIA HOWTO is the document that you need to get started.
APM allows the kernel to keep track of the laptop’s battery power and perform certain actions (such as an automated shutdown) when power is low; it also allows the CPU to go into “low power” mode when not in use. This is easy to configure as a kernel option. Various tools interact with APM, such as apm (which displays information on battery status) and apmd (which logs battery status and can be used to trigger power events). These should be included with most Linux distributions.
In the following sections, we’ll attempt to summarize the hardware requirements for Linux. The Linux Hardware HOWTO (see Section 1.10 later in this chapter for an explanation of HOWTOs) contains a more complete listing of hardware supported by Linux.
A good deal of hardware support for Linux is currently in the development stage. Some distributions may or may not support these experimental features. This section primarily lists hardware that has been supported for some time and is known to be stable. When in doubt, consult the documentation for the distribution of Linux you are using (see Section 2.1 in Chapter 2) for more information on Linux distributions).
Another caveat to watch out for: occasionally hardware suppliers will substitute the latest version of a system component (such as a network board) regardless of what you originally ordered. When in doubt, be sure to check the particular hardware that you have.
Linux currently supports systems with an Intel 80386, 80486, Pentium, Pentium Pro, Pentium II, and Pentium III CPU. This includes all variations on this CPU type, such as the 386SX, 486SX, 486DX, and 486DX2. Non-Intel “clones,” such as AMD and Cyrix processors, work with Linux as well.
Linux has been ported to a number of non-Intel architectures. These include the Alpha AXP, MIPS, PowerPC, SPARC, and Motorola 68K. At the time of this writing, some of these ports are more mature than others. Red Hat ships both SPARC and Alpha versions of its distribution in addition to the Intel x86 versions, as does Debian. SuSE has an Alpha version at well, and Debian even provides a Motorola 68K distribution. (See Appendix E.) In this book, we concentrate on the version of Linux for Intel x86 systems. Apart from hardware requirements and basic installation you should find that the majority of this book is just as relevant to ports of Linux to other architectures.
If you have an older 80386 or 80486SX, you may also wish to use a math coprocessor, although one isn’t required (the Linux kernel can do FPU emulation if you do not have a math coprocessor). All standard FPU couplings are supported, such as IIT, Cyrix FasMath, and Intel coprocessors.
Linux requires very little memory to run compared to other advanced operating systems. You should have at the very least 8 MB of RAM; however, it’s strongly suggested that you have at least 16 MB. The more memory you have, the faster the system will run.
Linux can support the full 32-bit address range of the 80x86; in other words, it will utilize all of your RAM automatically. Amounts of RAM greater than 64 MB need a boot-time parameter.
Linux will run happily with only 8 MB of RAM, including all of the bells and whistles such as the X Window System, Emacs, and so on. However, having more memory is almost as important as having a faster processor. Sixteen megabytes is just enough for personal use; 32 MB or more may be needed if you are expecting a heavy user load on the system. Linux systems can, of course support systems with very large amounts of memory—including 1 GB or more.
Most Linux users allocate a portion of their hard drive as swap space, which is used as virtual RAM. Even if you have a great deal of physical RAM in your machine, you may wish to use swap space. While swap space is no replacement for actual physical RAM, it allows your system to run larger applications by swapping out inactive portions of code to disk. The amount of swap space you should allocate depends on several factors; we’ll come back to this question in Section 2.2.3 in Chapter 2.
You do not need a hard drive to run Linux, in fact; you can run a minimal system completely from floppy! However, using Linux with a hard disk is the standard way of doing things. Linux should support all MFM, RLL, and IDE controllers. Most, but not all, ESDI controllers are supported—only those which do ST506 hardware emulation.
The general rule for non-SCSI hard drive and floppy controllers is that if you can access the drive from Windows or another operating system, you should be able to access it from Linux.
Linux also supports a number of popular SCSI drive controllers, although support for SCSI is more limited because of the wide range of controller interface standards. Supported SCSI controllers include the Adaptec AHA2940, AHA3940 AHA1542B, AHA1542C, AHA1742A (BIOS Version 1.34), AHA1522, AHA1740 (SCSI-2 controller, BIOS Version 1.34 in Enhanced mode); Future Domain 1680, TMC-850, TMC-950; Seagate ST-02; UltraStor SCSI; and Western Digital WD7000FASST. Clones that are based on these cards should work as well. This list is just a sampling; the number of supported SCSI drives is too great to enumerate here.
Of course, to install Linux, you’ll need to have some free space on your hard drive. Linux will support multiple hard drives in the same machine; you can allocate space for Linux across multiple drives if necessary.
The amount of hard drive space you will require depends greatly on your needs and the amount of software you’re installing. Linux is relatively small as Unix implementations go; you could run a complete system in 10 to 20 MB of space on your drive. However, if you want to have room for expansion, and for larger packages, such as the X Window System, you need more space. If you plan to allow multiple users to use the machine, you need to allocate storage for their files.
In addition, you’ll more than likely want to allocate swap space on your hard drive to be used as virtual RAM. We will discuss the details of installing and using swap space in Section 6.2 in Chapter 6.
Each distribution of Linux comes with some literature that should help you to gauge the precise amount of storage required depending on the amount of software you plan to install. You can run a minimal system with less than 20 MB; a complete system with all of the bells and whistles in 300 MB or less; and a very large system with room for many users and space for future expansion in 1 GB. Again, these figures are meant only as a ballpark approximation; you must look at your own needs and goals in order to determine your specific storage requirements.
Linux supports all standard Hercules, CGA, EGA, VGA, IBM monochrome, and Super VGA video cards and monitors for the default text-based interface. In general, if the video card and monitor coupling works under another operating system such as Windows, it should work fine with Linux. Original IBM CGA cards suffer from “snow” under Linux, which is unpleasant. (If you have one of these cards, you might want to donate it to a museum anyway.)
Graphical environments, such as the X Window System, have video hardware requirements of their own. Instead of listing these requirements here, we relegate the discussion to Section 10.2 in Chapter 10. In short, to run the X Window System on your Linux machine, you need one of the video cards listed in that section. The good news is that nearly all graphics boards (including high-end ones) are supported.
The previous sections described the hardware required to run a Linux system. However, most users have a number of “optional” devices such as tape and CD-ROM storage, sound boards, and so on, and are interested in whether or not this hardware is supported by Linux. Read on.
For the most part, you will be using a mouse only under a graphical environment, such as the X Window System. However, several Linux applications not associated with a graphics environment also use a mouse.
Linux supports all standard serial mice, including Logitech, MM series, Mouseman, Microsoft (two-button), and Mouse Systems (three-button). Linux also supports Microsoft, Logitech, and ATIXL busmice. The PS/2 mouse interface is supported as well.
All other pointing devices, such as trackballs, which emulate the mice just listed, should work as well.
Most CD-ROM drives sold today use the near-universal IDE/ATAPI CD-ROM standard, which is fully supported under Linux. Many CD-ROM drives use the SCSI interface instead, and as long as you have a SCSI adaptor supported by Linux, your CD-ROM drive should work.
Linux supports the standard ISO-9660 filesystem for CD-ROMs, including the Microsoft filename extensions.
Various DVD-ROM drives are supported in Linux kernel version 2.2; however, filesystems allowing direct access to the DVD contents are not yet included. By the time you read this, we expect them to be fully supported.
There are several types of tape drives available on the market. Many use the SCSI interface, all of which should be supported by Linux. QIC-02 and so-called “floppy tape” devices (which hang off of the floppy controller) are well-supported, as are various kinds of removable storage media, such as DAT, and the Iomega ZIP drive.
Linux supports the complete range of parallel printers. If you are able to access your printer via the parallel port from Windows or another operating system, you should be able to access it from Linux as well. The Linux printing software consists of the Unix standard lp and lpr software. This software also allows you to print remotely via the network, if you have one available.
As with printer support, Linux supports the full range of serial modems, both internal and external. If your modem is accessible from another operating system on the same machine, it is likely that you can access it from Linux with no difficulty. However, Linux does not support so-called “Winmodems,” a kludge where the operating system has to take over many of the modem’s tasks. In addition, some internal PCI modems are not supported.
Linux supports nearly every Ethernet and Fast Ethernet card available for the PC platform, and those that are not supported are more than likely being worked on as this is being written. Linux kernel Version 2.2 includes drivers for a number of high-performance network interfaces as well, including the Packet Engines G-NIC, Alteon AceNIC, and 3Com 3C985 PCI Gigabit Ethernet adaptors. A number of token ring and ATM interface cards are supported, as are various System Area Networks, such as Myricom’s Myrinet.