1.1 What Is Linux?
Linux is an
operating system, a software program that controls your
computer. Most PC vendors load an operating system—generally,
Microsoft Windows—onto the hard drive of a PC before delivering
the PC; so, unless the hard drive of your PC has failed, you may not
understand the function of an operating system.
An operating system handles user interaction with a system and
provides a comfortable view of the system. In particular, it solves
several problems arising from variation among hardware. As
you're aware, no two PC models have identical
hardware. For example, some PCs have an IDE hard drive, while others
have a SCSI hard drive. Some PCs have one hard drive; others have two
or more. Most PCs have a CD-ROM drive, but some do not. Some PCs have
an Intel Pentium CPU, while others have an AMD Athlon, and so on.
Suppose that, in a world without operating systems,
you're programming a new PC
application—perhaps a new multimedia word processor. Your
application must cope with all the possible variations of PC
hardware. As a result, it becomes bulky and complex. Users
don't like it because it consumes too much hard
drive space, takes a long time to load, and—because of its size
and complexity—has more bugs than it should. Operating systems
solve this problem by providing a standard way for applications to
access hardware devices. Thanks to the operating system, applications
can be more compact, because they share the commonly used code for
accessing the hardware. Applications can also be more reliable,
because common code is written only once—and by expert
programmers rather than by application programmers.
As you'll soon learn, operating systems do many
other things as well; for example, they generally provide a
filesystem so you can store and retrieve data and a user interface so
you can control your computer. However, if you think of a
computer's operating system as its subconscious
mind, you won't be far off the mark.
It's the computer's conscious
mind—applications such as word processors and
spreadsheets—that do useful work. But, without the
subconscious—the operating system—the computer would
cease breathing and applications would not function.
Internet
newsgroup participants have long debated the proper pronunciation of
Linux. Because Linus Torvalds originated the Linux kernel, it seems
reasonable that his pronunciation of the word should reign as the
standard. However, Linus is Finnish and his pronunciation of
Linux is difficult for English speakers to
approximate. Consequently, many variations in pronunciation have
arisen. The most popular pronunciation sounds as though the word were
spelled Linnucks, with the stress on the first
syllable and a short i.
If your computer has a sound card, you can hear how Linus Torvalds
pronounces Linux: www.ssc.com/lj/linuxsay.html.
Linus's personal opinion is that how you pronounce
Linux matters much less than whether you use it.
|
1.1.1 Desktop and Server Operating Systems
Now that you know what an operating
system is, you may be wondering what operating systems other PC users
are using. According to the market research firm IDC, Microsoft
products account for about 92 percent of sales of desktop operating
systems. Because Linux is a free operating system, Linux sales are a
mere fraction of actual Linux installations. Unlike most commercial
operating systems, Linux is not sold under terms of a per-seat
license; a company is free to purchase a single Linux CD-ROM and
install Linux on as many systems as they like. So, sales figures
understate the popularity of Linux. Moreover, it's
important to consider who uses a product and what they use it for,
rather than merely the number of people using it. Linux is
particularly popular among power users who run web sites and database
and who do their own programming. Hence, though Linux
is popular, its influence exceeds its
popularity.
Later in this chapter you'll learn how Linux is
distributed, but notice that Linux was termed a
free operating system. If you have a high-speed
Internet connection, you can download, install, and use Linux without
paying anyone for anything (except perhaps your Internet Service
Provider, who may impose a connection fee). It's
anyone's guess how many people have downloaded
Linux, but it appears that about 10 million computers now run Linux.
This book focuses on how Linux
can be used on the desktop. However, if you plan to set up a Linux
server and are unfamiliar with Linux and Unix, this book is also
right for you
This book will take you through the basics of setting up and using
Linux as a desktop system. After you've mastered
what this book offers, you should consult Running
Linux, by Matt Welsh, Matthias Kalle Dalheimer Terry
Dawson, and Lar Kaufman (O'Reilly & Associates,
Inc.), a more advanced book that focuses on setting up and using
Linux servers. You might also enjoy Linux in a
Nutshell, by Ellen Siever, Stephen Spainhour, Jessica P.
Hekman, and Stephen Figgins (O'Reilly &
Associates, Inc.); this book puts useful Linux reference information
at your fingertips. LPI Linux Certification in a
Nutshell by Jeffrey Dean (O'Reilly &
Associates, Inc.) is a concise summary of Linux system administration
information and procedures that's useful whether or
not you're interested in seeking certification.
Properly speaking, the name Linux applies to the
Linux kernel,
the most basic and fundamental part of a computer operating system,
rather than the entire operating system. Some people prefer to refer
to the Linux operating system as GNU/Linux.
Doing so emphasizes the contribution of the GNU project—which
is described later in this chapter—to the development of the
Linux operating system. However, Red Hat calls its operating system
Red Hat Linux, not Red Hat GNU/Linux. Therefore, in this book we
refer to both the kernel and operating system as Linux. Context will
help you understand whether the entire operating system or only the
kernel is meant.
|
1.1.2 How Linux Is Different
Linux is distinguished from other popular
operating systems in three important ways:
Linux is a cross-platform operating system that runs on many
computer models. Only Unix, an ancestor of Linux, rivals Linux in
this respect. In comparison, Windows 2000 and XP run only on CPUs
having the Intel architecture.
Linux is free, in two senses.
First, as mentioned earlier, you can obtain and use Linux without
paying anything to anybody. On the other hand, you may choose to
purchase Linux from a vendor who bundles Linux with special
documentation or applications or who provides technical support.
However, even in this case, the cost of Linux is likely to be a
fraction of what you'd pay for another operating
system. So, Linux is free or nearly free in an economic sense.
Second, and more important, Linux and many Linux applications are
distributed in source form. This makes it possible for you and others
to modify or improve them. You're
not free to do this with most operating systems,
which are distributed in binary form. For example, you
can't make changes to Windows or Office—only
Microsoft can do that. Because of this freedom, Linux is being
constantly improved and updated, far outpacing the rate of progress
of any other operating system. For example, Linux was the first
operating system to support Intel's Itanium 64-bit
CPU.
Linux has more attractive features and performance. Free access to
Linux source code lets programmers around the world implement new
features and tweak Linux to improve its performance and reliability.
The best of these features and tweaks are incorporated in the Linux
kernel or made available as kernel patches or applications. Not even
Microsoft can mobilize and support a software development team as
large and dedicated as the volunteer Linux software development team,
which numbers in the hundreds of thousands, including programmers,
code reviewers, and testers.
1.1.3 The Origins of Linux
Linux
traces its ancestry back to a mainframe operating system known as
Multics (Multiplexed Information and
Computing Service). Multics was one of the first multiuser computer
systems and is still in use today. Participating in its development,
which began in 1965, was Bell Telephone Labs, along with the
Massachusetts Institute of Technology (MIT) and General Electric.
Two Bell
Labs software engineers, Ken Thompson and
Dennis
Ritchie, worked on Multics until Bell Labs withdrew from the project
in 1969. One of their favorite pastimes during the project was
playing a multiuser game called Space Travel. Without access to a
Multics computer, they found themselves unable to indulge their
fantasies of flying around the galaxy. Resolving to remedy this, they
decided to port the Space Travel game to run on an otherwise unused
PDP-7 computer. Eventually, they implemented a rudimentary operating
system they named Unics, as a pun on
Multics. Somehow, the spelling of the name
became Unix.
Their operating system was novel in several respects, most notably
its portability. Most previous operating systems had been written for
a specific target computer. Just as a tailor-made suit fits only its
owner, such an operating system could not be easily adapted to run on
an unfamiliar computer. In order to create a portable operating
system, Ritchie and Thompson first created a programming language
called C. Like assembly language, C let a programmer
access low-level hardware facilities not available to programmers
writing in a high-level language such as
FORTRAN or
COBOL. But, like
FORTRAN and COBOL, a C program was not bound to a particular
computer. Just as a ready-made suit can be altered here and there to
fit a purchaser, writing Unix in C made it possible to easily adapt
Unix to run on computers other than the PDP-7.
As word of their work spread and interest grew, Ritchie and Thompson
made copies of Unix freely available to programmers around the world.
These programmers revised and improved Unix, sending word of their
changes back to Ritchie and Thompson, who incorporated the best
improvements in their version of Unix. Eventually, several
Unix variants arose. Prominent among
these was BSD (Berkeley Systems Division) Unix,
written at the University of California, Berkeley, in 1978. Bill
Joy—one of the principals of the BSD project—later became
a founder of Sun Microsystems, which sold another Unix variant
(originally called SunOS and later called Solaris) to power its
workstations. In 1984, AT&T, the parent company of Bell Labs,
began selling its own version of Unix, known as System V.
1.1.4 Free Software
What
Ritchie and
Thompson began in a distinctly noncommercial fashion ended up
spawning several legal squabbles. When AT&T grasped the
commercial potential of Unix, it claimed Unix as its intellectual
property and began charging a hefty licensing fee to those who wanted
to use it. Soon, others who had implemented Unix-like operating
systems were distributing licenses only for a fee. Understandably,
those who had contributed improvements to Unix considered it unfair
for AT&T and others to appropriate the fruits of their labors.
This concern for profit was at odds with the democratic,
share-and-share-alike spirit of the early days of Unix.
Some, including MIT scientist Richard M. Stallman, yearned for the return
of those happier times and the mutual cooperation of programmers that
had existed. So, in 1983, Stallman launched the
GNU (GNU's
not Unix) project, which aimed at creating a free
Unix-like operating system. Like early Unix, the GNU operating system
was to be distributed in source form so that programmers could read,
modify, and redistribute it without restriction.
Stallman's work at MIT had taught him that, by using
the Internet as a means of communication, programmers could improve
and adapt software at incredible speed, far outpacing the fastest
rate possible using traditional software development models, in which
few programmers actually see one another's source
code.
As a means of organizing work on the GNU project, Stallman and others
created the Free Software Foundation (FSF), a
nonprofit corporation that seeks to promote free software and
eliminate restrictions on the copying, redistribution, understanding,
and modification of software. Among other activities, the FSF accepts
tax-deductible charitable contributions and distributes copies of
software and documentation for a small fee, using this revenue to
fund its operations and support development activities.
If you find it peculiar that the FSF charges a fee—even a small
fee—for "free" software, you
should understand that the FSF intends the word
free to refer primarily to freedom, not price.
The FSF believes in three fundamental software freedoms:
You can copy GNU software and give it away to anyone you choose.
If you're a programmer, you can modify GNU software
any way you like, because you have access to the source code. In
return, your modified code should be available for others so they can
enjoy the privileges of learning from and modifying it.
You must provide a free copy of the source so that you cannot
unfairly profit by changing the original.
Commercial software
vendors protect their proprietary rights to software by copyrighting
the software. In contrast, the FSF protects software freedom by
copylefting its software under the
GNU General Public License
(GPL). To copyleft software, the FSF uses the same legal instrument
used by proprietary software vendors—the copyright—but
the FSF adds special license terms that guarantee freedom to users of
the software. These terms give everyone the right to use, modify, and
redistribute the software (or any software derived from it), but only
if the distribution terms are unchanged. Thus, someone who attempts
to transform FSF software into a proprietary product thereby loses
the right to use, modify, or distribute the product.
If, rather than copyright its software, the FSF placed its software
in the public domain, others would be free to transform it into a
proprietary product, denying users the freedom intended by the
original author of the software. For example, a company might
distribute the software in binary rather than source form and require
payment of a license fee for the privilege of making additional
copies.
As the FSF puts it: "Proprietary software developers
use copyright to take away the users' freedom; we
use copyright to guarantee their freedom. That's why
we reverse the name, changing copyright into
copyleft."
|
1.1.5 The Linux Kernel
By the
early 1990s, the FSF had obtained or written all the major components
of the GNU operating system except for one: the kernel. About that
time, Linus
Torvalds, a Finnish computer science student, began work on a kernel
for a Unix-like system. Linus had been working with
Minix, a Unix-like
operating system written by Andrew Tannenbaum primarily for
pedagogical use. Linus was disappointed by the performance of the
Minix kernel and believed that he could do better. He shared his
preliminary work with others on Internet newsgroups. Soon,
programmers around the world were working together to extend and
improve his kernel, which became known as Linux (for
Linus's Minix). As Table 1-1 shows, Linux grew rapidly. Linux was initially
released on October 5, 1991, and as early as 1992, Linux had been
integrated with GNU software and other open source software
(http://www.opensource.org) to
produce a fully functional operating system, which became known as
Linux after the name of its kernel.
Table 1-1. The history of Linux
0.01
|
1991
|
100
|
63
|
Linus Torvalds writes the Linux kernel.
|
0.99
|
1992
|
1000
|
431
|
GNU software is integrated with the Linux kernel,producing a fully
functional operating system.
|
0.99
|
1993
|
20,000
|
938
|
High rate of code contributions prompts Linus to delegate code review
responsibility.
|
1.0
|
1994
|
100,000
|
1,017
|
First production is released.
|
1.2
|
1995
|
500,000
|
1,850
|
Linux is ported to non-Intel processors.
|
2.0
|
1996
|
1,500,000
|
4,718
|
Linux supports multiple processors, IP masquerading, and Java.
|
2.2
|
1999
|
7,500,000
|
10,593
|
Linux growth rate exceeds that of Windows NT,according to market
research firm Dataquest.
|
2.4
|
2001
|
10,000,000
|
19,789
|
Linux invades the enterprise as major companiesbegin using it.
|
Work on Linux has not ceased. Since the initial production release,
the pace of development has accelerated as Linux has been adapted to
include support for non-Intel processors and even multiple
processors, sophisticated TCP/IP networking facilities such as
firewalling, network address translation (NAT), and more. Versions of
Linux are now available for such
computer models and architectures as the PowerPC, the Compaq/DEC
Alpha, the Motorola 68k, the Sun SPARC, the MIPS, and many others.
Moreover, Linux does not implement an obscure Unix variant: it
generally complies with the POSIX (Portable Operating System
Interface) standard that forms the basis of the X/Open specifications
of The Open Group.
1.1.6 The X Window System
Another
important component of Linux is its graphical user
interface (GUI; pronounced
gooey), the X Window
System. Unix was originally a mouse-less,
text-based system that used noisy teletype machines rather than
modern video monitors. The Unix command interface is very
sophisticated and, even today, some power users prefer it to a
point-and-click graphical environment, using their video monitors as
though they are noiseless teletypes. Consequently, some remain
unaware that Unix long ago outgrew its text-based childhood and now
provides users a choice of graphical or command interfaces.
The X Window System (or simply X) was developed
as part of MIT's Project Athena, which it began in 1984.
By 1988, MIT released X to the public. MIT has since turned
development of X over to the X Consortium. The
XFree86 Project, Inc., in cooperation with
the X Consortium, distributes a version of X that runs on
Intel-architecture PCs.
X is a unique graphical user interface in three major respects:
X integrates with a computer network, letting users access local and
remote applications. For example, X lets you open a window that
represents an application running on a remote host: the remote host
does the heavy-duty computing; all your computer need do is pass the
host your input and display the resulting output.
X lets you configure its look and feel to an amazing degree. To do
so, you run a special application—called a window
manager—on top of X. A variety of window
managers is available, including some that closely mimic the look and
feel of Microsoft Windows. Desktop managers further extend X by
providing common applications such as file browsers, menus, and
control panels. GNOME and KDE are the most popular Linux desktop
managers and are discussed in this book.
X is optional. Systems used as servers are often configured without a
GUI, saving resources to serve client requests.
1.1.7 Linux Distributions
Because
Linux can be freely redistributed, you can obtain it in a variety of
ways. Various individuals and organizations package Linux, often
combining it with free or proprietary applications. Such a package
that includes all the software you need to install and run Linux is
called a Linux distribution. Table 1-2 shows some of the most popular Linux
distributions.
Red Hat, Linux-Mandrake, SuSE, and Slackware are packaged by
commercial companies, which seek to profit by selling Linux-related
products and services. However, because Linux is distributed under
the GNU GPL, you can download these distributions from the respective
companies' web sites or make additional copies of a
Linux distribution you purchase. (Note, however, that you cannot
necessarily make additional copies of proprietary software that these
companies may distribute with their Linux distribution.)
Debian GNU/Linux is the product of
volunteer effort conducted under the auspices of
Software in the Public Interest, Inc.
(http://www.spi-inc.org), a
nonprofit corporation. This book is bundled with a copy of Red Hat
Linux, which you can install and run on your PC and redistribute
freely under the terms of the GPL and other applicable licenses. See
installation CD-ROM 1 for details.
1.1.8 Linux Features and Performance
The
origins of Linux and the availability of its source code set it apart
from other operating systems. But most users choose an operating
system based on features and performance—and Linux delivers
these in spades.
Linux runs on a wider range of hardware platforms and runs adequately
on less costly and powerful systems than other operating systems.
Moreover, Linux systems are generally highly reliable.
But this impressive inventory of selling points
doesn't end the matter. Let's
consider some other technical characteristics of Linux that
distinguish it from the pack.
- Cost
-
Foremost in the minds of many is the low cost of
Linux.
Comparable server operating systems can cost more than $100,000. On
the other hand, the low cost of Linux makes it practical for use even
as a desktop operating system. In that mode, it truly eclipses the
competition.
- Power
-
Many desktop systems are employed as servers. Because of its design
and heritage, the features and performance of Linux readily outshine
those of desktop operating systems used as makeshift servers. For
example, Microsoft's
software license for Windows NT/2000 restricts the number of
authenticated client connections; if you want your Windows NT/2000
server to be able to handle 100 authenticated clients, you must pay
Microsoft a hefty license fee. However, Linux imposes no such
restriction; your Linux desktop or server system is free to accept as
many client connections as you think it can handle.
- Reliability
-
Again, because of its design and
heritage, Linux provides more reliable data storage than competing
desktop operating systems. Most Linux users store their disk data
using the ext3 filesystem, which is superior in
performance and reliability to filesystems (partition types) provided
by Microsoft operating systems, including FAT, FAT32, and NTFS. Of
course, if you're worried about losing a whole disk
to hardware failure, you can outfit Linux with the powerful standard
known as Redundant Array of Independent Disks (RAID).
Microsoft claims that its NTFS filesystem is so reliable that
you'll probably never need special software tools to
recover lost data—truth is, Microsoft provides no such tools.
Despite Microsoft's ambitious claims, some Windows
NT users report that NTFS reliability is less than satisfactory.
Here's a case in point:
When my Windows NT workstation crashed a little over a year ago I
discovered that its NTFS filesystem was damaged. I searched the
Microsoft web site for recovery instructions and tools and found
nothing that helped. So I went to my local software store and
purchased a third-party disk recovery tool for Windows NT. When I
opened the box, I was angered to discover that it supported recovery
of FAT and FAT32 data, but not NTFS data.
Eventually, I recovered 95 percent of my data by using a free Linux
utility that was able to open the damaged NTFS partition and copy its
files. If I'd been without Linux,
I'd be without my data.
If you're an old computer dog who remembers the days
of MS-DOS, you may
have a fondness for what's now called the MS-DOS
Prompt window or the Command Line Interface
(CLI). However, if you've worked exclusively within
the Windows point-and-click environment, you may not fully understand
what the MS-DOS Prompt window is about. By typing commands in the
MS-DOS Prompt window, you can direct the computer to perform a
variety of tasks.
For most users, the MS-DOS Prompt is not as convenient as the GUI
offered by Windows. That's because you must know the
commands the operating system understands and must type them
correctly if you expect the operating system to do your bidding.
However, the MS-DOS Prompt window lets you accomplish tasks that
would be cumbersome and time-consuming if performed by pointing and
clicking.
Linux
comes with a similar command interface, known as the
shell.
But, the word similar fails to do justice to the
Linux shell's capabilities, because the MS-DOS
Prompt provides only a fraction of the capabilities provided by the
Linux shell.
You may have used the MS-DOS Prompt and, finding it distastefully
cumbersome, forever rejected it in favor of pointing and clicking. If
so, you'll be pleasantly surprised to see how easy
it is to use the Linux shell. You'll certainly be
pleased—perhaps amazed—by the enormous power it offers.
Moreover, you can customize the operation of the Linux shell in an
almost limitless number of ways and even choose from among a variety
of shells, and automate your work by combining commands into files
called shell scripts. You'll
learn more about the Linux shell in Chapter 7.
If you're a
programmer, you'll
also admire the ease with which it's possible to
develop portable, Unix-compliant software. Linux comes with a suite
of software development tools, including an assembler, C/C++
compilers, a make application, and a source code
librarian. All of these are freely distributable programs made
available under the terms of the GNU GPL.
|