Selecting Hardware for a Linux System
Although Linux software is virtually free, the required hardware isn't. This makes some people hesitate to jump into the Linux movement. But it doesn't need to be complicated, scary or expensive. Linux runs on most common hardware. In this article I will point out how to make the right choices and hopefully keep you away from costly mistakes. If you currently have a system that adequately runs MS-Windows, you probably have all you need for a decent Linux system. Although Linux is more sophisticated than MS-Windows, it doesn't require more hardware. In fact, because Linux is a pre-emptive multi-tasking system (this means that programs can be interrupted to service other requests), you can get a lot more useful work from the same computer. Before I get into specifics, I would like to point out that there is a lot of documentation on Linux. This includes HOWTOs which detail many of the specifics. These HOWTOs are available at Linux archive sites on the Internet, on most CD-ROM Linux distributions and on paper from various sources. A short article is no substitute for the details presented in the HOWTOs. I highly recommend that you get a copy and that you read them.
To run Linux you need a 386 or higher processor. For text-based applications even a slow 386SX system will perform very well. Although the Linux kernel is capable of emulating floating point arithmetic functions, it is significantly slower than a math co-processor; either in the form of a separate chip or a 486DX or better that has a built-in co-processor. The server system at the Linux Journal advertising/editorial offices is a 386DX40. It has proved to be a great performer with three high-speed modem lines connected to it, a local user and 2 or more active telnet sessions. It has 8MB of RAM but an upgrade to 16MB is planned. The system we use for running X-windows is a 486DX33 with 16MB of RAM. The built-in co-processor and additional RAM make this an excellent workstation for compute-intensive work. Linux needs a system that is based on the ISA (AT) or EISA bus. Linux does not support MicroChannel Architecture (MCA) machines such as the IBM PS/2. It does, however, support local bus systems such as VESA and PCI. What you need will depend on what you intend to do with the system. The minimum RAM is 4MB. If you currently have a 386SX with 4MB of RAM, give it a try. It may do all that you want with no investment. If, however, you need to purchase hardware to run Linux, look at higher performance systems such as something based on a 486DX chip and at least 8MB of RAM. The additional cost is not very great for a large performance increase.
There are two considerations: type and size. Linux supports MFM, RLL, ESDI and IDE disks with virtually any controller board. It also supports a fairly wide assortment of SCSI controllers. If you already have a system, you can probably stick with what you have. But, if you are purchasing new hardware, SCSI disks are well worth considering. Here's why: Many of the supported SCSI disk controllers use direct memory access (DMA) to transfer information. Under MS-DOS this has little advantage because MS-DOS (and MS-Windows) waits for input/output operations. On Linux, however, processing is overlapped with I/O. This means that a DMA controller can be transferring data while the CPU is processing other tasks. One of the most popular controllers supported by Linux is the Adaptec AH-1542C. It is relatively inexpensive ($200 range), uses DMA and has reasonable performance. For EISA bus systems, the AH-1742 may be used. If your system has a VESA local bus, the Buslogic 445S controller seems to offer the best performance at a reasonable cost. Other supported SCSI controllers include the Adaptec 152x series, Allways IN2000, Adaptec 1542 clones (including Buslogic 445S and 447S and DTC 3290 and 3292), Seagate ST01 and ST02, Western Digital 7000, Trantor T128 and T130B, Ultrastor 14F and 24F. The SCSI HOWTO has many details that will help you weigh the costs and performance of the various SCSI controllers. Another consideration when choosing between IDE and SCSI disks is that you can have two disks with IDE controllers and with SCSI you can have up to seven. Selecting the disk size requires some forethought about what applications you'll be running. The price of disk storage is dropping, and you can add one or more disks later on (depending upon your disk type). Linux can run on as small a partition as 20MB, but 200MB is a common size. Some applications may require disk sizes of 1GB or more.
If you have a SCSI disk controller, a SCSI-based CD-ROM drive makes the most sense. It plugs into the same controller and works fine. With the advent of double and triple-speed CD-ROM drives, prices have dropped significantly on the single-speed drives which are adequate if all you intend to do is load files from a distribution CD-ROM. And prices for these devices on the surplus market seem to be in the $50-$80 range. If you are not using SCSI disks, using a non-SCSI CD-ROM is more cost-effective. Although others are supported, drives made by Mitsumi (and marketed under many names including BSR and Tandy) work well. They include their own controller card and can usually be found in the $150 price range.
There is nothing special about Linux and printers. Standard parallel port connections are supported as well as serial port connections for printers. If you have a PostScript laser printer there are programs included with most Linux distributions that support these devices directly. If you don't have a PostScript printer, ghostscript, a program that comes with most Linux distributions, will translate PostScript into the necessary control codes for most printers. If you choose this options, be aware that ghostscript's default fonts are not as pretty as the fonts that come with a PostScript printer.
Serial devices which include mice, modems and terminals can be connected to the system. Because Linux is multi-user as well as multi-tasking, multiple people can be using the computer system at one time. Most MS-DOS systems come with two serial ports. Linux can use these ports but you may want additional ports to support multiple devices. Serial communications boards come in various flavors. The standard 2-port board that comes in most systems uses 16450 UARTs (Universal Asynchronous Receiver Transmitters). This UART has no buffering which means the CPU must stop what it is doing and grab each input character. For one line running at 38,400 bits per second, this means that the processor could have to get a character about every .00025 seconds. With multiple ports this could consume most of the CPU time and result in dropped characters. The 16550A UART is very similar to the 16450 except it has a built-in 16 character buffer. This means that the processor could fetch characters 1/16th as often and still get all the input data. The difference in price is not that big between boards based on the 16450 and 16550A so it is well worth considering. Also, it is possible to replace the 16450s with 16550As in boards where the UARTS are in sockets. If you are considering adding ports, there are various 4, 8 and 16-port boards that use 16550As and support interrupt sharing. This means that up to 16 ports could be configured all on one board using one interrupt line on the bus. There are other serial communications boards that Linux supports or will soon support. Intelligent serial boards are boards that contain an on-board CPU. This CPU handles specifics of the serial transfer, freeing up more of the main CPU. They vary from boards with “intelligent UARTS” to those that include a general- purpose CPU and DMA I/O. Many manufacturers including Spectrix, Stallion, Computone, Arnet and DigiBoard make these boards. They require special drivers and, at this time, the only one supported is the Cyclades 8Y, which uses Cirrus Logic RISC chips. Performance-wise, these boards should offer better performance than the 16550A-based boards. An alternative to serial communications boards is a terminal server. This is a device that connects to the host system via Ethernet and handles serial communications itself. Any terminal server that supports the TCP/IP protocol should work with a Linux system.
Linux has built-in support for networking including TCP/IP and NFS. If you already have a network that supports TCP/IP protocol (used by Unix and other systems) you should be able to add your Linux box to the network. The one piece of hardware you will need is an Ethernet adapter. Ethernet comes in three flavors: thick-net, thin-net and UTP. Thick-net is thick coaxial cable where you connect to it via a tap and a transceiver with an AUI interface. Thick-net was the original but is no longer very popular. Most common today is thin-net, with UTP running second. Thin-net consists of machines connected on a single line of RG-58 coaxial cable. Each machine is connected using a BNC T-connector. Each end of the line is terminated with a 50-ohm terminator. Adding a new computer means either adding to the end of the line and moving the terminator along or splitting an existing cable and adding a new T. UTP (unshielded twisted pair) uses a different configuration. You have a hub and then the systems fan out from the hub. They are also called 10baseT where the T stands for twisted pair. Generally, thin-net is the least expensive, most practical approach. There are a large number of Ethernet boards out there. If you are looking for the quick answer; reasonable cost, reliability and reasonable performance, the WD8013 or SMC8013 card is a good choice. Other cards that generally work are NE2000 clones and the 3Com 3c503. Again, the Ethernet-HOWTO contains much more helpful information than I can include here.
Character-based Linux applications will work with any video board available for the PC. If, however, you want to run X-windows, you will need to select a supported video board. Although there is nothing difficult about supporting any boards, some manufacturers have refused to make the specifications available; therefore, Linux drivers could not be written for their hardware. One major vendor who has not released specifications (and is therefore not supported) is Diamond. The most cost-effective accelerated video boards supported by Linux are the low-end S3 boards. STB and Orchid are two vendors who have cards available for about $130-$150 that will be adequate for almost all Linux users. High-end S3 and ATI boards which are supported are available in the $350-$500, and will increase your video performance. You will want to check the XFree86-HOWTO for more current details when you are making your decision.
Shopping for Linux hardware isn't harder than shopping for DOS/Windows hardware. If you are comfortable selecting video boards and talking about RAM chips, you should have no problem selecting what you need. On the other hand, if you don't want to know what a SCSI is, you may be better off to let someone else pick the hardware for you. Much like picking DOS/Windows hardware, define what you want to do; what sort of things you will be running on the computer system. Then give your requirements to a Linux-knowledgeable hardware vendor and see what they have to offer. Whether you do your own hardware selection or just get some ideas from this article and let someone else pick, expect the end result to be a real Unix-like com-puter system; for your work, for fun or for both.
Phil Hughes is the publisher of Linux Journal, and has put together a few Linux systems in his time.
Phil Hughes is the publisher of Linux Journal, and has put together a few Linux systems in his time.