Selecting Hardware for a Linux System
In this article Phil Hughes describes the basics of choosing a hardware
platform for Linux.
by Phil Hughes
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.
CPU and RAM
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.
Disks
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.
CD-ROM
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.
Printers
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 Communications
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.
Getting HOWTOs via FTP
Networking
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.
Video
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.
Low-End Configuration and High-Performance
Systems
Conclusion
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.