1721 lines
89 KiB
HTML
1721 lines
89 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
|
|
<!--Converted with LaTeX2HTML 96.1-h (September 30, 1996) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds -->
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>1 Introduction to Linux</TITLE>
|
|
<META NAME="description" CONTENT="1 Introduction to Linux">
|
|
<META NAME="keywords" CONTENT="gs">
|
|
<META NAME="resource-type" CONTENT="document">
|
|
<META NAME="distribution" CONTENT="global">
|
|
<LINK REL=STYLESHEET HREF="gs.css">
|
|
</HEAD>
|
|
<BODY LANG="EN" >
|
|
<A NAME="tex2html824" HREF="node4.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="next_motif.gif"></A> <A NAME="tex2html822" HREF="gs.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="up_motif.gif"></A> <A NAME="tex2html816" HREF="node2.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="previous_motif.gif"></A> <A NAME="tex2html826" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="contents_motif.gif"></A> <BR>
|
|
<B> Next:</B> <A NAME="tex2html825" HREF="node4.html">2 Obtaining and Installing </A>
|
|
<B>Up:</B> <A NAME="tex2html823" HREF="gs.html">Linux Installation and Getting </A>
|
|
<B> Previous:</B> <A NAME="tex2html817" HREF="node2.html">Preface</A>
|
|
<BR> <P>
|
|
<H1><A NAME="SECTION00300000000000000000">1 Introduction to Linux</A></H1>
|
|
<P>
|
|
chap-introIntroduction to Linux
|
|
<A NAME="chapintronum"> </A>
|
|
<A NAME="155"> </A>
|
|
Linux is quite possibly the most important free software achievement
|
|
since the original Space War, or, more recently, Emacs. It has
|
|
developed into an operating system for business, education, and
|
|
personal productivity. Linux is no longer only for UNIX wizards who
|
|
sit for hours in front of a glowing console (although we assure you
|
|
that many users fall into this category). This book will help you get
|
|
the most from Linux.
|
|
<P>
|
|
Linux (pronounced with a short <EM>i</EM>, as in <EM>LIH-nucks</EM>) is a
|
|
UNIX operating system clone which runs on a variety of platforms,
|
|
especially personal computers with Intel 80386 or better processors.
|
|
It supports a wide range of software, from TeX, to the X Window
|
|
System, to the GNU C/C++ compiler, to TCP/IP. It's a versatile,
|
|
bona fide implementation of UNIX, freely distributed under the terms
|
|
of the GNU General Public License (see Appendix <A
|
|
HREF="app-gpl/node1.html">C</A>).
|
|
<P>
|
|
Linux can turn any 80386 or better personal computer into a
|
|
workstation that puts the full power of UNIX at your
|
|
fingertips. Businesses install Linux on entire networks of machines,
|
|
and use the operating system to manage financial and hospital records,
|
|
distributed computing environments, and
|
|
telecommunications. Universities worldwide use Linux to teach courses
|
|
on operating system programming and design. Computing enthusiasts
|
|
everywhere use Linux at home for programming, productivity, and
|
|
all-around hacking.
|
|
<P>
|
|
What makes Linux so different is that it is a free implementation of
|
|
UNIX. It was and still is developed cooperatively by a group of
|
|
volunteers, primarily on the Internet, who exchange code, report bugs,
|
|
and fix problems in an open-ended environment. Anyone is welcome to
|
|
join the Linux development effort. All it takes is interest in
|
|
hacking a free UNIX clone, and some programming know-how. The book in
|
|
your hands is your tour guide.
|
|
<P>
|
|
<H1><A NAME="SECTION00310000000000000000">1.1 About this book.</A></H1>
|
|
<P>
|
|
This book is an installation and entry-level guide to Linux. The
|
|
purpose is to get new users up and running by consolidating as much
|
|
important material as possible into one book. Instead of covering
|
|
volatile technical details which tend to change with rapid
|
|
development, we give you the straight background to find out more on
|
|
your own.
|
|
<P>
|
|
Linux is not difficult to install and use. However, as with any
|
|
implementation of UNIX, there is often black magic involved to get
|
|
everything working correctly. We hope that this book will get you on
|
|
the Linux tour bus and show you how great an operating system can be.
|
|
<P>
|
|
In this book, we cover the following topics:
|
|
<UL>
|
|
<LI> What is Linux? The design and philosophy of this unique operating
|
|
system, and what it can do for you.
|
|
<LI> Details of running Linux, including suggestions on
|
|
recommended hardware configuration.
|
|
<LI> Specific instructions to install
|
|
various Linux distributions, including Debian, Red Hat Software, and
|
|
Slackware.
|
|
<LI> A brief, introductory UNIX tutorial for users with no previous
|
|
UNIX experience. This tutorial should provide enough material for
|
|
novices to find their way around the system.
|
|
<LI> An introduction to system administration under Linux. This covers
|
|
the most important tasks that Linux administrators need to perform,
|
|
like creating user accounts and managing file systems.
|
|
<LI> Information on configuring more advanced features of Linux, like the
|
|
X Window System, TCP/IP networking, and electronic mail and news.
|
|
<P>
|
|
</UL>
|
|
<P>
|
|
This book is for the personal computer user who wishes to get started
|
|
with Linux. We don't assume previous UNIX experience but do expect
|
|
novices to refer to other material along the way. For those
|
|
unfamiliar with UNIX, a list of useful references is given in
|
|
Appendix <A HREF="app-sources/node1.html">A</A>. In general, this book is meant to be
|
|
read in addition to another book on basic UNIX concepts.
|
|
<P>
|
|
<H1><A NAME="SECTION00320000000000000000">1.2 A brief history of Linux.</A></H1>
|
|
<P>
|
|
UNIX is one of the most popular operating systems worldwide because of
|
|
its large support base and distribution. It was originally developed
|
|
at AT&T as a multitasking system for minicomputers and mainframes in the
|
|
1970's, but has since grown to become one of the most widely-used
|
|
operating systems anywhere, despite its sometimes confusing interface
|
|
and lack of central standardization.
|
|
<P>
|
|
Many hackers feel that UNIX is the Right Thing--the One True
|
|
Operating System. Hence, the development of Linux by an expanding
|
|
group of UNIX hackers who want to get their hands dirty with their own
|
|
system.
|
|
<P>
|
|
Versions of UNIX exist for many systems, from personal computers to
|
|
supercomputers like the Cray Y-MP. Most versions of UNIX for
|
|
personal computers are expensive and cumbersome. At the time of this
|
|
writing, a one-machine version of UNIX System V for the 386 runs
|
|
about US$1500.
|
|
<P>
|
|
Linux is a free version of UNIX developed primarily by Linus Torvalds
|
|
at the University of Helsinki in Finland, with the help of many UNIX
|
|
programmers and wizards across the Internet. Anyone with enough
|
|
know-how and gumption can develop and change the system. The Linux
|
|
kernel uses no code from AT&T or any other proprietary source, and
|
|
much of the software available for Linux was developed by the GNU
|
|
project of the Free Software Foundation in Cambridge, Massachusetts,
|
|
U.S.A. However, programmers from all over the world have contributed
|
|
to the growing pool of Linux software.
|
|
<P>
|
|
Linux was originally developed as a hobby project by Linus Torvalds.
|
|
It was inspired by Minix, a small UNIX system developed by Andy
|
|
Tanenbaum. The first discussions about Linux were on the Usenet
|
|
newsgroup, <TT>comp.os.minix</TT>. These discussions were concerned mostly
|
|
with the development of a small, academic UNIX system for Minix users
|
|
who wanted more.
|
|
<P>
|
|
The very early development of Linux mostly dealt with the
|
|
task-switching features of the 80386 protected-mode interface, all written
|
|
in assembly code. Linus writes,
|
|
<BLOCKQUOTE> ``After that it was plain sailing: hairy coding still, but I had some devices,
|
|
and debugging was easier. I started using C at this stage, and it certainly
|
|
speeds up development. This is also when I started to get serious about my
|
|
megalomaniac ideas to make `a better Minix than Minix.' I was hoping I'd be
|
|
able to recompile <TT>gcc</TT> under Linux someday...
|
|
<P>
|
|
``Two months for basic setup, but then only slightly longer
|
|
until I had a disk driver (seriously buggy, but it happened to work on my
|
|
machine) and a small file system. That was about when I made 0.01 available
|
|
(around late August of 1991): it wasn't pretty, it had no floppy
|
|
driver, and it couldn't do much of anything. I don't think anybody ever
|
|
compiled that version. But by then I was hooked, and didn't want to
|
|
stop until I could chuck out Minix.''
|
|
</BLOCKQUOTE>
|
|
<P>
|
|
No announcement was ever made for Linux version 0.01. The 0.01 sources
|
|
weren't even executable. They contained only the bare rudiments of
|
|
the kernel source and assumed that you had access to a Minix machine
|
|
to compile and experiment with them.
|
|
<P>
|
|
On October 5, 1991, Linus announced the first ``official'' version of
|
|
Linux, which was version 0.02. At that point, Linus was able to run
|
|
<TT>bash</TT> (the GNU Bourne Again Shell) and <TT>gcc</TT> (the GNU C
|
|
compiler), but not much else. Again, this was intended as a hacker's
|
|
system. The primary focus was kernel development--user support,
|
|
documentation, and distribution had not yet been addressed. Today, the
|
|
Linux community still seems to treat these issues as secondary to
|
|
``real programming''--kernel development.
|
|
<P>
|
|
As Linus wrote in <TT>comp.os.minix</TT>,
|
|
<BLOCKQUOTE> ``Do you pine for the nice days of Minix-1.1, when men were men and wrote
|
|
their own device drivers? Are you without a nice project and just dying
|
|
to cut your teeth on an OS you can try to modify for your needs? Are you
|
|
finding it frustrating when everything works on Minix? No more all-nighters
|
|
to get a nifty program working? Then this post might be just
|
|
for you.
|
|
<P>
|
|
``As I mentioned a month ago, I'm working on a free version of a
|
|
Minix-look-alike for AT-386 computers. It has finally reached the stage
|
|
where it's even usable (though may not be, depending on what you want),
|
|
and I am willing to put out the sources for wider distribution. It is
|
|
just version 0.02...but I've successfully
|
|
run <TT>bash</TT>, <TT>gcc</TT>, <TT>gnu-make</TT>, <TT>gnu-sed</TT>,
|
|
<TT>compress</TT>, etc. under it.''
|
|
</BLOCKQUOTE>
|
|
<P>
|
|
After version 0.03, Linus bumped up the version number to 0.10, as
|
|
more people started to work on the system. After several further
|
|
revisions, Linus increased the version number to 0.95 in March, 1992,
|
|
to reflect his expectation that the system was ready for an
|
|
``official'' release soon. (Generally, software is not assigned the
|
|
version number 1.0 until it is theoretically complete or
|
|
bug-free.). Almost a year and a half later, in late December of 1993,
|
|
the Linux kernel was still at version 0.99.pl14--asymptotically
|
|
approaching 1.0. At the time of this writing, the current stable
|
|
kernel version is 2.0 patchlevel 33, and version 2.1 is under
|
|
development.
|
|
<P>
|
|
Most of the major, free UNIX software packages have been ported to
|
|
Linux, and commercial software is also available. More hardware
|
|
is supported than in the original kernel versions. Many people have
|
|
executed benchmarks on 80486 Linux systems and found them comparable
|
|
with mid-range workstations from Sun Microsystems and Digital
|
|
Equipment Corporation. Who would have ever guessed that this
|
|
``little'' UNIX clone would have grown up to take on the entire world
|
|
of personal computing?
|
|
<P>
|
|
<H1><A NAME="SECTION00330000000000000000">1.3 System features.</A></H1>
|
|
<P>
|
|
Linux supports features found in other implementations of UNIX, and
|
|
many which aren't found elsewhere. In this section, we'll take a
|
|
nickel tour of the features of the Linux kernel.
|
|
<P>
|
|
Linux is a complete multitasking, multiuser operating system, as are
|
|
all other versions of UNIX. This means that many users can log into
|
|
and run programs on the same machine simultaneously.
|
|
<P>
|
|
The Linux system is mostly compatible with several UNIX standards
|
|
(inasmuch as UNIX has standards) at the source level, including IEEE
|
|
POSIX.1, UNIX System V, and Berkely System Distribution
|
|
UNIX. Linux was developed with source code portability in mind, and
|
|
it's easy to find commonly used features that are shared by more than
|
|
one platform. Much of the free UNIX software available on the
|
|
Internet and elsewhere compiles under Linux ``right out of the box.''
|
|
In addition, all of the source code for the Linux system, including
|
|
the kernel, device drivers, libraries, user programs, and development
|
|
tools, is freely distributable.
|
|
<P>
|
|
Other specific internal features of Linux include POSIX job control
|
|
(used by shells like <TT>csh</TT> and <TT>bash</TT>), pseudoterminals (<TT>
|
|
pty</TT> devices), and support for dynamically loadable national or
|
|
customized keyboard drivers. Linux supports <B>virtual consoles</B>
|
|
that let you switch between login sessions on the same system
|
|
console. Users of the <TT>screen</TT> program will find the Linux virtual
|
|
console implementation familiar.
|
|
<P>
|
|
The kernel can emulate 387-FPU instructions, and systems without a
|
|
math coprocessor can run programs that require floating-point math
|
|
capability.
|
|
<P>
|
|
Linux supports various file systems for storing data, like the ext2
|
|
file system, which was developed specifically for Linux. The
|
|
Xenix and UNIX System V
|
|
file systems are also supported, as well as the
|
|
Microsoft MS-DOS and Windows 95 VFAT file systems on a hard drive or
|
|
floppy. The ISO 9660 CD-ROM file system is also supported. We'll
|
|
talk more about file systems in chapters <A HREF="node4.html#chapinstallnum">2</A>
|
|
and <A HREF="node6.html#chapsysadmnum">4</A>.
|
|
<P>
|
|
Linux provides a complete implementation of TCP/IP networking
|
|
software. This includes device drivers for many popular Ethernet
|
|
cards, SLIP (Serial Line Internet Protocol) and PPP (Point-to-Point
|
|
Protocol), which provide access to a TCP/IP network via a serial
|
|
connection, PLIP (Parallel Line Internet Protocol), and NFS (Network
|
|
File System). The complete range of TCP/IP clients and services is
|
|
also supported, which includes FTP, <TT>telnet</TT>, NNTP, and
|
|
SMTP. We'll talk more about networking in Chapter <A HREF="#chapadvanced"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A>.
|
|
<P>
|
|
The Linux kernel is developed to use protected-mode features of Intel
|
|
80386 and better processors. In particular, Linux uses the
|
|
protected-mode, descriptor based, memory-management paradigm, and
|
|
other advanced features. Anyone familiar with 80386 protected-mode
|
|
programming knows that this chip was designed for multitasking systems
|
|
like UNIX. Linux exploits this functionality.
|
|
<P>
|
|
The kernel supports demand-paged, loaded executables. Only those
|
|
segments of a program which are actually in use are read into memory
|
|
from disk. Also, copy-on-write pages are shared among executables. If
|
|
several instances of a program are running at once, they share
|
|
physical memory, which reduces overall usage.
|
|
<P>
|
|
In order to increase the amount of available memory, Linux also
|
|
implements disk paging. Up to one gigabyte of <B>swap
|
|
space</B><A NAME="tex2html2" HREF="footnode.html#196"><IMG ALIGN=BOTTOM ALT="gif" SRC="foot_motif.gif"></A> may be allocated on disk (upt to 8 partitions of 128 megabytes
|
|
each). When the system requires more
|
|
physical memory, it swaps inactive pages to disk, letting you run
|
|
larger applications and support more users. However, swapping data to
|
|
disk is no substitute for physical RAM, which is much faster.
|
|
<P>
|
|
The Linux kernel also implements a unified memory pool for user
|
|
programs and disk cache. All free memory is used by the cache, which
|
|
is reduced when running large programs.
|
|
<P>
|
|
Executables use dynamically linked, shared libraries: code from a
|
|
single library on disk. This is not unlike the SunOS shared library
|
|
mechanism. Executable files occupy less disk space, especially
|
|
those which use many library functions. There are also statically
|
|
linked libraries for object debugging and maintaining ``complete''
|
|
binary files when shared libraries are not installed. The libraries
|
|
are dynamically linked at run time, and the programmer can use his or
|
|
her own routines in place of the standard library routines.
|
|
<P>
|
|
To facilitate debugging, the kernel generates core dumps for
|
|
post-mortem analysis. A core dump and an executable linked with
|
|
debugging support allows a developer to determine what caused a
|
|
program to crash.
|
|
<P>
|
|
<H1><A NAME="SECTION00340000000000000000">1.4 Software features.</A></H1>
|
|
<P>
|
|
Virtually every utility one would expect of a standard UNIX
|
|
implementation has been ported to Linux, including basic commands like
|
|
<TT>ls</TT>, <TT>awk</TT>, <TT>tr</TT>, <TT>sed</TT>, <TT>bc</TT>, and <TT>more</TT>.
|
|
The familiar working environment of other UNIX systems is duplicated
|
|
on Linux. All standard commands and utilities are included. (Novice
|
|
UNIX or Linux users should see Chapter <A HREF="node5.html#chaptutorial">3</A> for an
|
|
introduction to basic UNIX commands.)
|
|
<P>
|
|
Many text editors are available, including <TT>vi</TT>, <TT>ex</TT>, <TT>
|
|
pico</TT>, <TT>jove</TT>, and GNU <TT>emacs</TT>, and variants like Lucid <TT>
|
|
emacs</TT>, which incorporates extensions of the X Window System, and <TT>
|
|
joe</TT>. The text editor you're accustomed to using has more than likely
|
|
been ported to Linux.
|
|
<P>
|
|
The choice of a text editor is an interesting one. Many UNIX users
|
|
prefer ``simple'' editors like <TT>vi</TT>. (The original author wrote
|
|
this book with <TT>vi</TT>.) But <TT>vi</TT> has many limitations due to
|
|
its age, and modern editors like <TT>emacs</TT> have gained popularity.
|
|
<TT>emacs</TT> supports a complete, Lisp based macro language and
|
|
interpreter, powerful command syntax, and other extensions. There are
|
|
<TT>emacs</TT> macro packages which let you read electronic mail and
|
|
news, edit directory contents, and even engage in artificially
|
|
intelligent psychotherapy sessions (indispensible for stressed-out
|
|
Linux hackers).
|
|
<P>
|
|
Most of the basic Linux utilities are GNU software. GNU utilities
|
|
support advanced features that are not found in the standard versions
|
|
of BSD and UNIX System Vprograms. For example, the GNU <TT>vi</TT> clone,
|
|
<TT>elvis</TT>, includes a structured macro language that differs from
|
|
the original implementation. However, GNU utilities are
|
|
intended to remain compatible with their BSD and System V
|
|
counterparts. Many people consider the GNU versions to be superior to
|
|
the originals.
|
|
<P>
|
|
A <B>shell</B> is a program which reads and executes commands from the
|
|
user. In addition, many shells provide features like <B>job
|
|
control,</B> managing several processes at once, input and output
|
|
redirection, and a command language for writing <B>shell scripts</B>.
|
|
A shell script is a program in the shell's command language and is
|
|
analogous to a MS-DOS batch file.
|
|
<P>
|
|
Many types of shells are available for Linux. The most important
|
|
difference between shells is the command language. For example, the C
|
|
SHell (<TT>csh</TT>) uses a command language similar to the C programming
|
|
language. The classic Bourne SHell <TT>sh</TT> uses another command
|
|
language. The choice of a shell is often based on the command language
|
|
it provides, and determines, to a large extent, the qualities of your
|
|
working environment under Linux.
|
|
<P>
|
|
The GNU Bourne Again Shell (<TT>bash</TT>) is a variation of the Bourne
|
|
Shell which includes many advanced features like job control, command
|
|
history, command and filename completion, an <TT>emacs</TT>-like
|
|
interface for editing command lines, and other powerful extensions to
|
|
the standard Bourne Shell language. Another popular shell is <TT>
|
|
tcsh</TT>, a version of the C Shell with advanced functionality similar to
|
|
that found in <TT>bash</TT>. Other shells include <TT>zsh</TT>, a small
|
|
Bourne-like shell; the Korn Shell (<TT>ksh</TT>); BSD's <TT>ash</TT>; and
|
|
<TT>rc</TT>, the Plan 9 shell.
|
|
<P>
|
|
If you're the only person using the system and refer to use <TT>vi</TT>
|
|
and <TT>bash</TT> exclusively as your editor and shell, there's no reason
|
|
to install other editors or shells. This ``do it yourself'' attitude
|
|
is prevalent among Linux hackers and users.
|
|
<P>
|
|
<H2><A NAME="SECTION00341000000000000000">1.4.1 Text processing and word processing.</A></H2>
|
|
<P>
|
|
Almost every computer user needs a method of preparing documents. In
|
|
the world of personal computers, <B>word processing</B> is the norm:
|
|
editing and manipulating text in a ``What-You-See-Is-What-You-Get''
|
|
(WYSIWYG) environment and producing printed copies of the text,
|
|
complete with graphics, tables, and ornamentation.
|
|
<P>
|
|
Commercial word processors from Corel, Applix, and Star Division are
|
|
available in the UNIX world, but <B>text processing,</B> which is quite
|
|
different conceptually, is more common. In text processing systems,
|
|
text is entered in a <B>page-description language,</B> which describes
|
|
how the text should be formatted. Rather than enter text within a
|
|
special word processing environment, you can modify text with any
|
|
editor, like <TT>vi</TT> or <TT>emacs</TT>. Once you finish entering the
|
|
source text (in the typesetting language), a separate program converts
|
|
the source to a format suitable for printing. This is somewhat
|
|
analogous to programming in a language like C, and ``compiling'' the
|
|
document into printable form.
|
|
<P>
|
|
Many text processing systems are available for Linux. One is <TT>
|
|
groff</TT>, the GNU version of the classic <TT>troff</TT> text formatter
|
|
originally developed by Bell Labs and still used on many UNIX systems
|
|
worldwide. Another modern text processing system is TeX, developed by
|
|
Donald Knuth of computer science fame. Dialects of TeX, like LaTeX,
|
|
are also available.
|
|
<P>
|
|
Text processors like TeX and <TT>groff</TT> differ mostly in the syntax
|
|
of their formatting languages. The choice of one formatting system
|
|
over another is based upon what utilities are available to satisfy
|
|
your needs, as well as personal taste.
|
|
<P>
|
|
Many people consider <TT>groff</TT>'s formatting language to be a bit
|
|
obscure and use find TeX more readable. However, <TT>groff</TT>
|
|
produces ASCII output which can be viewed on a terminal more easily,
|
|
while TeX is intended primarily for output to a printing
|
|
device. Various add-on programs are required to produce ASCII output
|
|
from TeX formatted documents, or convert TeX input to <TT>
|
|
groff</TT> format.
|
|
<P>
|
|
Another program is <TT>texinfo</TT>, an extension to TeX which is used
|
|
for software documentation developed by the Free Software Foundation.
|
|
<TT>texinfo</TT> can produce printed output, or an online-browsable
|
|
hypertext ``Info'' document from a single source file. Info files are
|
|
the main format of documentation used in GNU software like <TT>
|
|
emacs</TT>.
|
|
<P>
|
|
Text processors are used widely in the computing community for
|
|
producing papers, theses, magazine articles, and books. (This book is
|
|
produced using LaTeX.) The ability to process source language as a
|
|
text file opens the door to many extensions of the text processor
|
|
itself. Because a source document is not stored in an obscure format
|
|
that only one word processor can read, programmers can write parsers
|
|
and translators for the formatting language, and thus extend the
|
|
system.
|
|
<P>
|
|
What does a formatting language look like? In general, a formatted
|
|
source file consists mostly of the text itself, with <B>control
|
|
codes</B> to produce effects like font and margin changes, and list
|
|
formatting.
|
|
<P>
|
|
Consider the following text:
|
|
<P>
|
|
<BLOCKQUOTE> Mr. Torvalds:
|
|
<P>
|
|
We are very upset with your current plans to implement <EM>post-hypnotic
|
|
suggestions</EM> in the <B>Linux</B> terminal driver code. We feel this
|
|
way for three reasons:
|
|
<OL>
|
|
<LI> Planting subliminal messages in the terminal driver is not only
|
|
immoral, it is a waste of time;
|
|
<LI> It has been proven that ``post-hypnotic suggestions'' are ineffective
|
|
when used upon unsuspecting UNIX hackers;
|
|
<LI> We have already implemented high-voltage electric shocks, as a
|
|
security measure, in the code for <TT>login</TT>.
|
|
</OL>
|
|
We hope you will reconsider.
|
|
</BLOCKQUOTE>
|
|
<P>
|
|
This text might appear in the LaTeX formatting language as the following:
|
|
<PRE>\begin{quote}
|
|
Mr. Torvalds:
|
|
|
|
We are very upset with your current plans to implement
|
|
{\em post-hypnotic suggestions\/} in the {\bf Linux} terminal
|
|
driver code. We feel this way for three reasons:
|
|
\begin{enumerate}
|
|
\item Planting subliminal messages in the kernel driver is not only
|
|
immoral, it is a waste of time;
|
|
\item It has been proven that ``post-hypnotic suggestions''
|
|
are ineffective when used upon unsuspecting UNIX hackers;
|
|
\item We have already implemented high-voltage electric shocks, as
|
|
a security measure, in the code for {\tt login}.
|
|
\end{enumerate}
|
|
We hope you will reconsider.
|
|
\end{quote}</PRE>
|
|
<P>
|
|
The author enters the text using any text editor and generates
|
|
formatted output by processing the source with LaTeX. At first
|
|
glance, the typesetting language may appear to be obscure, but it's
|
|
actually quite easy to understand. Using a text processing system
|
|
enforces typographical standards when writing. All the enumerated
|
|
lists within a document will look the same, unless the author modifies
|
|
the definition of an enumerated list. The goal is to allow the author
|
|
to concentrate on the text, not typesetting conventions.
|
|
<P>
|
|
When writing with a text editor, one generally does not think about
|
|
how the printed text will appear. The writer learns to visualize the
|
|
finished text's appearance from the formatting commands in the source.
|
|
<P>
|
|
WYSIWYG word processors are attractive for many reasons. They provide
|
|
an easy-to-use visual interface for editing documents. But this
|
|
interface is limited to aspects of text layout which are accessible to
|
|
the user. For example, many word processors still provide a special
|
|
format language for producing complicated expressions like
|
|
mathematical formulae. This is text processing, albeit on a much
|
|
smaller scale.
|
|
<P>
|
|
A not-so-subtle benefit of text processing is that you specify exactly
|
|
which format you need. In many cases, the text processing system
|
|
requires a format specification. Text processing systems also allow
|
|
source text to be edited with any text editor, instead of relying on
|
|
format codes which are hidden beneath a word processor's opaque user
|
|
interface. Further, the source text is easily converted to other
|
|
formats. The tradeoff for this flexibility and power is the lack of
|
|
WYSIWYG formatting.
|
|
<P>
|
|
Some programs let you preview the formatted document on a graphics
|
|
display device before printing. The <TT>xdvi</TT> program displays a
|
|
``device independent'' file generated by the TeX system under
|
|
X. Applications like <TT>xfig</TT> and <TT>gimp</TT> provide WYSIWYG
|
|
graphics interfaces for drawing figures and diagrams, which are
|
|
subsequently converted to text processing language for inclusion in
|
|
your document.
|
|
<P>
|
|
Text processors like <TT>troff</TT> were around long before WYSIWYG word
|
|
processing was available. Many people still prefer their versatility
|
|
and independence from a graphics environment.
|
|
<P>
|
|
Many text-processing-related utilities are available. The powerful
|
|
METAFONT system, which is used to design fonts for TeX, is included
|
|
in the Linux port of TeX. Other programs include <TT>ispell</TT>, an
|
|
interactive spelling checker and corrector; <TT>makeindex</TT>, which
|
|
generates indices in LaTeX documents; and many other <TT>groff</TT>
|
|
and TeXbased macro packages which format many types of technical and
|
|
mathematical texts. Conversion programs that translate between TeX
|
|
or <TT>groff</TT> source to a myriad of other formats are also available.
|
|
<P>
|
|
A newcomer to text formatting is YODL, written by Karel Kubat. YODL is
|
|
an easy-to-learn language with filters to produce various output
|
|
formats, like LaTeX, SGML, and HTML.
|
|
<P>
|
|
<H2><A NAME="SECTION00342000000000000000">1.4.2 Programming languages and utilities.</A></H2>
|
|
<P>
|
|
Linux provides a complete UNIX programming environment which includes
|
|
all of the standard libraries, programming tools, compilers, and
|
|
debuggers which you would expect of other UNIX systems.
|
|
<P>
|
|
Standards like POSIX.1 are supported, which allows software written
|
|
for Linux to be easily ported to other systems. Professional UNIX
|
|
programmers and system administrators use Linux to develop software at
|
|
home, then transfer the software to UNIX systems at work. This not
|
|
only saves a great deal of time and money, but also lets you work in
|
|
the comfort of your own home. (One of the authors uses his system to
|
|
develop and test X Window System applications at home, which can be
|
|
directly compiled on workstations elsewhere.) Computer Science
|
|
students learn UNIX programming and explore other aspects of the
|
|
system, like kernel architecture.
|
|
<P>
|
|
With Linux, you have access to the complete set of libraries and
|
|
programming utilities and the complete kernel and library source code.
|
|
<P>
|
|
Within the UNIX software world, systems and applications are often
|
|
programmed in C or C++. The standard C and C++ compiler for Linux is
|
|
GNU <TT>gcc</TT>, which is an advanced, modern compiler that supports
|
|
C++, including AT&T 3.0 features, as well as Objective-C, another
|
|
object-oriented dialect of C.
|
|
<P>
|
|
Besides C and C++, other compiled and interpreted programming
|
|
languages have been ported to Linux, like Smalltalk, FORTRAN, Java,
|
|
Pascal, LISP, Scheme, and Ada (if you're masochistic enough to program
|
|
in Ada, we aren't going to stop you). In addition, various assemblers
|
|
for writing protected-mode 80386 code are available, as are UNIX
|
|
hacking favorites like Perl (the script language to end all script
|
|
languages) and Tcl/Tk (a shell-like command processing system which
|
|
has support for developing simple X Window System applications).
|
|
<P>
|
|
The advanced <TT>gdb</TT> debugger can step through a program one line of
|
|
source code at a time, or examine a core dump to find the cause of a
|
|
crash. The <TT>gprof</TT> profiling utility provides performance
|
|
statistics for your program, telling you where your program spends
|
|
most of its execution time. As mentioned above, the <TT>emacs</TT> text
|
|
editor provides interactive editing and compilation environments for
|
|
various programming languages. Other tools include GNU <TT>make</TT> and
|
|
<TT>imake</TT>, which manage compilation of large applications, and RCS,
|
|
a system for source code locking and revision control.
|
|
<P>
|
|
Finally, Linux supports dynamically linked, shared libraries (DLLs),
|
|
which result in much smaller binaries. The common subroutine code is
|
|
linked at run-time. These DLLs let you override function definitions
|
|
with your own code. For example, if you wish to write your own version
|
|
of the <TT>malloc()</TT> library routine, the linker will use your new
|
|
routine instead of the one in the libraries.
|
|
<P>
|
|
<H2><A NAME="SECTION00343000000000000000">Introduction to the X Window System.</A></H2>
|
|
<P>
|
|
The X Window System, or simply X, is a standard graphical user
|
|
interface (GUI) for UNIX machines and is a powerful environment which
|
|
supports many applications. Using the X Window System, you can have
|
|
multiple terminal windows on the screen at once, each having a
|
|
different login session. A pointing device like a mouse is often used
|
|
with X, although it isn't required.
|
|
<P>
|
|
Many X-specific applications have been written, including games,
|
|
graphics and programming utilities, and documentation tools. Linux
|
|
and X make your system a bona fide workstation. With TCP/IP
|
|
networking, your Linux machine can display X applications running on
|
|
other machines.
|
|
<P>
|
|
The X Window System was originally developed at the Massachusetts
|
|
Institute of Technology and is freely distributable. Many commercial
|
|
vendors have distributed proprietary enhancements to the original
|
|
X Window System as well. The version of X for Linux is XFree86, a port
|
|
of X11R6 which is freely distributable. XFree86 supports a wide range
|
|
of video hardware, including VGA, Super VGA, and accelerated video
|
|
adaptors. XFree86 is a complete distribution of the X Windows System
|
|
software, and contains the X server itself, many applications and
|
|
utilities, programming libraries, and documents.
|
|
<P>
|
|
Standard X applications include <TT>xterm</TT>, a terminal emulator used
|
|
for most text-based applications within a window, <TT>xdm</TT>, which
|
|
handles logins, <TT>xclock</TT>, a simple clock display, <TT>xman</TT>, a
|
|
X-based manual page reader, and <TT>xmore</TT>. The many X applications
|
|
available for Linux are too numerous to mention here, but their number
|
|
includes spreadsheets, word processors, graphics programs, and web
|
|
browsers like the Netscape Navigator. Many other applications are
|
|
available separately. Theoretically, any application written for X
|
|
should compile cleanly under Linux.
|
|
<P>
|
|
The interface of the X Window System is controlled largely by the <B>
|
|
window manager</B>. This user-friendly program is in charge of the
|
|
placement of windows, the user interface for resizing and moving them,
|
|
changing windows to icons, and the appearance of window frames, among
|
|
other tasks. XFree86 includes <TT>twm</TT>, the classic MIT window
|
|
manager, and advanced window managers like the Open Look Virtual
|
|
Window Manager (<TT>olvwm</TT>) are available. Popular among Linux users
|
|
is <TT>fvwm</TT>--a small window manager that requires less than half
|
|
the memory of <TT>twm</TT>. It provides a 3-dimensional appearance for
|
|
windows and a virtual desktop. The user moves the mouse to the edge
|
|
of the screen, and the desktop shifts as though the display were much
|
|
larger than it really is. <TT>fvwm</TT> is greatly customizable and
|
|
allows access to functions from the keyboard as well as mouse. Many
|
|
Linux distributions use <TT>fvwm</TT> as the standard window manager. A
|
|
version of <TT>fvwm</TT> called <TT>fvwm95-2</TT> offers Microsoft Windows
|
|
95-like look and feel.
|
|
<P>
|
|
The XFree86 distribution includes programming libraries for wily
|
|
programmers who wish to develop X applications. Widget sets like
|
|
Athena, Open Look, and Xaw3D are supported. All of the standard fonts,
|
|
bitmaps, manual pages, and documentation are included. PEX (a
|
|
programming interface for 3-dimensional graphics) is also supported.
|
|
<P>
|
|
Many X application programmers use the proprietary Motif widget set
|
|
for development. Several vendors sell single and multiple user
|
|
licenses for binary versions of Motif. Because Motif itself is
|
|
relatively expensive, not many Linux users own it. However, binaries
|
|
statically linked with Motif routines can be freely distributed. If
|
|
you write a program using Motif, you may provide a binary so users
|
|
without the Motif libraries can use the program.
|
|
<P>
|
|
A major caveat to using the X Window System is its hardware
|
|
requirements. A 80386-based CPU with 4 megabytes of RAM is capable of
|
|
running X, but 16 megabytes or more of physical RAM is needed for
|
|
comfortable use. A faster processor is nice to have as well, but
|
|
having enough physical RAM is much more important. In addition, to
|
|
achieve really slick video performance, we recommend getting an
|
|
accelerated video card, like a VESA Local Bus (VLB) S3 chipset card.
|
|
Performance ratings in excess of 300,000 xstones have been achieved
|
|
with Linux and XFree86. Using adequate hardware, you'll find that
|
|
running X and Linux is as fast, or faster, than running X on other
|
|
UNIX workstations.
|
|
<P>
|
|
In Chapter <A HREF="#chapadvanced"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A> we discuss how to install and use X on
|
|
your system.
|
|
<P>
|
|
<H2><A NAME="SECTION00344000000000000000">1.4.4 Introduction to Networking.</A></H2>
|
|
<P>
|
|
Would you like to communicate with the world? Linux supports two
|
|
primary UNIX networking protocols: TCP/IP and UUCP. TCP/IP
|
|
(Transmission Control Protocol/Internet Protocol) is the networking
|
|
paradigm which allows systems all over the world to communicate on a
|
|
single network, the <B>Internet.</B> With Linux, TCP/IP, and a
|
|
connection to the Internet, you can communicate with users and
|
|
machines via electronic mail, Usenet news, and FTP file transfer.
|
|
<P>
|
|
Most TCP/IP networks use Ethernet as the physical network transport.
|
|
Linux supports many popular Ethernet cards and interfaces for personal
|
|
computers, including pocket and PCMCIA Ethernet adaptors.
|
|
<P>
|
|
However, because not everyone has an Ethernet connection at home,
|
|
Linux also supports <B>SLIP</B> (Serial Line Internet Protocol) and
|
|
<B>PPP</B> (Point-to-Point Protocol), which provide Internet access via
|
|
modem. Many businesses and universities provide SLIP and PPP
|
|
servers. In fact, if your Linux system has an Ethernet connection to
|
|
the Internet and a modem, your system can become a SLIP or PPP server
|
|
for other hosts.
|
|
<P>
|
|
NFS (Network File System) lets your system seamlessly share file
|
|
systems with other machines on the network. FTP (File Transfer
|
|
Protocol) lets you transfer files with other machines. <TT>sendmail</TT>
|
|
sends and receives electronic mail via the SMTP protocol; C-News and
|
|
INN are NNTP based new systems; and <TT>telnet</TT>, <TT>rlogin</TT>, and
|
|
<TT>rsh</TT> let you log in and execute commands on other machines on the
|
|
network. <TT>finger</TT> lets you get information about other Internet
|
|
users.
|
|
<P>
|
|
Linux also supports Microsoft Windows connectivity via Samba<A NAME="tex2html3" HREF="footnode.html#319"><IMG ALIGN=BOTTOM ALT="gif" SRC="foot_motif.gif"></A>, and
|
|
Macintosh connectivity with AppleTalk and LocalTalk. Support for
|
|
Novell's IPX protocol is also included.
|
|
<P>
|
|
The full range of mail and news readers is available for Linux,
|
|
including <TT>elm</TT>, <TT>pine</TT>, <TT>rn</TT>, <TT>nn</TT>, and <TT>
|
|
tin</TT>. Whatever your preference, you can configure a Linux system to
|
|
send and receive electronic mail and news from all over the world.
|
|
<P>
|
|
The system provides a standard UNIX socket programming
|
|
interface. Virtually any program that uses TCP/IP can be ported to
|
|
Linux. The Linux X server also supports TCP/IP, and applications
|
|
running on other systems may use the display of your local system.
|
|
<P>
|
|
In Chapter <A HREF="#chapadvanced"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A>, we discuss the installation of
|
|
TCP/IP software, including SLIP and PPP.
|
|
<P>
|
|
UUCP (UNIX-to-UNIX Copy) is an older mechanism to transfer files,
|
|
electronic mail, and electronic news between UNIX
|
|
machines. Historically, UUCP machines are connected over telephone
|
|
lines via modem, but UUCP is able to transfer data over a TCP/IP
|
|
network as well. If you do not have access to a TCP/IP network or a
|
|
SLIP or PPP server, you can configure your system to send and receive
|
|
files and electronic mail using UUCP. See Chapter <A HREF="#chapadvanced"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A>
|
|
for more information.
|
|
<P>
|
|
<H2><A NAME="SECTION00345000000000000000">1.4.5 Telecommunications and BBS software.</A></H2>
|
|
<P>
|
|
If you have a modem, you'll be able to communicate with other machines
|
|
via telecommunications packages available for Linux. Many people use
|
|
telecommunications software to access bulletin board systems (BBS's)
|
|
as well as commercial, online services like Prodigy, CompuServe, and
|
|
America Online. People use modems to connect to UNIX systems at work
|
|
or school. Modems can send and receive faxes.
|
|
<P>
|
|
A popular communications package for Linux is <TT>seyon,</TT> which
|
|
provides a customizable, ergonomic interface undex X and has built-in
|
|
support for the Kermit and ZModem file transfer protocols. Other
|
|
telecommunications programs include C-Kermit, <TT>pcomm</TT>, and <TT>
|
|
minicom</TT>. These are similar to communications programs found on other
|
|
operating systems, and are quite easy to use.
|
|
<P>
|
|
If you do not have access to a SLIP or PPP server (see the previous
|
|
section), you can use <TT>term</TT> to multiplex your serial line. The
|
|
<TT>term</TT> program allows you to open more than one login session over
|
|
a modem connection. It lets you redirect X client connections to your
|
|
local X server via a serial line. Another software package, KA9Q,
|
|
implements a similar, SLIP-like interface.
|
|
<P>
|
|
Operating a Bulletin Board System (BBS) is a favorite hobby and means
|
|
of income for many people. Linux supports a wide range of BBS
|
|
software, most of which is more powerful than that available for other
|
|
operating systems. With a phone line, modem, and Linux, you can turn
|
|
your system into a BBS and provide dial-in access for users
|
|
worldwide. BBS software for Linux includes XBBS and UniBoard BBS
|
|
packages.
|
|
<P>
|
|
Most BBS software locks the user into a menu based system where only
|
|
certain functions and applications are available. An alternative to
|
|
BBS access is full UNIX access, which lets users dial into your system
|
|
and log in normally. This requires a fair amount of maintenance by
|
|
the system administrator, but providing public UNIX access is not
|
|
difficult. In addition to TCP/IP networking, you can make electronic
|
|
mail and news access available on your system.
|
|
<P>
|
|
If you do not have access to a TCP/IP network or UUCP feed, Linux lets
|
|
you communicate with BBS networks like FidoNet, which let you exchange
|
|
electronic news and mail over a telephone line. You can find more
|
|
information on telecommunications and BBS software under Linux in
|
|
Chapter <A HREF="#chapadvanced"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A>.
|
|
<P>
|
|
<H2><A NAME="SECTION00346000000000000000">1.4.6 World Wide Web.</A></H2>
|
|
<P>
|
|
It is worth noting that Linux includes web server software as well as
|
|
web browsers. The most common server is Apache. Thousands of Linux
|
|
systems run Apache on the Internet today, including the Linux
|
|
Resources site, <TT>www.linuxresources.com</TT>.
|
|
<P>
|
|
Linux distributions include different web browsers, and other browsers
|
|
can be downloaded from the Internet. Available browsers include Lynx,
|
|
Mosaic, Netscape, Arena, and Amaya.
|
|
<P>
|
|
Linux provides complete support for Java and CGI applets, and Perl is
|
|
a standard tool in the Linux programming environment.
|
|
<P>
|
|
<H2><A NAME="SECTION00347000000000000000">Interfacing and MS-DOS.</A></H2>
|
|
<P>
|
|
Various utilities exist to interface with MS-DOS. The most well-known
|
|
application is the Linux MS-DOS Emulator, which lets you run MS-DOS
|
|
applications directly from Linux. Although Linux and MS-DOS are
|
|
completely different operating systems, the 80386 protected-mode
|
|
environment allows MS-DOS applications to behave as if they were
|
|
running in their native 8086 environment.
|
|
<P>
|
|
The MS-DOS emulator is still under development, but many popular
|
|
applications run under it. Understandably, MS-DOS applications that
|
|
use bizarre or esoteric features of the system may never be supported,
|
|
because of the limitations inherent in any emulator. For example, you
|
|
shouldn't expect to run programs that use 80386 protected-mode
|
|
features, like Microsoft Windows (in 386 enhanced mode, that is).
|
|
<P>
|
|
Standard MS-DOS commands and utilities like <TT>PKZIP.EXE</TT> work under
|
|
the emulators, as do 4DOS, a <TT>COMMAND.COM</TT> replacement, FoxPro
|
|
2.0, Harvard Graphics, MathCad, Stacker 3.1, Turbo Assembler, Turbo
|
|
C/C++, Turbo Pascal, Microsoft Windows 3.0 (in real mode), and
|
|
WordPerfect 5.1.
|
|
<P>
|
|
The MS-DOS Emulator is meant mostly as an ad-hoc solution for those
|
|
who need MS-DOS for only a few applications and use Linux for
|
|
everything else. It's not meant to be a complete implementation of
|
|
MS-DOS. Of course, if the Emulator doesn't satisfy your needs, you
|
|
can always run MS-DOS as well as Linux on the same system. Using the
|
|
LILO boot loader, you can specify at boot time which operating system
|
|
to start. Linux can also coexist with other operating systems, like
|
|
OS/2.
|
|
<P>
|
|
Linux provides a seamless interface to transfer files between Linux
|
|
and MS-DOS. You can mount a MS-DOS partition or floppy under Linux,
|
|
and directly access MS-DOS files as you would any file.
|
|
<P>
|
|
Currently under development is <B>WINE</B>--a Microsoft Windows
|
|
emulator for the X Window System under Linux. Once WINE is complete,
|
|
users will be able to run MS-Windows applications directly from
|
|
Linux. This is similar to the commercial WABI Windows emulator from
|
|
Sun Microsystems, which is also available for Linux.
|
|
<P>
|
|
In Chapter <A HREF="#chapadvanced"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A>, we talk about the MS-DOS tools
|
|
available for Linux.
|
|
<P>
|
|
<H2><A NAME="SECTION00348000000000000000">1.4.8 Other applications.</A></H2>
|
|
<P>
|
|
A host of miscellaneous programs and utilities exist for Linux, as one
|
|
would expect of such a hodgepodge operating system. Linux's primary
|
|
focus is UNIX personal computing, but this is not the only field where
|
|
it excels. The selection of business and scientific software is
|
|
expanding, and commercial software vendors have begun to contribute to
|
|
the growing pool Linux applications.
|
|
<P>
|
|
Several relational databases are available for Linux, including
|
|
Postgres, Ingres, and Mbase. These are full-featured, professional,
|
|
client/server database applications, similar to those found on other
|
|
UNIX platforms. Many commercial database systems are available as
|
|
well.
|
|
<P>
|
|
Scientific computing applications include FELT (finite element
|
|
analysis); <TT>gnuplot</TT> (data plotting and analysis); Octave (a
|
|
symbolic mathematics package similar to MATLAB); <TT>xspread</TT> (a
|
|
spreadsheet calculator); <TT>xfractint</TT> (an X-based port of the
|
|
popular Fractint fractal generator); and <TT>xlispstat</TT>
|
|
(statistics). Other applications include SPICE (circuit design and
|
|
analysis) and Khoros (image and digital signal processing and
|
|
visualization). Commercial packages like Maple and MathLab are
|
|
available.
|
|
<P>
|
|
Many more applications have been ported to Linux. If you absolutely
|
|
cannot find what you need, you can attempt to port the application
|
|
from another platform to Linux yourself. Whatever your field, porting
|
|
standard UNIX applications to Linux is straightforward. Linux's
|
|
complete UNIX programming environment is sufficient to serve as the
|
|
base for any scientific application.
|
|
<P>
|
|
Linux also has its share of games. These include classic text based
|
|
dungeon games like Nethack and Moria; <B>MUDs</B> (multi-user dungeons,
|
|
which allow many users to interact in a text-based adventure) like
|
|
DikuMUD and TinyMUD; and a slew of X games like <TT>xtetris</TT>, <TT>
|
|
netrek</TT>, and <TT>xboard</TT>, the X11 version of <TT>gnuchess</TT>. The
|
|
popular shoot-em-up, arcade-style game, Doom, has also been ported to
|
|
Linux.
|
|
<P>
|
|
For audiophiles, Linux supports various sound cards and related
|
|
software, like CDplayer, which makes a CD-ROM drive into an audio CD
|
|
player, MIDI sequencers and editors, which let you compose music for
|
|
playback through a synthesizer or other MIDI controlled instrument,
|
|
and sound editors for digitized sounds.
|
|
<P>
|
|
Can't find the application you're looking for? The Linux Software Map,
|
|
described in Appendix <A HREF="app-sources/node1.html">A</A>, lists software packages
|
|
which have been written or ported to Linux. Another way to find Linux
|
|
applications is to look at the <TT>INDEX</TT> files found on Linux FTP
|
|
sites, if you have Internet access.
|
|
<P>
|
|
Most freely-distributable, UNIX based software will compile on Linux
|
|
with little difficulty. If all else fails, you can write the
|
|
application yourself. If you're looking for a commercial application,
|
|
there may be a free ``clone'' available. Or, you can encourage the
|
|
software company to consider releasing a binary version for
|
|
Linux. Several individuals have contacted software companies and asked
|
|
them to port their applications to Linux, with various degrees of
|
|
success.
|
|
<P>
|
|
<H1><A NAME="SECTION00350000000000000000">1.5 Copyright issues.</A></H1>
|
|
<P>
|
|
<A NAME="secintrogpl">
|
|
<P>
|
|
Linux is covered by what is known as the GNU <EM>General Public
|
|
License</EM>, or <B>GPL</B>. The GPL was developed for the GNU project by
|
|
the Free Software Foundation and specifies several provisions for the
|
|
distribution and modification of free software. <EM>Free,</EM> in this
|
|
sense, refers to distribution, not cost. The GPL has always been
|
|
subject to misinterpretation. We hope that this summary will help you
|
|
understand the extent and goals of the GPL and its effect on Linux. A
|
|
complete copy of the GPL is printed in Appendix <A
|
|
HREF="app-gpl/node1.html">C</A>.
|
|
<P>
|
|
Originally, Linus Torvalds released Linux under a license more
|
|
restrictive than the GPL, which allowed the software to be freely
|
|
distributed and modified, but prevented any money from changing hands
|
|
for its distribution and use. On the other hand, the GPL allows people
|
|
to sell and profit from free software, but does not allow them to
|
|
restrict another's right to distribute the software in any way.
|
|
<P>
|
|
First, it should be explained that free software that is covered by
|
|
the GPL is not in the public domain. Public domain software by
|
|
definition is not copyrighted and is literally owned by the
|
|
public. Software covered by the GPL, on the other hand, is copyrighted
|
|
by the author. The software is protected by standard international
|
|
copyright laws, and the author is legally defined. The GPL provides
|
|
for software which may be freely distributed but is not in the public
|
|
domain.
|
|
<P>
|
|
GPL-licensed software is also not shareware. Generally, shareware is
|
|
owned and copyrighted by an author who requires users to send in money
|
|
for its use. Software covered by the GPL may be distributed and used
|
|
free of charge.
|
|
<P>
|
|
The GPL also lets people take, modify, and distribute their own
|
|
versions of the software. However, any derived works of GPL software
|
|
must also be covered by the GPL. In other words, a company may not
|
|
take Linux, modify it, and sell it under a restrictive license. If the
|
|
software is derived from Linux, that software must be covered under
|
|
the GPL also.
|
|
<P>
|
|
The GPL allows free software to be distributed and used free of
|
|
charge. It also lets a person or organization distribute GPL software
|
|
for a fee, and even make a profit from its sale and
|
|
distribution. However, a distributor of GPL software cannot take those
|
|
rights away from a purchaser. If you purchase GPL software from a
|
|
third-party source, you may distribute the software for free, and sell
|
|
it yourself as well.
|
|
<P>
|
|
This may sound like a contradiction. Why sell software when the GPL
|
|
allows you to get it for free? Let's say that a company decided to
|
|
bundle a large amount of free software on a CD-ROM and distribute
|
|
it. That company would need to charge for the overhead of producing
|
|
and distributing the CD-ROM, and may even decide to profit from the
|
|
sales of the software. This is allowed by the GPL.
|
|
<P>
|
|
Organizations that sell free software must follow certain restrictions
|
|
set forth in the GPL. They cannot restrict the rights of users who
|
|
purchase the software. If you buy a CD-ROM that contains GPL software,
|
|
you can copy and distribute the CD-ROM free of charge, or resell it
|
|
yourself. Distributors must make obvious to users that the software
|
|
is covered by the GPL. Distributors must also provide, free of charge,
|
|
the complete source code to the software distributed. This permits
|
|
anyone who purchases GPL software to make modifications to that
|
|
software.
|
|
<P>
|
|
Allowing a company to distribute and sell free software is a good
|
|
thing. Not everyone has access to the Internet and the ability to
|
|
download software for free. Many organizations sell Linux on
|
|
diskette, tape, or CD-ROM via mail order, and profit from the
|
|
sales. Linux developers may never see any of this profit; that is the
|
|
understanding reached between the developer and the distributor when
|
|
software is licensed by the GPL. In other words, Linus Torvalds knew
|
|
that companies may wish to sell Linux, and that he might not see a
|
|
penny of the profits.
|
|
<P>
|
|
In the free software world, the important issue is not money. The
|
|
goal of free software is always to develop and distribute fantastic
|
|
software and allow anyone to obtain and use it. In the next section,
|
|
we'll discuss how this applies to the development of Linux.
|
|
<P>
|
|
<H1><A NAME="SECTION00360000000000000000">1.6 The design and philosophy of Linux.</A></H1>
|
|
<P>
|
|
<A NAME="secintrodesign">
|
|
<P>
|
|
New users often have a few misconceptions and false expectations about
|
|
Linux. It is important to understand the philosophy and design of
|
|
Linux in order to use it effectively. We'll start by describing how
|
|
Linux is <EM>not</EM> designed.
|
|
<P>
|
|
In commercial UNIX development houses, the entire system is developed
|
|
under a rigorous quality assurance policy that utilizes source and
|
|
revision control systems, documentation, and procedures to report and
|
|
resolve bugs. Developers may not add features or change key sections
|
|
of code on a whim. They must validate the change as a response to a
|
|
bug report and subsequently ``check in'' all changes to the source
|
|
control system, so that the changes may be reversed if necessary. Each
|
|
developer is assigned one or more parts of the system code, and only
|
|
that developer can alter those sections of the code while it is
|
|
``checked out'' (that is, while the code is under his or her control).
|
|
<P>
|
|
Organizationally, a quality assurance department runs rigorous tests
|
|
on each new version of the operating system and reports any bugs.
|
|
The developers fix these bugs as reported. A complex system of
|
|
statistical analysis is used to ensure that a certain percentage of
|
|
bugs are fixed before the next release, and that the operating system
|
|
as a whole passes certain release criteria.
|
|
<P>
|
|
The software company, quite reasonably, must have quantitative proof
|
|
that the next revision of the operating system is ready to be shipped;
|
|
hence, the gathering and analysis of statistics about the performance
|
|
of the operating system. It is a big job to develop a commercial UNIX
|
|
system, often large enough to employ hundreds, if not thousands, of
|
|
programmers, testers, documenters, and administrative personnel. Of
|
|
course, no two commercial UNIX vendors are alike, but that is the
|
|
general picture.
|
|
<P>
|
|
The Linux model of software development discards the entire concept of
|
|
organized development, source code control systems, structured bug
|
|
reporting, and statistical quality control. Linux is, and likely
|
|
always will be, a hacker's operating system. (By <EM>hacker,</EM> I mean
|
|
a feverishly dedicated programmer who enjoys exploiting computers and
|
|
does interesting things with them. This is the original definition of
|
|
the term, in contrast to the connotation of <EM>hacker</EM> as a computer
|
|
wrongdoer, or outlaw.)
|
|
<P>
|
|
There is no single organization responsible for developing
|
|
Linux. Anyone with enough know-how has the opportunity to help develop
|
|
and debug the kernel, port new software, write documentation, and help
|
|
new users. For the most part, the Linux community communicates via
|
|
mailing lists and Usenet newsgroups. Several conventions have sprung
|
|
up around the development effort. Anyone who wishes to have their
|
|
code included in the ``official'' kernel, mails it to Linus Torvalds.
|
|
He will test and include the code in the kernel as long as it doesn't
|
|
break things or go against the overall design of the system.
|
|
<P>
|
|
The system itself is designed using an open-ended, feature-minded
|
|
approach. The number of new features and critical changes to the
|
|
system has recently diminished, and the general rule is that a new
|
|
version of the kernel will be released every few weeks. Of course,
|
|
this is a rough figure. New release criteria include the number of
|
|
bugs to be fixed, feedback from users testing pre-release versions of
|
|
the code, and the amount of sleep Linus Torvalds has had this week.
|
|
<P>
|
|
Suffice it to say that not every bug is fixed, nor is every problem
|
|
ironed out between releases. As long as the revision appears to be
|
|
free of critical or recurring bugs, it is considered to be stable, and
|
|
the new version is released. The thrust behind Linux development is
|
|
not to release perfect, bug-free code: it is to develop a free UNIX
|
|
implementation. Linux is for the developers, more than anyone
|
|
else.
|
|
<P>
|
|
Anyone who has a new feature or software application generally makes
|
|
it available in an <B>alpha version</B>--that is, a test version, for
|
|
those brave users who want to hash out problems in the initial
|
|
code. Because the Linux community is largely based on the Internet,
|
|
alpha software is usually uploaded to one or more Linux FTP sites (see
|
|
Appendix <A HREF="app-ftp/node1.html">B</A>), and a message is posted to one of the
|
|
Linux Usenet newsgroups about how to obtain and test the code. Users
|
|
who download and test alpha software can then mail results, bug fixes,
|
|
and questions to the author.
|
|
<P>
|
|
After the initial bugs have been fixed, the code enters a <B>beta
|
|
test</B> stage, in which it is usually considered stable but not
|
|
complete. It works, but not all of the features may be present. The
|
|
software may also go directly to a final stage, in which the software
|
|
is considered complete and usable.
|
|
<P>
|
|
Keep in mind that these are only conventions--not rules. Some
|
|
developers may feel so confident of their software that they decide it
|
|
isn't necessary to release alpha or test versions. It is always up to
|
|
the developer to make these decisions.
|
|
<P>
|
|
You might be amazed at how such an unstructured system of volunteers
|
|
who program and debug a complete UNIX system gets anything done at
|
|
all. As it turns out, this is one of the most efficient and motivated
|
|
development efforts ever employed. The entire Linux kernel is written
|
|
<EM>from scratch</EM>, without code from proprietary sources. It takes a
|
|
huge amount of work to port all the free software under the sun to
|
|
Linux. Libraries are written and ported, file systems are developed,
|
|
and hardware drivers are written for many popular devices--all due to
|
|
the work of volunteers.
|
|
<P>
|
|
Linux software is generally released as a <B>distribution</B>, a set of
|
|
prepackaged software which comprises an entire system. It would be
|
|
difficult for most users to build a complete system from the ground
|
|
up, starting with the kernel, adding utilities, and installing all of
|
|
the necessary software by hand. Instead, many software distributions
|
|
are available which include everything necessary to install and run a
|
|
complete system. There is no single, standard distribution--there are
|
|
many, and each has its own advantages and disadvantages. We describe
|
|
installation of the various Linux distributions starting on
|
|
page <A HREF="#secinstalldistributions"><IMG ALIGN=BOTTOM ALT="gif" SRC="cross_ref_motif.gif"></A>.
|
|
<P>
|
|
<H1><A NAME="SECTION00370000000000000000">1.7 Differences between Linux and other operating systems.</A></H1>
|
|
<P>
|
|
<A NAME="secintrodifferences"> </A>
|
|
<P>
|
|
It is important to understand the differences between Linux and other
|
|
operating systems, like MS-DOS, OS/2, and the other implementations of
|
|
UNIX for personal computers. First of all, Linux coexists happily with
|
|
other operating systems on the same machine: you can run MS-DOS and
|
|
OS/2 along with Linux on the same system without problems. There are
|
|
even ways to interact between various operating systems, as we'll see.
|
|
<P>
|
|
<H5><A NAME="SECTION00370001000000000000">Why use Linux?</A></H5>
|
|
<P>
|
|
Why use Linux, instead of a well known, well tested, and
|
|
well documented commercial operating system? We could give you a
|
|
thousand reasons. One of the most important, however, is that Linux is
|
|
an excellent choice for personal UNIX computing. If you're a UNIX
|
|
software developer, why use MS-DOS at home? Linux allows you to
|
|
develop and test UNIX software on your PC, including database and
|
|
X Window System applications. If you're a student, chances are that
|
|
your university computing systems run UNIX. You can run your own UNIX
|
|
system and tailor it to your needs. Installing and running Linux is
|
|
also an excellent way to learn UNIX if you don't have access to other
|
|
UNIX machines.
|
|
<P>
|
|
But let's not lose sight. Linux isn't only for personal UNIX users. It
|
|
is robust and complete enough to handle large tasks, as well as
|
|
distributed computing needs. Many businesses--especially small
|
|
ones--have moved their systems to Linux in lieu of other UNIX based,
|
|
workstation environments. Universities have found that Linux is
|
|
perfect for teaching courses in operating systems design. Large,
|
|
commercial software vendors have started to realize the opportunities
|
|
which a free operating system can provide.
|
|
<P>
|
|
<H5><A NAME="SECTION00370002000000000000">Linux vs. MS-DOS.</A></H5>
|
|
<P>
|
|
It's not uncommon to run both Linux and MS-DOS on the same system.
|
|
Many Linux users rely on MS-DOS for applications like word processing.
|
|
Linux provides its own analogs for these applications, but you might
|
|
have a good reason to run MS-DOS as well as Linux. If your
|
|
dissertation is written using WordPerfect for MS-DOS, you may not be
|
|
able to convert it easily to TeX or some other format. Many
|
|
commercial applications for MS-DOS aren't available for Linux yet, but
|
|
there's no reason that you can't use both.
|
|
<P>
|
|
MS-DOS does not fully utilize the functionality of 80386 and 80486
|
|
processors. On the other hand, Linux runs completely in the
|
|
processor's protected mode, and utilizes all of its features. You can
|
|
directly access all of your available memory (and beyond, with virtual
|
|
RAM). Linux provides a complete UNIX interface which is not available
|
|
under MS-DOS. You can easily develop and port UNIX applications to
|
|
Linux, but under MS-DOS you are limited to a subset of UNIX
|
|
functionality.
|
|
<P>
|
|
Linux and MS-DOS are different entities. MS-DOS is inexpensive
|
|
compared to other commercial operating systems and has a strong
|
|
foothold in the personal computer world. No other operating system
|
|
for the personal computer has reached the level of popularity of
|
|
MS-DOS, because justifying spending $1,000 for other operating
|
|
systems alone is unrealistic for many users. Linux, however, is free,
|
|
and you may finally have the chance to decide for yourself.
|
|
<P>
|
|
You can judge Linux vs. MS-DOS based on your expectations and
|
|
needs. Linux is not for everybody. If you always wanted to run a
|
|
complete UNIX system at home, without the high cost of other UNIX
|
|
implementations for personal computers, Linux may be what you're
|
|
looking for.
|
|
<P>
|
|
<H5><A NAME="SECTION00370003000000000000">Linux vs. The Other Guys.</A></H5>
|
|
<P>
|
|
A number of other advanced operating systems have become popular in
|
|
the PC world. Specifically, IBM's OS/2 and Microsoft Windows have
|
|
become popular for users upgrading from MS-DOS.
|
|
<P>
|
|
Both OS/2 and Windows NT are full featured multitasking operating
|
|
systems, like Linux. OS/2, Windows NT, and Linux support roughly the
|
|
same user interface, networking, and security features. However, the
|
|
real difference between Linux and The Other Guys is the fact that
|
|
Linux is a version of UNIX, and benefits from contributions of the
|
|
UNIX community at large.
|
|
<P>
|
|
What makes UNIX so important? Not only is it the most popular
|
|
operating system for multiuser machines, it is a foundation of the
|
|
free software world. Much of the free software available on the
|
|
Internet is written specifically for UNIX systems.
|
|
<P>
|
|
There are many implementations of UNIX from many vendors. No single
|
|
organization is responsible for its distribution. There is a large
|
|
push in the UNIX community for standardization in the form of open
|
|
systems, but no single group controls this design. Any vendor (or, as
|
|
it turns out, any hacker) may develop a standard implementation of
|
|
UNIX.
|
|
<P>
|
|
OS/2 and Microsoft operating systems, on the other hand, are
|
|
proprietary. The interface and design are controlled by a single
|
|
corporation, which develops the operating system code. In one sense,
|
|
this kind of organization is beneficial because it sets strict
|
|
standards for programming and user interface design, unlike those
|
|
found even in the open systems community.
|
|
<P>
|
|
Several organizations have attempted the difficult task of
|
|
standardizing the UNIX programming interface. Linux, in particular, is
|
|
mostly compliant with the POSIX.1 standard. As time goes by, it is
|
|
expected that the Linux system will adhere to other standards, but
|
|
standardization is not the primary goal of Linux development.
|
|
<P>
|
|
<H5><A NAME="SECTION00370004000000000000">Linux vs. other implementations of UNIX.</A></H5>
|
|
<P>
|
|
Several other implementations of UNIX exist for 80386 or better
|
|
personal computers. The 80386 architecture lends itself to UNIX, and
|
|
vendors have taken advantage of this.
|
|
<P>
|
|
Oher implementations of UNIX for the personal computer are similar to
|
|
Linux. Almost all commercial versions of UNIX support roughly the
|
|
same software, programming environment, and networking features.
|
|
However, there are differences between Linux and commercial versions
|
|
of UNIX.
|
|
<P>
|
|
Linux supports a different range of hardware than commercial
|
|
implementations. In general, Linux supports most well-known hardware
|
|
devices, but support is still limited to hardware which the developers
|
|
own. Commercial UNIX vendors tend to support more hardware at the
|
|
outset, but the list of hardware devices which Linux supports is
|
|
expanding continuously. We'll cover the hardware requirements for
|
|
Linux in Section <A HREF="#secintrohardware">1.8</A>.
|
|
<P>
|
|
Many users report that Linux is at least as stable as commercial UNIX
|
|
systems. Linux is still under development, but the two-pronged
|
|
release philosophy has made stable versions available without impeding
|
|
development.
|
|
<P>
|
|
The most important factor for many users is price. Linux software is
|
|
free if you can download it from the Internet or another computer
|
|
network. If you do not have Internet access, you can still purchase
|
|
Linux inexpensively via mail order on diskette, tape, or CD-ROM.
|
|
<P>
|
|
Of course, you may copy Linux from a friend who already has the
|
|
software, or share the purchase cost with someone else. If you plan to
|
|
install Linux on a large number of machines, you need only purchase a
|
|
single copy of the software--Linux is not distributed with a ``single
|
|
machine'' license.
|
|
<P>
|
|
The value of commercial UNIX implementations should not be demeaned.
|
|
In addition to the price of the software itself, one often pays for
|
|
documentation, support, and quality assurance. These are very
|
|
important factors for large institutions, but personal computer users
|
|
may not require these benefits. In any case, many businesses and
|
|
universities have found that running Linux in a lab of inexpensive
|
|
personal computers is preferable to running a commercial version of
|
|
UNIX in a lab of workstations. Linux can provide workstation
|
|
functionality on a personal computer at a fraction of the cost.
|
|
<P>
|
|
Linux systems have travelled the high seas of the North Pacific, and
|
|
manage telecommunications and data analysis for an oceanographic
|
|
research vessel. Linux systems are used at research stations in
|
|
Antarctica. Several hospitals maintain patient records on Linux
|
|
systems.
|
|
<P>
|
|
Other free or inexpensive implementations of UNIX are available for
|
|
the 80386 and 80486. One of the best known is 386BSD, an
|
|
implementation of BSD UNIX for the 80386. The 386BSD package is
|
|
comparable to Linux in many ways, but which one is better depends on
|
|
your needs and expectations. The only strong distinction we can make
|
|
is that Linux is developed openly, and any volunteer can aid in the
|
|
development process, while 386BSD is developed by a closed team of
|
|
programmers. Because of this, serious philosophical and design
|
|
differences exist between the two projects. The goal of Linux is to
|
|
develop a complete UNIX system from scratch (and have a lot of fun in
|
|
the process), and the goal of 386BSD is in part to modify the existing
|
|
BSD code for use on the 80386.
|
|
<P>
|
|
NetBSD is another port of the BSD NET/2 distribution to several
|
|
machines, including the 80386. NetBSD has a slightly more open
|
|
development structure, and is comparable to 386BSD in many respects.
|
|
<P>
|
|
Another project of note is HURD, an effort by the Free Software
|
|
Foundation to develop and distribute a free version of UNIX for many
|
|
platforms. Contact the Free Software Foundation (the address is given in
|
|
Appendix <A HREF="app-gpl/node1.html">C</A>) for more information about this project.
|
|
At the time of this writing, HURD is still under development.
|
|
<P>
|
|
Other inexpensive versions of UNIX exist as well, like Minix, an
|
|
academic but useful UNIX clone upon which early development of Linux
|
|
was based. Some of these implementations are mostly of academic
|
|
interest, while others are full fledged systems.
|
|
<P>
|
|
<H1><A NAME="SECTION00380000000000000000">1.8 Hardware requirements. </A></H1>
|
|
<P>
|
|
<A name="secintrohardware">
|
|
<P>
|
|
You must be convinced by now of how wonderful Linux is, and of all the
|
|
great things it can do for you. However, before you rush out and
|
|
install Linux, you need to be aware of its hardware requirements and
|
|
limitations.
|
|
<P>
|
|
Keep in mind that Linux is developed by users. This means, for the
|
|
most part, that the hardware supported by Linux is that which the
|
|
users and developers have access to. As it turns out, most popular
|
|
hardware and peripherals for personal computers are supported. Linux
|
|
supports more hardware than some commercial implementations of
|
|
UNIX. However, some obscure devices aren't supported yet.
|
|
<P>
|
|
Another drawback of hardware support under Linux is that many
|
|
companies keep their hardware interfaces proprietary. Volunteer Linux
|
|
developers can't write drivers for the devices because the
|
|
manufacturer does not make the technical specifications public. Even
|
|
if Linux developers could develop drivers for proprietary devices,
|
|
they would be owned by the company which owns the device interface,
|
|
which violates the GPL. Manufacturers that maintain proprietary
|
|
interfaces write their own drivers for operating systems like MS-DOS
|
|
and Microsoft Windows. Users and third-party developers never need to
|
|
know the details of the interface.
|
|
<P>
|
|
In some cases, Linux programmers have attempted to write hackish
|
|
device drivers based on assumptions about the interface. In other
|
|
cases, developers work with the manufacturer and try to obtain
|
|
information about the device interface, with varying degrees of
|
|
success.
|
|
<P>
|
|
In the following sections, we attempt to summarize the hardware
|
|
requirements for Linux. The Linux Hardware HOWTO (see
|
|
Section <A HREF="#secintrosources">1.9</A>) contains a more complete listing of
|
|
hardware supported by Linux.
|
|
<P>
|
|
<B>Disclaimer:</B> Much hardware support for Linux is in the
|
|
development stage. Some distributions may or may not support
|
|
experimental features. This section lists hardware which has been
|
|
supported for some time and is known to be stable. When in doubt,
|
|
consult the documentation of your Linux distribution. See
|
|
Section <A HREF="#secinstalldistrib">2.2</A> for more information about Linux
|
|
distributions.
|
|
<P>
|
|
Linux is available for many platforms in addition to Intel 80x86
|
|
systems. These include Macintosh, Amiga, Sun SparcStation, and
|
|
Digital Equipment Corporation Alpha based systems. In this book,
|
|
however, we focus on garden-variety Intel 80386, 80486, and Pentium
|
|
processors, and clones by manufacturers like AMD, Cyrix, and IBM.
|
|
<P>
|
|
<H5><A NAME="SECTION00380001000000000000">Motherboard and CPU requirements.</A></H5>
|
|
<P>
|
|
Linux currently supports systems with the Intel 80386, 80486, or
|
|
Pentium CPU, including all variations like the 80386SX, 80486SX,
|
|
80486DX, and 80486DX2. Non-Intel clones work with Linux as well. Linux
|
|
has also been ported to the DEC Alpha and the Apple PowerMac.
|
|
<P>
|
|
If you have an 80386 or 80486SX, you may also wish to use a math
|
|
coprocessor, although one isn't required. The Linux kernel can
|
|
perform FPU emulation if the machine doesn't have a coprocessor. All
|
|
standard FPU couplings are supported, including IIT, Cyrix FasMath,
|
|
and Intel.
|
|
<P>
|
|
Most common PC motherboards are based on the PCI bus but also offer
|
|
ISA slots. This configuration is supported by Linux, as are EISA and
|
|
VESA-bus systems. IBM's MicroChannel (MCA) bus, found on most IBM PS/2
|
|
systems, is significantly different, and support has been recently
|
|
added.
|
|
<P>
|
|
<H5><A NAME="SECTION00380002000000000000">Memory requirements.</A></H5>
|
|
<P>
|
|
Linux requires very little memory, compared to other advanced
|
|
operating systems. You should have 4 megabytes of RAM at the very
|
|
least, and 16 megabytes is strongly recommended. The more memory you
|
|
have, the faster the system will run. Some distributions require more
|
|
RAM for installation.
|
|
<P>
|
|
Linux supports the full 32-bit address range of the processor. In
|
|
other words, it uses all of your RAM automatically.
|
|
<P>
|
|
Linux will run with only 4 megabytes of RAM, including bells and
|
|
whistles like the X Window System and <TT>emacs</TT>. However, having
|
|
more memory is almost as important as having a faster processor. For
|
|
general use, 16 megabytes is enough, and 32 megabytes, or more, may be
|
|
needed for systems with a heavy user load.
|
|
<P>
|
|
Most Linux users allocate a portion of their hard drive as swap space,
|
|
which is used as <B>virtual RAM</B>. Even if your machine has more than
|
|
16 megabytes of physical RAM, you may wish to use swap space. It is
|
|
no replacement for physical RAM, but it can let your system run larger
|
|
applications by swapping inactive portions of code to disk. The
|
|
amount of swap space that you should allocate depends on several
|
|
factors; we'll come back to this question in
|
|
Chapter <A HREF="node4.html#chapinstallnum">2</A>.
|
|
<P>
|
|
<H5><A NAME="SECTION00380003000000000000">Hard drive controller requirements.</A></H5>
|
|
<P>
|
|
It is possible to run Linux from a floppy diskette, or, for some
|
|
distributions, a live file system on CD-ROM, but for good performance
|
|
you need hard disk space. Linux can co-exist with other operating
|
|
systems--it only needs one or more disk partitions.
|
|
<P>
|
|
Linux supports all IDE and EIDE controllers as well as older MFM and
|
|
RLL controllers. Most, but not all, ESDI controllers are supported.
|
|
The general rule for non-SCSI hard drive and floppy controllers is
|
|
that if you can access the drive from MS-DOS or another operating
|
|
system, you should be able to access it from Linux.
|
|
<P>
|
|
Linux also supports a number of popular SCSI drive controllers. This
|
|
includes most Adaptec and Buslogic cards as well as cards based on the
|
|
NCR chip sets.
|
|
<P>
|
|
<H5><A NAME="SECTION00380004000000000000">Hard drive space requirements.</A></H5>
|
|
<P>
|
|
Of course, to install Linux, you need to have some amount of free
|
|
space on your hard drive. Linux will support more than one hard drive
|
|
on the same machine; you can allocate space for Linux across multiple
|
|
drives if necessary.
|
|
<P>
|
|
How much hard drive space depends on your needs and the software
|
|
you're installing. Linux is relatively small, as UNIX implementations
|
|
go. You could run a system in 20 megabytes of disk space. However,
|
|
for expansion and larger packages like X, you need more space. If you
|
|
plan to let more than one person use the machine, you need to allocate
|
|
storage for their files. Realistic space requirements range from 200
|
|
megabytes to one gigabyte or more.
|
|
<P>
|
|
Also, you will likely want to allocate disk space as virtual RAM. We
|
|
will discuss installing and using swap space in
|
|
Chapter <A HREF="node4.html#chapinstallnum">2</A>.
|
|
<P>
|
|
Each Linux distribution comes with literature to help you gauge the
|
|
precise amount of storage required for your software configuration.
|
|
Look at the information which comes with your distribution or the
|
|
appropriate installation section in Chapter 2.
|
|
<P>
|
|
<H5><A NAME="SECTION00380005000000000000">Monitor and video adaptor requirements.</A></H5>
|
|
<P>
|
|
Linux supports standard Hercules, CGA, EGA, VGA, IBM monochrome, Super
|
|
VGA, and many accelerated video cards, and monitors for the default,
|
|
text-based interface. In general, if the video card and monitor work
|
|
under an operating system like MS-DOS, the combination should work
|
|
fine under Linux. However, original IBM CGA cards suffer from ``snow''
|
|
under Linux, which is not pleasant to view.
|
|
<P>
|
|
Graphical environments like X have video hardware requirements of
|
|
their own. Rather than list them here, we relegate that discussion to
|
|
Section <A HREF="node7.html#secxwindowsreqs">5.1</A>. Popular video cards are supported
|
|
and new card support is added regularly.
|
|
<P>
|
|
<H5><A NAME="SECTION00380006000000000000">Miscellaneous hardware.</A></H5>
|
|
<P>
|
|
You may also have devices like a CD-ROM drive, mouse, or sound card,
|
|
and may be interested in whether or not this hardware is supported by
|
|
Linux.
|
|
<P>
|
|
<H5><A NAME="SECTION00380007000000000000">Mice and other pointing devices.</A></H5>
|
|
<P>
|
|
Typically, a mouse is used only in graphical environments like
|
|
X. However, several Linux applications that are not associated with a
|
|
graphical environment also use mice.
|
|
<P>
|
|
Linux supports standard serial mice like Logitech, MM series,
|
|
Mouseman, Microsoft (2-button), and Mouse Systems (3-button). Linux
|
|
also supports Microsoft, Logitech, and ATIXL bus mice, and the PS/2
|
|
mouse interface.
|
|
<P>
|
|
Pointing devices that emulate mice, like trackballs and touchpads,
|
|
should work also.
|
|
<P>
|
|
<H5><A NAME="SECTION00380008000000000000">CD-ROM drives.</A></H5>
|
|
<P>
|
|
Many common CD-ROM drives attach to standard IDE controllers. Another
|
|
common interface for CD-ROM is SCSI. SCSI support includes multiple
|
|
logical units per device so you can use CD-ROM ``jukeboxes.''
|
|
Additionally, a few proprietary interfaces, like the NEC CDR-74, Sony
|
|
CDU-541 and CDU-31a, Texel DM-3024, and Mitsumi are supported.
|
|
<P>
|
|
Linux supports the standard ISO 9660 file system for CD-ROMs, and the
|
|
High Sierra file system extensions.
|
|
<P>
|
|
<H5><A NAME="SECTION00380009000000000000">Tape drives.</A></H5>
|
|
<P>
|
|
Any SCSI tape drive, including quarter inch, DAT, and 8MM are
|
|
supported, if the SCSI controller is supported. Devices that connect
|
|
to the floppy controller like floppy tape drives are supported as
|
|
well, as are some other interfaces, like QIC-02.
|
|
<P>
|
|
<H5><A NAME="SECTION003800010000000000000">Printers.</A></H5>
|
|
<P>
|
|
Linux supports the complete range of parallel printers. If MS-DOS or
|
|
some other operating system can access your printer from the parallel
|
|
port, Linux should be able to access it, too. Linux printer software
|
|
includes the UNIX standard <TT>lp</TT> and <TT>lpr</TT> software. This
|
|
software allows you to print remotely via a network, if you have one.
|
|
Linux also includes software that allows most printers to handle
|
|
PostScript files.
|
|
<P>
|
|
<H5><A NAME="SECTION003800011000000000000">Modems.</A></H5>
|
|
<P>
|
|
As with printer support, Linux supports the full range of serial
|
|
modems, both internal and external. A great deal of telecommunications
|
|
software is available for Linux, including Kermit, <TT>pcomm</TT>, <TT>
|
|
minicom</TT>, and <TT>seyon</TT>. If your modem is accessible from another
|
|
operating system on the same machine, you should be able to access it
|
|
from Linux with no difficulty.
|
|
<P>
|
|
<H5><A NAME="SECTION003800012000000000000">Ethernet cards.</A></H5>
|
|
<P>
|
|
Many popular Ethernet cards and LAN adaptors are supported by Linux.
|
|
Linux also supports some FDDI, frame relay, and token ring cards, and
|
|
all Arcnet cards. A list of supported network cards is included in
|
|
the kernel source of your distribution.
|
|
<P>
|
|
<H1><A NAME="SECTION00390000000000000000">1.9 Sources of Linux information.</A></H1>
|
|
<P>
|
|
<A name="secintrosources">
|
|
<P>
|
|
Many other sources of information about Linux are available. In
|
|
particular, a number of books about UNIX in general will be of use,
|
|
especially for readers unfamiliar with UNIX. We suggest that you
|
|
peruse one of these books before attempting to brave the jungles of
|
|
Linux.
|
|
<P>
|
|
Information is also available online in electronic form. You must have
|
|
access to an online network like the Internet, Usenet, or Fidonet to
|
|
access the information. A good place to start is <TT>
|
|
www.linuxresources.com</TT> (see Appendix <A
|
|
HREF="app-sources/node1.html">A</A>).
|
|
If you do not, you might be able to find
|
|
someone who is kind enough to give you hard copies of the documents.
|
|
<P>
|
|
<H2><A NAME="SECTION00391000000000000000">1.9.1 Online documents.</A></H2>
|
|
<P>
|
|
Many Linux documents are available via anonymous FTP from Internet
|
|
archive sites around the world and networks like Fidonet and
|
|
CompuServe. Linux CD-ROM distributions also contain the documents
|
|
mentioned here. If you are can send mail to Internet sites, you may be
|
|
able to retrieve these files using one of the FTP e-mail servers that
|
|
mail you the documents or files from the FTP sites. See
|
|
Appendix <A HREF="app-ftp/node1.html">B</A> for more information on using FTP
|
|
e-mail servers.
|
|
<P>
|
|
A list of well-known Linux archive sites is given in
|
|
Appendix <A HREF="app-ftp/node1.html">B</A>. To reduce network traffic, you should
|
|
use a FTP site that is geographically close to you.
|
|
<P>
|
|
Appendix <A HREF="app-sources/node1.html">A</A> contains a partial list of the Linux
|
|
documents available via anonymous FTP. The filenames vary depending on
|
|
the site. Most sites keep Linux-related documents in the <TT>docs</TT>
|
|
subdirectory of their Linux archive. For example, the FTP site <TT>
|
|
sunsite.unc.edu</TT>, keeps Linux files in <TT>/pub/Linux</TT>, with
|
|
Linux-related documentation in <TT>/pub/Linux/docs</TT>.
|
|
<P>
|
|
Examples of available online documents are <EM>Linux Frequently Asked
|
|
Questions with Answers,</EM> a collection of frequently asked questions
|
|
about Linux; Linux HOWTO documents, which describe specific aspects of
|
|
the system, like the Installation HOWTO, Printing HOWTO, and Ethernet
|
|
HOWTO; and the <EM>Linux META-FAQ,</EM> which is a list of information
|
|
sources on the Internet.
|
|
<P>
|
|
Many of these documents are also regularly posted to one or more
|
|
Linux-related Usenet newsgroups; see Section <A HREF="node3.html#secintrousenet">1.9.4</A>
|
|
below.
|
|
<P>
|
|
<H2><A NAME="SECTION00392000000000000000">1.9.2 Linux on the World Wide Web.</A></H2>
|
|
<P>
|
|
<A NAME="secintroldphomepage"> </A>
|
|
The Linux Documentation Project Home Page is on the World Wide
|
|
Web at
|
|
<TT>http://sunsite.unc.edu/LDP</TT>
|
|
This web page lists many HOWTOs and other documents in HTML format, as
|
|
well as pointers to other sites of interest to Linux users, like <TT>
|
|
ssc.com</TT>, home of the <EM>Linux Journal,</EM> a monthly magazine. You
|
|
can find their home page at
|
|
<TT>http://www.ssc.com/</TT>.
|
|
<P>
|
|
<H2><A NAME="SECTION00393000000000000000">1.9.3 Books and other published works.</A></H2>
|
|
<P>
|
|
The books of the Linux Documentation Project are the result of an
|
|
effort carried out over the Internet to write and distribute a bona
|
|
fide set of manuals for Linux, analogs of the documentation which
|
|
comes with commercial UNIX versions and covers installation,
|
|
operation, programming, networking, and kernel development.
|
|
<P>
|
|
Linux Documentation Project manuals are available via anonymous FTP
|
|
and by mail order. Appendix <A HREF="app-sources/node1.html">A</A> lists the manuals
|
|
available and describes how to obtain them.
|
|
<P>
|
|
Many large publishers, including MIS:Press, Digital Press, O'Reilly &
|
|
Associates, and SAMS have jumped onto the Linux bandwagon. Check with
|
|
computer bookstores or SSC's web page at
|
|
<TT>http://www.ssc.com/</TT>, or the book reviews in <EM>Linux Journal</EM>,
|
|
sometimes made available on their site, <TT>
|
|
http://www.linuxjournal.com</TT>
|
|
<P>
|
|
A large number of books about UNIX in general are applicable to
|
|
Linux. In its use and programming interface, Linux does not differ
|
|
greatly from other implementations of UNIX. Almost everything you
|
|
would like to know about using and programming Linux can be found in
|
|
general UNIX texts. In fact, this book is meant to supplement the
|
|
library of UNIX books currently available. Here, we present the most
|
|
important Linux-specific details and hope that you will look to other
|
|
sources for in-depth information.
|
|
<P>
|
|
Armed with good books about UNIX as well as this book, you should be
|
|
able to tackle just about anything. Appendix <A
|
|
HREF="app-sources/node1.html">A</A>
|
|
lists several UNIX books which are recommended highly for UNIX
|
|
newcomers and wizards.
|
|
<P>
|
|
The <EM>Linux Journal</EM> magazine is distributed worldwide, and is an
|
|
excellent way to keep in touch with the goings-on of the Linux
|
|
community, especially if you do not have access to Usenet news (see
|
|
below). See Appendix <A HREF="app-sources/node1.html">A</A> for information on
|
|
subscribing to the <EM>Linux Journal</EM>.
|
|
<P>
|
|
<H2><A NAME="SECTION00394000000000000000">1.9.4 Usenet newsgroups.</A></H2>
|
|
<P>
|
|
<A NAME="secintrousenet"> </A>
|
|
<P>
|
|
<B>Usenet</B> is a worldwide electronic news and discussion forum with
|
|
a diverse selection of <B>newsgroups,</B> which are discussion areas
|
|
devoted to specific topics. Much discussion about Linux development
|
|
occurrs over the Internet and Usenet. Not surprisingly, a number of
|
|
Usenet newsgroups are dedicated to Linux.
|
|
<P>
|
|
The original Linux newsgroup, <TT>alt.os.linux</TT>, was created to move
|
|
some of the discussion about Linux from <TT>comp.os.minix</TT> and
|
|
various mailing lists. Soon, the traffic on <TT>alt.os.linux</TT> grew
|
|
large enough that a newsgroup in the <TT>comp</TT> hierarchy was
|
|
warranted. A vote was taken in February, 1992, and <TT>
|
|
comp.os.linux</TT> was created.
|
|
<P>
|
|
<TT>comp.os.linux</TT> quickly became one of the most popular (and
|
|
loudest) of the Usenet groups, more popular than any other group in
|
|
the <TT>comp.os</TT> hierarchy. In December, 1992, a vote was taken to
|
|
split the newsgroup to reduce traffic; only <TT>
|
|
comp.os.linux.announce</TT> passed this vote. In July, 1993, the group
|
|
was finally split into a new hierarchy. Almost 2,000 people voted in
|
|
the <TT>comp.os.linux</TT> reorganization, making it one of the largest
|
|
Usenet Calls For Votes ever.
|
|
<P>
|
|
If you do not have Usenet, there are mail-to-news gateways available
|
|
for many (if not all) of the newsgroups below.
|
|
<P>
|
|
<BR><IMG WIDTH=575 HEIGHT=899 ALIGN=BOTTOM ALT="dispitems455" SRC="img2.gif"><BR>
|
|
<P>
|
|
This list is by no means complete. New groups are created when a need
|
|
for a subdivision of discussion is advisable, and there are linux
|
|
groups in other hierarchies as well.
|
|
<P>
|
|
<H2><A NAME="SECTION00395000000000000000">1.9.5 Internet mailing lists.</A></H2>
|
|
<P>
|
|
<A NAME="secintromailinglists"> </A>
|
|
If you have access to Internet electronic mail, you can participate in
|
|
several mailing lists, even if you do not have Usenet access. If you
|
|
are not directly on the Internet, you can join one of these mailing
|
|
lists if you can exchange electronic mail with the Internet (for
|
|
example, through UUCP, Fidonet, CompuServe, or other networks which
|
|
exchange Internet mail).
|
|
<P>
|
|
For more information about the Linux mailing lists,
|
|
send e-mail to
|
|
<PRE>majordomo@vger.rutgers.edu</PRE>
|
|
<P>
|
|
Include a line with the word <TT>help</TT> in the body of the message,
|
|
and a message will be returned to you which describes how to subscribe
|
|
and unsubscribe to various mailing lists. The word <TT>lists</TT> on a
|
|
line by itself will retrieve the names of mailing lists which are
|
|
accessible through the <TT>majordomo.vger.rutgers.edu</TT> server.
|
|
<P>
|
|
There are several special-purpose mailing lists for Linux as well.
|
|
The best way to find out about these is to watch the Linux Usenet
|
|
newsgroups for announcements, as well as to read the list of
|
|
publicly-available mailing lists, which is posted to the Usenet <TT>
|
|
news.answers</TT> group.
|
|
<P>
|
|
<H1><A NAME="SECTION003100000000000000000">1.10 Getting Help with Linux.</A></H1>
|
|
<P>
|
|
<A name="secintrohelp">
|
|
<P>
|
|
You will undoubtedly need assistance during your adventures in the
|
|
Linux world. Even UNIX wizards are occasionally stumped by some quirk
|
|
or feature of Linux. It's important to know how, where, and when to
|
|
find help.
|
|
<P>
|
|
The primary means of obtaining help is through Internet mailing lists
|
|
and newsgroups as discussed in Section <A HREF="#secintrosources">1.9</A>. If you
|
|
don't have access to these sources, you may be able to find comparable
|
|
Linux discussion forums on online services, like BBS's and CompuServe.
|
|
Also available online are <EM>Linux Journal's</EM> Best of Technical
|
|
Support columns, at <TT>http://www.linuxjournal.com/techsup.html</TT>.
|
|
<P>
|
|
Several businesses provide commercial support for Linux. These
|
|
services allow you to pay a subscription fee that lets you call
|
|
consultants for help with your Linux problems.
|
|
<P>
|
|
Keeping the following suggestions in mind will greatly improve your
|
|
experience with Linux and guarantee more success in finding help.
|
|
<P>
|
|
<EM>Consult all available documentation...first!</EM> You should do
|
|
this when you first encounter a problem. Various sources of
|
|
information are listed in Section <A HREF="#secintrosources">1.9</A> and
|
|
Appendix <A HREF="app-sources/node1.html">A</A>. These documents are laboriously
|
|
written for people who need help with the Linux system, like you. As
|
|
mentioned above, books written for UNIX are applicable to Linux, and
|
|
you should use them, too.
|
|
<P>
|
|
If you have access to Usenet news, or any of the Linux-related mailing
|
|
lists, be sure to read the information there before posting. Often,
|
|
solutions to common problems that are not easy to find in the
|
|
documentation are well-covered in newsgroups and mailing lists. If you
|
|
only post to these groups but don't read them, you are asking for
|
|
trouble.
|
|
<P>
|
|
<EM>Learn to appreciate self-reliance.</EM> You asked for it by running
|
|
Linux in the first place. Remember, Linux is all about hacking and
|
|
fixing problems. It is not a commercial operating system, nor does it
|
|
try to be one. Hacking won't kill you. In fact, it will be
|
|
enlightening to investigate and solve problems yourself--you may even
|
|
one day call yourself a Linux guru. Learn to appreciate the full value
|
|
of hacking the system and fixing problems yourself. You shouldn't
|
|
expect to run a complete, homebrew Linux system without some
|
|
handiwork.
|
|
<P>
|
|
<EM>Remain calm.</EM> Nothing is earned by taking an axe--or worse, a
|
|
powerful electromagnet--to your Linux box. A large punching bag or a
|
|
long walk is a good way to relieve occasional stress attacks. As Linux
|
|
matures and distributions become more reliable, we hope this problem
|
|
will disappear. However, even commercial UNIX implementations can be
|
|
tricky. When all else fails, sit back, take a few deep breaths, and
|
|
return to the problem when you feel relaxed. Your mind and conscience
|
|
will be clearer.
|
|
<P>
|
|
<EM>Refrain from posting spuriously.</EM> Many people make the mistake
|
|
of posting or mailing messages pleading for help prematurely. When
|
|
encountering a problem, do not rush immediately to the nearest
|
|
terminal and post a message to one of the Linux Usenet groups. First
|
|
try to resolve the problem yourself, and be absolutely certain what
|
|
the problem is. Does your system not respond when switched on? Perhaps
|
|
it is unplugged.
|
|
<P>
|
|
<EM>When you post for help, make it worthwhile.</EM> Remember that
|
|
people who read your post are not necessarily there to help you.
|
|
Therefore, it is important to remain as polite, terse, and informative
|
|
as possible.
|
|
<P>
|
|
How does one accomplish this? First, you should include as much
|
|
relevant information about your system and your problem as
|
|
possible. Posting the simple request, ``I cannot seem to get e-mail to
|
|
work'' will probably get you nowhere unless you include information
|
|
about your system, what software you're using, what you have attempted
|
|
to do so far, and what the results were. When you include technical
|
|
information, it is also a good idea to include general information
|
|
about the version of your software (the Linux kernel version, for
|
|
example), as well as a brief summary of your hardware configuration.
|
|
But don't overdo it--your monitor type and brand is probably
|
|
irrelevant if you're trying to configure network software.
|
|
<P>
|
|
<HR><A NAME="tex2html824" HREF="node4.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="next_motif.gif"></A> <A NAME="tex2html822" HREF="gs.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="up_motif.gif"></A> <A NAME="tex2html816" HREF="node2.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="previous_motif.gif"></A> <A NAME="tex2html826" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="contents_motif.gif"></A> <BR>
|
|
<B> Next:</B> <A NAME="tex2html825" HREF="node4.html">2 Obtaining and Installing </A>
|
|
<B>Up:</B> <A NAME="tex2html823" HREF="gs.html">Linux Installation and Getting </A>
|
|
<B> Previous:</B> <A NAME="tex2html817" HREF="node2.html">Preface</A>
|
|
<P><ADDRESS>
|
|
<I>Clarica Grove <BR>
|
|
Wed Mar 4 10:46:42 PST 1998</I>
|
|
</ADDRESS>
|
|
</BODY>
|
|
</HTML>
|