Debian GNU/Linux: Guide to Installation and Usage

John Goerzen and Ossama Othman

  • Acknowledgments
  • Preface
  • Introduction
  • What Is Debian?
  • What Is Free Software?
  • About This Book
  • Getting Started
  • Supported Hardware
  • Before You Start
  • Step-by-Step Installation
  • Configure the Keyboard
  • Last Chance to Back Up!
  • Partition a Hard Disk
  • Configure PCMCIA Support
  • Configure the Network
  • Install the Base System
  • Make a Boot Floppy
  • The Moment of Truth
  • Set the Root Password
  • Create an Ordinary User
  • Shadow Password Support
  • Remove PCMCIA
  • Glossary
  • Logging In
  • First Steps
  • Working as Root
  • Virtual Consoles
  • Shutting Down
  • The Basics
  • Files and Directories
  • Processes
  • The Shell
  • A Few bash Features
  • Managing Your Identity
  • Using the Shell
  • Environment Variables
  • Configuration Files
  • Aliases
  • Filename Expansion
  • More on Files
  • Permissions
  • File Compression with gzip
  • Finding Files
  • Using a File Manager
  • Working with Text Files
  • Viewing Text Files
  • Text Editors
  • Using ae
  • The X Window System
  • Introduction to X
  • Starting the X Environment
  • Basic X Operations
  • Customizing Your X Startup
  • Filesystems
  • Concepts
  • mount and /etc/fstab
  • Backup Tools
  • Networking
  • PPP
  • Ethernet
  • dpkg
  • dselect
  • Compiling Software
  • Advanced Topics
  • Regular Expressions
  • Advanced Files
  • Security
  • Reference
  • Kinds of Documentation
  • Troubleshooting
  • Common Difficulties
  • Booting the System
  • GNU GENERAL PUBLIC LICENSE
  • END OF TERMS AND CONDITIONS
  • About this document ...
  • Footnotes

  •    (c) 1998, 1999 Software in the Public Interest, Inc.

       Permission is granted to make and distribute verbatim copies of this
       manual provided the copyright notice and this permission notice are
       preserved on all copies.

       Permission is granted to copy and distribute modified versions of this
       manual under the conditions for verbatim copying, provided also that the
       sections that reprint ``The GNU General Public License'' and other clearly
       marked sections held under separate copyright are reproduced under the
       conditions given within them, and provided that the entire resulting
       derived work is distributed under the terms of a permission notice
       identical to this one.

       Permission is granted to copy and distribute translations of this manual
       into another language under the conditions for modified versions. ``The
       GNU General Public License'' may be included in a translation approved by
       the Free Software Foundation instead of in the original English.

       At your option, you may distribute verbatim and modified versions of this
       document under the terms of the GNU General Public License, excepting the
       clearly marked sections held under separate copyright.

        1. Linux Device Names
        2. Special dselect keys
        3. dselect Package States
        4. Expected Package Category States
        5. Permissions in Linux

    Acknowledgments

       Many people have helped with this manual. We'd like to thank everyone
       involved, and we try to do that here.

       Thanks to Havoc Pennington, Ardo van Rangelrooij, Larry Greenfield, Thalia
       Hooker, Day Irmiter, James Treacy, Craig Sawyer, Oliver Elphick, Ivan E.
       Moore II, Eric Fischer, Mike Touloumtzis, and the Linux Documentation
       Project for their work on what became the Debian Tutorial document.

       Thanks to Richard Stallman of the Free Software Foundation for advice and
       editing.

       Thanks to Bruce Perens, Sven Rudolph, Igor Grobman, James Treacy, Adam Di
       Carlo, Tapio Lehtonen, and Stephane Bortzmeyer for their work on what
       became a collection of installation documents.

       Of course, it's impossible to thank the hundreds of Debian developers and
       thousands of free software authors who gave us something to write about
       and use.

    Preface

         ``Freedom is still the most radical idea of all.''

       This quote, penned by Nathaniel Branden, seems fitting nowhere moreso than
       with the freewheeling computing industry. In the space of just a few
       decades, lives the world over have been changed by computing technology.
       We, the people behind the Free Software movement, are seeking to continue
       this trend by truly opening up software to everyone -not just the few
       people working for the companies that write it -but everyone. As part of
       this goal, this book and CD contain a treasure chest of Free Software.
       Over one thousand packages, including things such as the world's most
       popular web server, can be found here. You can use this software for
       everything from graphic design to SQL databases.

       The Free Software revolution has taken the industry by storm. Linux,
       started from scratch not even 10 years ago, has been the favorite kernel
       of the Free Software world. The ideas and experience gained from Free
       Software have truly sent Linux and the Free Software Foundation's GNU
       tools all over the world. Free systems such as Debian GNU/Linux ship with
       literally thousands of applications, and they have more power and
       stability, and outperform some of the industry's traditional best-selling
       proprietary operating systems.

       Today, GNU/Linux plays a dominant role in Internet servers and among ISPs,
       in academia, among computer hobbyists, and in computer science research.
       Debian GNU/Linux has brought the power of Free Software to everything from
       laptops to flights aboard the Space Shuttle. As I write this, companies
       the world over are experiencing the joy and benefits that are Free
       Software. The unprecedented power, the ability to speak directly to the
       people who write the software you use, the capability to modify programs
       at will, and the phenomenal expertise of the online support mechanism all
       combine to make Free Software a vibrant and wonderful way to use your
       computing resources.

       Starting with a Free Software such as Debian GNU/Linux can be the best
       thing you've done with your computer in a long time. It's fast, powerful,
       stable, versatile, and fun!

       Welcome to the revolution!

       -John Goerzen

                         Guide

    Introduction

       We're glad to have this opportunity to introduce you to Debian! As we
       begin our journey down the road of GNU/Linux, we'd like to first talk a
       bit about what exactly Debian is -what it does, and how it fits in with
       the vast world of Free Software. Then, we talk a bit about the phenomenon
       that is Free Software and what it means for Debian and you. Finally, we
       close the chapter with a bit of information about this book itself.

    What Is Debian?

       Debian is a free operating system (OS) for your computer. An operating
       system is the set of basic programs and utilities that make your computer
       run. At the core of an operating system is the kernel. The kernel is the
       most fundamental program on the computer: It does all the basic
       housekeeping and lets you start other programs. Debian uses the Linux
       kernel, a completely free piece of software started by Linus Torvalds and
       supported by thousands of programmers worldwide. A large part of the basic
       tools that fill out the operating system come from the GNU Project, and
       these tools are also free.

       Another facet of an operating system is application software: programs
       that help get work done, from editing documents to running a business to
       playing games to writing more software. Debian comes with more than 1,500
       packages (precompiled software bundled up in a nice format for easy
       installation on your machine) -all for free.

       The Debian system is a bit like a pyramid. At the base is Linux. On top of
       that are all the basic tools, mostly from GNU. Next is all the application
       software that you run on the computer; many of these are also from GNU.
       The Debian developers act as architects and coordinators -carefully
       organizing the system and fitting everything together into an integrated,
       stable operating system: Debian GNU/Linux.

       The design philosophy of GNU/Linux is to distribute its functionality into
       small, multipurpose parts. That way, you can easily achieve new
       functionality and new features by combining the small parts (programs) in
       new ways. Debian is like an erector set: You can build all sorts of things
       with it.

       When you're using an operating system, you want to minimize the amount of
       work you put into getting your job done. Debian supplies many tools that
       can help, but only if you know what these tools do. Spending an hour
       trying to get something to work and then finally giving up isn't very
       productive. This guide will teach you about the core tools that make up
       Debian: what tools to use in certain situations and how to tie these
       various tools together.

    Who Creates Debian?

       Debian is an all-volunteer Internet-based development project. There are
       hundreds of volunteers working on it. Most are in charge of a small number
       of software packages and are very familiar with the software they package.

       These volunteers work together by following a strict set of guidelines
       governing how packages are assembled. These guidelines are developed
       cooperatively in discussions on Internet mailing lists.

                       A Multiuser, Multitasking Operating System

       As we mentioned earlier in section 1.1, the design of Debian GNU/Linux
       comes from the Unix operating system. Unlike common desktop operating
       systems such as DOS, Windows, and MacOS, GNU/Linux is usually found on
       large servers and multiuser systems.

       This means that Debian has features those other operating systems lack. It
       allows a large number of people to use the same computer at once, as long
       as each user has his or her own terminal.1.1 To permit many users to work
       at once, Debian must allow many programs and applications to run
       simultaneously. This feature is called multitasking.

       Much of the power (and complexity) of GNU/Linux systems stems from these
       two features. For example, the system must have a way to keep users from
       accidentally deleting each other's files. The operating system also must
       coordinate the many programs running at once to ensure that they don't all
       use the same resource, such as a hard drive, at the same time.

       If you keep in mind what Debian was originally designed to do, many
       aspects of it will make a lot more sense. You'll learn to take advantage
       of the power of these features.

    What Is Free Software?

       When Debian developers and users speak of ``Free Software,'' they refer to
       freedom rather than price. Debian is free in this sense: You are free to
       modify and redistribute it and will always have access to the source code
       for this purpose. The Debian Free Software Guidelines describe in more
       detail exactly what is meant by ``free.'' The Free Software Foundation,
       originator of the GNU Project, is another excellent source of information.
       You can find a more detailed discussion of free software on the Debian web
       site. One of the most well-known works in this field is Richard M.
       Stallman's essay, Why Software Should Be Free; take a look at it for some
       insight into why we support Free Software as we do. Recently, some people
       have started calling Free Software ``Open Source Software''; the two terms
       are interchangable.

       You may wonder why would people spend hours of their own time writing
       software and carefully packaging it, only to give it all away. The answers
       are as varied as the people who contribute.

       Many believe in sharing information and having the freedom to cooperate
       with one another, and they feel that free software encourages this. A long
       tradition that upholds these values, sometimes called the Hacker1.2 Ethic,
       started in the 1950s. The Debian GNU/Linux Project was founded based on
       these Free Software ethics of freedom, sharing, and cooperation.

       Others want to learn more about computers. More and more people are
       looking for ways to avoid the inflated price of proprietary software. A
       growing community contributes in appreciation for all the great free
       software they've received from others.

       Many in academia create free software to help get the results of their
       research into wider use. Businesses help maintain free software so they
       can have a say in how it develops -there's no quicker way to get a new
       feature than to implement it yourself or hire a consultant to do so!
       Business is also interested in greater reliability and the ability to
       choose between support vendors.

       Still others see free software as a social good, democratizing access to
       information and preventing excessive centralization of the world's
       information infrastructure. Of course, a lot of us just find it great fun.

       Debian is so committed to free software that we thought it would be useful
       if it was formalized in a document of some sort. Our Social Contract
       promises that Debian will always be 100% free software. When you install a
       package from the Debian main distribution, you can be sure it meets our
       Free Software Guidelines.

       Although Debian believes in free software, there are cases where people
       want to put proprietary software on their machine. Whenever possible
       Debian will support this; though proprietary software is not included in
       the main distribution, it is sometimes available on the FTP site in the
       non-free directory, and there is a growing number of packages whose sole
       job is to install proprietary software we are not allowed to distribute
       ourselves.

       It is important to distinguish commercial software from proprietary
       software. Proprietary software is non-free software; commercial software
       is software sold for money. Debian permits commercial software, but not
       proprietary software, to be a part of the main distribution. Remember that
       the phrase ``free software'' does not refer to price; it is quite possible
       to sell free software. For more clarification of the terminology, see
       http://www.opensource.org/or
       http://www.fsf.org/philosophy/categories.html.

    About This Book

       This book is aimed at readers who are new to Debian GNU/Linux. It assumes
       no prior knowledge of GNU/Linux or other Unix-like systems, but it does
       assume very basic general knowledge about computers and hardware; you
       should know what the basic parts of a computer are, and what one might use
       a computer to do.

       In general, this tutorial tries to help you understand what happens inside
       a Debian system. The idea is to empower you to solve new problems and get
       the most out of your computer. Thus there's plenty of theory and fun facts
       thrown in with the ``How To'' aspects of the manual.

       We'd love to hear your comments about this book! You can reach the authors
       at debian-guide@complete.org. We're especially interested in whether it
       was helpful to you and how we could make it better. Whether you have a
       comment or think this book is the greatest thing since sliced bread,
       please send us e-mail.

       Please do not send the authors technical questions about Debian, because
       there are other forums for that; see Appendix A on page [*] for more
       information on the documentation and getting help. Only send mail
       regarding the book itself to the above address.

    How to Read This Book

       The best way to learn about almost any computer program is by using it.
       Most people find that reading a book without using the program isn't
       beneficial. The best way to learn about Unix and GNU/Linux is by using
       them. Use GNU/Linux for everything you can. Feel free to experiment!

       Debian isn't as intuitively obvious as some other operating systems. You
       will probably end up reading at least the first few chapters of this book.
       GNU/Linux's power and complexity make it difficult to approach at first,
       but far more rewarding in the long run.

       The suggested way to learn is to read a little, and then play a little.
       Keep playing until you're comfortable with the concepts, and then start
       skipping around in the book. You'll find a variety of topics are covered,
       some of which you might find interesting. After a while, you should feel
       confident enough to start using commands without knowing exactly what they
       do. This is a good thing.

         Tip: If you ever mistakenly type a command or don't know how to exit a
         program, press CTRL-c (the Ctrl key and the lowercase letter c pressed
         simultaneously). This will often stop the program.

    Conventions

       Before going on, it's important to be familiar with the typographical
       conventions used in this book.

       When you should simultaneously hold down multiple keys, a notation like
       CTRL-a will be used. This means ``press the Ctrl key and press lowercase
       letter a.'' Some keyboards have both Alt and Meta; most home computers
       have only Alt, but the Alt key behaves like a Meta key. So if you have no
       Meta key, try the Alt key instead.

       Keys like Alt and Meta are called modifier keys because they change the
       meaning of standard keys like the letter A. Sometimes you need to hold
       down more than one modifier; for example, Meta-Ctrl-a means to
       simultaneously press Meta, Ctrl, and lowercase a.

       Some keys have a special notation -for example, Ret (Return/Enter), Del
       (Delete or sometimes Backspace), Esc (Escape). These should be fairly
       self-explanatory.

       Spaces used instead of hyphens mean to press the keys in sequential order.
       For example, CTRL-a x RET means to simultaneously type Ctrl and lowercase
       a, followed by the letter x, followed by pressing Return. (On some
       keyboards, this key is labeled Enter. Same key, different name.)

       In sample sessions, bold face text denotes characters typed by the user,
       italicized text denotes comments about a given part of the sample session,
       and all other text is output from entering a command. For shorter
       commands, you'll sometimes find that the command can be found within other
       text, highlighed with a monospace font.

    Getting Started

         ``A journey of a thousand miles must begin with a single step.'' -
         Lao-Tsu

       Now that you've read about the ideas and philosophy behind Linux and
       Debian, it's time to start putting it on your computer! We start by
       talking about how to prepare for a Debian install, then about partitioning
       your disk, and finally, how to start up the installation system.

    Supported Hardware

       Debian does not impose hardware requirements beyond the requirements of
       the Linux kernel and the GNU tools.

       Rather than attempting to describe all the different hardware
       configurations that are supported for the PC platform, this section
       contains general information and pointers to where additional information
       can be found.

       There are two excellent places to check for detailed information: the
       Debian System Requirements list and the Linux Documentation Project
       Hardware Compatibility HOWTO. For information on video card support, you
       may also want to look at the XFree86 Project web site.

    Memory and Disk Space Requirements

       You must have at least 4MB of memory and 35MB of available hard disk
       space. If you want to install a reasonable amount of software, including
       the X Window system, and some development programs and libraries, you'll
       need at least 300MB. For an essentially full installation, you'll need
       around 800MB. To install everything available in Debian, you'll probably
       need around 2GB. Actually, installing everything doesn't make sense
       because some packages provide the same services.

    Before You Start

       Before you start, make sure to back up every file that is now on your
       system. The installation procedure can wipe out all of the data on a hard
       disk! The programs used in installation are quite reliable and most have
       seen years of use; still, a false move can cost you. Even after backing
       up, be careful and think about your answers and actions. Two minutes of
       thinking can save hours of unnecessary work.

       Debian makes it possible to have both Debian GNU/Linux and another
       operating system installed on the same system. If you plan to use this
       option, make sure that you have on hand the original CD-ROM or floppies of
       the other installed operating systems. If you repartition your boot drive,
       you may find that you have to reinstall your existing operating system's
       boot loader2.1 or the entire operating system itself.

    Information You Will Need

       If your computer is connected to a network 24 hours a day (i.e., an
       Ethernet or similar LAN connection -not a PPP connection), you should ask
       your network's system administrator for the following information:

         * Your host name (you may be able to decide this on your own)
         * Your domain name
         * Your computer's IP address
         * The IP address of your network
         * The netmask to use with your network
         * The broadcast address to use on your network
         * The IP address of the default gateway system you should route to, if
           your network has a gateway
         * The system on your network that you should use as a DNS server
         * Whether you connect to the network using Ethernet
         * Whether your Ethernet interface is a PCMCIA card, and if so, the type
           of PCMCIA controller you have
       If your only network connection is a telephone line using PPP or an
       equivalent dialup connection, you don't need to worry about getting your
       network set up until your system is already installed. See section 11.1 on
       page [*] for information on setting up PPP under Debian.

                         Partitioning Your Hard Drive

       Before you install Debian on your computer, it is generally a good idea to
       plan how the contents of your hard drive will be arranged. One part of
       this process involves partitioning your hard drive.

    Background

       Partitioning your disk simply refers to the act of breaking up your disk
       into sections. Each section is then independent of the others. It's
       roughly equivalent to putting up walls in a house; after that, adding
       furniture to one room doesn't affect any other room.

       If you already have an operating system on your system (Windows 95,
       Windows NT, DOS, etc.) and you want to install Debian GNU/Linux on the
       same disk, you will probably need to repartition the disk. In general,
       changing a partition that already has a filesystem on it will destroy any
       information in that filesystem. Therefore, you should always make backups
       before doing any repartitioning. Using the analogy of the house, you would
       probably want to move all the furniture out of the way before moving a
       wall or you risk destroying your furniture. Luckily, there is an
       alternative for some users; see section 2.3.6 on page [*] for more
       information.

       At a bare minimum, GNU/Linux needs one partition for itself. You can have
       a single partition containing the entire operating system, applications,
       and your personal files. Most people choose to give GNU/Linux more than
       the minimum number of partitions, however. There are two reasons you might
       want to break up the filesystem into a number of smaller partitions. The
       first is for safety. If something happens to corrupt the filesystem,
       generally only one partition is affected. Thus, you only have to replace
       (from the backups you've been carefully keeping) a portion of your system.
       At the very least, you should consider creating what is commonly called a
       ``root partition.'' This contains the most essential components of the
       system. If any other partitions get corrupted, you can still boot into
       GNU/Linux to fix the system. This can save you the trouble of having to
       reinstall the system from scratch.

       The second reason is generally more important in a business setting, but
       it really depends on your use of the machine. Suppose something runs out
       of control and starts eating disk space. If the process causing the
       problem happens to have root privileges (the system keeps a percentage of
       the disk away from users), you could suddenly find yourself out of disk
       space. This is not good since the operating system needs to use real files
       (besides swap space) for many things. It may not even be a problem of
       local origin. For example, unsolicited e-mail (``spam'') can easily fill a
       partition. By using more partitions, you protect the system from many of
       these problems. Using e-mail as an example again, by putting the directory
       /var/spool/mail on its own partition, the bulk of the system will work
       even if unsolicited e-mail fills that partition.

       Another reason applies only if you have a large IDE disk drive and are
       using neither LBA addressing nor overlay drivers2.2. In this case, you
       will have to put the root partition into the first 1,024 cylinders of your
       hard drive, usually around 524 megabytes. See section 2.3.3 on page [*]
       for more information on this issue.

       Most people feel that a swap partition is also a necessity, although this
       isn't strictly true. ``Swap'' is scratch space for an operating system,
       which allows the system to use disk storage as ``virtual memory'' in
       addition to physical memory. Putting swap on a separate partition allows
       Linux to make much more efficient use of it. It is possible to force Linux
       to use a regular file as swap, but this is not recommended.

       The only real drawback to using more partitions is that it is often
       difficult to know in advance what your needs will be. If you make a
       partition too small, either you will have to reinstall the system, or you
       will be constantly moving things around to make room in the undersized
       partition. On the other hand, if you make the partition too big, you may
       be wasting space that could be used elsewhere.

    Planning Use of the System

       Disk space requirements and your partitioning scheme are influenced by the
       type of installation you decide to create.

       For your convenience, Debian offers a number of default ``profiles'' some
       of which are listed later in this section. Profiles are simply preselected
       sets of packages designed to provide certain desired capabilities on your
       system. Installation is easier since packages that fit your desired
       profile are automatically marked for installation. Each given profile
       lists the size of the resulting system after installation is complete.
       Even if you don't use these profiles, this discussion is important for
       planning, since it will give you a sense of how large your partition or
       partitions need to be. The following are some of the available profiles
       and their sizes:

       Server_std.
              This is a small server profile, useful for a stripped-down server,
              that does not have a lot of niceties for shell users. It basically
              has an FTP server, a web server, DNS, NIS, and POP. It will take
              up around 50MB. Of course, this is just the size of the software;
              any data you serve would be additional.

       Dialup.
              This profile would be good for a standard desktop box, including
              the X Window system, graphics applications, sound, editors, etc.
              The size of the packages will be around 500MB.

       Work_std.
              This profile is suitable for a stripped-down user machine without
              the X Window system or X applications. It is also suitable for a
              laptop or mobile computer. The size is around 140MB. It is
              possible to have a simple laptop setup including X with less than
              100MB.

       Devel_comp.
              This is a desktop setup profile with all the popular development
              packages, such as Perl, C, and C++. It requires around 475MB.
              Assuming you are adding X and some additional packages for other
              uses, you should plan for approximately 800MB of disk space for
              this type of installation.

       Remember that these sizes don't include all the other materials that are
       normally found, such as user files, mail, and data. It is always best to
       be generous when considering the space for your own files and data.
       Notably, the Debian /var directory contains a lot of state information.
       The installed package management files can easily consume 20MB of disk
       space. In general, you should allocate at least 50MB for the /var
       directory because system log files are also stored there.

    PC Disk Limitations

       A PC BIOS generally adds additional constraints for disk partitioning.
       There is a limit to how many ``primary'' and ``logical'' partitions a
       drive can contain. Additionally, there are limits to where on the drive
       the BIOS looks for boot information. More information can be found in the
       Linux Partition mini-HOWTO. This section will include a brief overview to
       help you plan most situations.

       ``Primary'' partitions are the original partitioning scheme for PC hard
       disks. However, there can be only four of them. To get past this
       limitation, ``extended'' or ``logical'' partitions were invented. By
       setting one of your primary partitions as an extended partition, you can
       subdivide all the space allocated to that partition into logical
       partitions. The number of logical partitions you can create is much less
       limited than the number of primary partitions you can create; however, you
       can have only one extended partition per drive.

       Linux limits the number of partitions per drive to 15 partitions for SCSI
       drives (3 usable primary partitions, 12 logical partitions), and 63
       partitions for IDE drives (3 usable primary partitions, 60 logical
       partitions).

       The last issue you need to know about a PC BIOS is that your boot
       partition -that is, the partition containing your kernel image -needs to
       be contained within the first 1,024 cylinders of the drive. Because the
       root partition is usually your boot partition, you need to make sure your
       root partition fits into the first 1,024 cylinders.

       If you have a large disk, you may have to use cylinder translation
       techniques, which you can set in your BIOS, such as LBA translation mode.
       (More information about large disks can be found in the Large Disk
       mini-HOWTO.) If you are using a cylinder translation scheme, your boot
       partition must fit within the translated representation of cylinder 1,024.

    Device Names in Linux

       Linux disks and partition names may be different from those in other
       operating systems. You should know the names that Linux uses when you
       create and mount partitions. The basic scheme can be found in Table 2.1 on
       page [*].

                         Table 2.1: Linux Device Names

    +------------------------------------------------------------------------------+
    | Device                                        |          Linux Name          |
    |-----------------------------------------------+------------------------------|
    | First floppy drive                            |           /dev/fd0           |
    |-----------------------------------------------+------------------------------|
    | Second floppy drive                           |           /dev/fd1           |
    |-----------------------------------------------+------------------------------|
    | First partition on /dev/hda (typically C: in  |          /dev/hda1           |
    | other OSs)                                    |                              |
    |-----------------------------------------------+------------------------------|
    | Fifth partition on /dev/hdc                   |          /dev/hdc5           |
    |-----------------------------------------------+------------------------------|
    | Second partition on /dev/sdb                  |          /dev/sdb2           |
    |-----------------------------------------------+------------------------------|
    | Entire Primary-Master IDE hard disk or CD-ROM |           /dev/hda           |
    |-----------------------------------------------+------------------------------|
    | Entire Primary-Slave IDE hard disk or CD-ROM  |           /dev/hdb           |
    |-----------------------------------------------+------------------------------|
    | Entire Secondary-Master IDE hard disk or      |           /dev/hdc           |
    | CD-ROM                                        |                              |
    |-----------------------------------------------+------------------------------|
    | Entire Secondary-Slave IDE hard disk or       |           /dev/hdd           |
    | CD-ROM                                        |                              |
    |-----------------------------------------------+------------------------------|
    | First SCSI disk                               |           /dev/sda           |
    |-----------------------------------------------+------------------------------|
    | Second and remaining SCSI disks               |    /dev/sdb and so forth     |
    |-----------------------------------------------+------------------------------|
    | First serial port (COM1 in other OSs)         |          /dev/ttyS0          |
    |-----------------------------------------------+------------------------------|
    | Second, third, etc. serial ports              | /dev/ttyS1, /dev/ttyS2, etc. |
    |-----------------------------------------------+------------------------------|
    | SCSI tape units (automatic rewind)            |   /dev/st0, /dev/st1, etc.   |
    |-----------------------------------------------+------------------------------|
    | SCSI tape units (no automatic rewind)         |  /dev/nst0, /dev/nst1, etc.  |
    |-----------------------------------------------+------------------------------|
    | SCSI CD-ROMs                                  |  /dev/scd0, /dev/scd1, etc.  |
    +------------------------------------------------------------------------------+

       The partitions on each disk are represented by appending a number to the
       disk name. For example, the names hda1 and hda2 represent the first and
       second partitions of the first IDE disk drive in your system. Linux
       represents the primary partitions with the drive name plus the numbers 1
       through 4. For example, the first primary partition on the first IDE drive
       is /dev/hda1. The logical partitions are numbered starting at 5, so the
       first logical partition on that same drive is /dev/hda5. Remember that the
       extended partition -that is, the primary partition holding the logical
       partitions -is not usable by itself. This applies to SCSI drives as well
       as IDE drives.

       Let's assume you have a system with two SCSI disks, one at SCSI address 2
       and the other at SCSI address 4. The first disk (at address 2) is then
       named sda and the second sdb. If the sda drive has three partitions on it,
       these will be named sda1, sda2, and sda3. The same applies to the sdb disk
       and its partitions. Note that if you have two SCSI host bus adapters
       (i.e., controllers), the order of the drives can get confusing. The best
       solution in this case is to watch the boot messages, assuming you know the
       drive models.

    Recommended Partitioning Scheme

       As described above, you should have a separate smaller root partition and
       a larger /usr partition if you have the space. For most users, the two
       partitions initially mentioned are sufficient. This is especially
       appropriate when you have a single small disk, because creating lots of
       partitions can waste space.

       In some cases, you might need a separate /usr/local partition if you plan
       to install many programs that are not part of the Debian distribution. If
       your machine will be a mail server, you may need to make /var/spool/mail a
       separate partition. Putting /tmp on its own 20 to 32MB partition, for
       instance, is a good idea. If you are setting up a server with lots of user
       accounts, it's generally good to have a separate, large /home partition to
       store user home directories. In general, the partitioning situation varies
       from computer to computer depending on its uses.

       For very complex systems, you should see the Multi Disk HOWTO. It contains
       in-depth information, mostly of interest to people setting up servers.

       Swap partition sizes should also be considered. There are many views about
       swap partition sizes. One rule of thumb that works well is to use as much
       swap as you have system memory, although there probably isn't much point
       in going over 64MB of swap for most users. It also shouldn't be smaller
       than 16MB, in most cases. Of course, there are exceptions to these rules.
       If you are trying to solve 10,000 simultaneous equations on a machine with
       256MB of memory, you may need a gigabyte (or more) of swap space.

       As an example, consider a machine that has 32MB of RAM and a 1.7GB IDE
       drive on /dev/hda. There is a 500MB partition for another operating system
       on /dev/hda1. A 32MB swap partition is used on /dev/hda3 and the rest,
       about 1.2GB, on /dev/hda2 is the Linux partition.

    Partitioning Prior to Installation

       There are two different times that you can partition: prior to or during
       the installation of Debian. If your computer will be solely dedicated to
       Debian you should partition during installation as described in section
       3.5 on page [*]. If you have a machine with more than one operating system
       on it, you should generally let the other operating system create its own
       partitions.

       The following sections contain information regarding partitioning in your
       native operating system prior to Debian installation. Note that you'll
       have to map between how the other operating system names partitions and
       how Linux names partitions; see Table 2.1 on page [*].

      Partitioning from DOS or Windows

       If you are manipulating existing FAT or NTFS partitions, it is recommended
       that you use either the scheme below or native Windows or DOS tools.
       Otherwise, it is not really necessary to partition from DOS or Windows;
       the Linux partitioning tools will generally do a better job.

      Lossless Repartitioning

       One of the most common installations is onto a system that already
       contains DOS (including Windows 3.1), Win32 (such as Windows 95, 98, NT),
       or OS/2 and it is desired to put Debian onto the same disk without
       destroying the previous system. As explained in section 2.3.1 on page [*],
       decreasing the size of an existing partition will almost certainly damage
       the data on that partition unless certain precautions are taken. The
       method described here, while not guaranteed to protect your data, works
       extremely well in practice. As a precaution, you should make a backup.

       Before going any further, you should have decided how you will divide up
       the disk. The method in this section will only split a partition into two
       pieces. One will contain the original operating system, and the other will
       be used for Debian. During the installation of Debian, you will be given
       the opportunity to use the Debian portion of the disk as you see fit,
       i.e., as swap or as a filesystem.

       The idea is to move all the data on the partition to the beginning before
       changing the partition information, so that nothing will be lost. It is
       important that you do as little as possible between the data movement and
       repartitioning to minimize the chance of a file being written near the end
       of the partition as this will decrease the amount of space you can take
       from the partition.

       The first thing you need is a copy of FIPS, which is available in the
       tools directory on your Debian CD-ROM. This disk must be bootable. Under
       DOS, a bootable floppy can be created using the command sys a: for a
       previously formatted floppy or format a: /s for an unformatted floppy.
       Unzip the archive and copy the files RESTORRB.EXE, FIPS.EXE and ERRORS.TXT
       to the bootable floppy. FIPS comes with very good documentation that you
       may want to read. You should definitely read the documentation if you use
       a disk compression driver or a disk manager. Create the disk and read the
       documentation before you continue.

       The next thing to be done is to move all the data to the beginning of the
       partition. DEFRAG, which comes standard with DOS 6.0 and later, can easily
       do the job. See the FIPS documentation for a list of other software that
       may also work. Note that if you have Windows 95 or higher, you must run
       DEFRAG from there, because DOS doesn't understand VFAT, which is used to
       support long filenames in Windows 95 and higher.

       After running the defragmenter (which can take a while on a large disk),
       reboot with the FIPS floppy disk you created. Simply type a:\ fips and
       follow the directions.

       Note that there are many other other partition managers out there, in case
       FIPS doesn't work for you.

    Debian Installation Steps

       As you initially install Debian, you will proceed through several
       different steps:

        1. Boot the installation system
        2. Initial system configuration
        3. Install the base system
        4. Boot the newly installed base system
        5. Install the rest of the system
       Booting the Debian installation system, the first step, is generally done
       with the Rescue Floppy or from the CD-ROM.

       Once you've booted into Linux, the dbootstrap program will launch and
       guide you through the second step, the initial system configuration. This
       step is described in detail in section 3 on page [*].

       The ``Debian base system'' is a core set of packages that are required to
       run Debian in a minimal, stand-alone fashion. dbootstrap will install it
       from your CD-ROM, as described in section 3.12 on page [*]. Once you have
       configured and installed the base system, your machine can ``stand on its
       own.''

       The final step is the installation of the remainder of the Debian system.
       This would include the applications and documents that you actually use on
       your computer, such as the X Window system, editors, shells, and
       development environments. The rest of the Debian system can be installed
       from CD-ROM. At this point, you'll be using the standard Debian package
       management tools, such as dselect. This step is described in section 3.20
       on page [*].

                         Choosing Your Installation Media

       First, choose the boot media for the installation system. Next, choose the
       method you will use to install the base system.

       To boot the installation system, you have the following choices: bootable
       CD-ROM, floppies, or a non-Linux boot loader.

       CD-ROM booting is one of the easiest ways to install. Not all machines can
       boot directly from the CD-ROM so you may still need to use floppies.
       Booting from floppies is supported for most platforms. Floppy booting is
       described in section 2.4.2 on page [*].

    Installing from a CD-ROM

       If your system supports booting from a CD-ROM, you don't need any
       floppies. Put the CD-ROM into the drive, turn your computer off, and then
       turn it back on. You should see a Welcome screen with a boot prompt at the
       bottom. Now you can skip down to section 2.5.

       If your computer didn't ``see'' the Debian CD-ROM, the easiest option is
       to make two floppies for booting (described in section 2.4.2) and then use
       them to start Debian. Don't worry; after Debian is finished with those two
       floppies, it will find your CD-ROM with no trouble.

    Booting from Floppies

       It's not hard at all to boot from floppies. In fact, your CD-ROM contains
       all the information necessary to create boot disks for you. For these
       instructions, you will need to get two disks. Label the first one ``Debian
       2.1 Install/Rescue Disk'' and the second ``Debian 2.1 Modules/Drivers
       Disk.''

      Creating Floppies from Disk Images

       Disk images are files containing the complete contents of a floppy disk in
       raw form. Disk images, such as resc1440.bin, cannot simply be copied to
       floppy drives. A special program is used to write the image files to
       floppy disk in raw mode.

       First, you need to get to a DOS prompt. In Windows 95 and above, you can
       do this by double-clicking on an MS-DOS icon or by going to Start\(
       \rightarrow \)Programs\( \rightarrow \)MS-DOS prompt. Then, insert your
       Debian GNU/Linux CD-ROM into your CD-ROM drive. First, you change to your
       CD-ROM drive. In most cases, this is D:.

              C:\WINDOWS>D:
       Now, change to the directory containing the disk images.

              D:\>CD

              \DISTS\SLINK\MAIN\DISKS-I386\2.1.8-1999-02-22

       If you get an error, double-check what you're typing. If the error
       persists, manually issue CD \DISTS\SLINK\MAIN\DISKS-I386, then run DIR,
       and then CD into the directory indicated. Note that the above commands,
       and some other examples below, may appear as a single line on your display
       even if they are wrapped here.

       Now, you're ready to create the first of two disks. Start the program to
       write them out, rawrite2:

              D:\DISTS\SLINK\MAIN\DISKS-I386\

              2.1.8-1999-02-22>rawrite2

              RaWrite 2.0 -Write disk file to

              raw floppy diskette

       Rawrite2 starts and displays its welcome message. Next, it asks for the
       filename and diskette drive. You tell it to write resc1440.bin to a:

              Enter disk image source file name: resc1440.bin

              Enter target diskette drive: a:

       Rawrite2 now asks you to insert a disk into the floppy drive. Do so and
       press Enter.

              Plese insert a formatted diskette into

              drive A: and press -ENTER-:

       At this point, rawrite2 will create the first of the two disks. Now, you
       need to repeat the process for the second disk:

              D:\DISTS\SLINK\MAIN\DISKS-I386\

              2.1.8-1999-02-22>rawrite2

              RaWrite 2.0 -Write disk file to

              raw floppy diskette

              Enter disk image source file name: drv1440.bin

              Enter target diskette drive: a:

              Please insert a formatted diskette into

              drive A: and press -ENTER-:

       By now, your disks are created. You can now use the first one to boot.

      Booting Debian

       You are now ready to boot into Debian! Shut down your existing operating
       system, turn off your computer, and place the Install/Rescue Disk into the
       floppy drive. Now turn your computer back on. You should get a Welcome
       screen with a boot prompt at the bottom.

                         Booting the Installation System

       You should now have the boot prompt. Simply press Enter at this point.

       Once you press Enter, you should see the message Loading..., and then
       Uncompressing Linux..., and then a screenful or so of information about
       the hardware in your system. In general, you can ignore these messages.
       Linux will look for various hardware devices and will tell you what it
       finds and doesn't find. Don't worry about messages at this point. Just
       wait until you see the Color Selection screen. If you have trouble, see
       section B.2 on page [*].

    Step-by-Step Installation

       dbootstrap is the name of the program that is run after you have booted
       into the installation system. It is responsible for initial system
       configuration and the installation of the ``base system.''

       The main job of dbootstrap and the main purpose of your initial system
       configuration is to configure certain core elements of your system. For
       instance, this includes your IP address, host name, and other aspects of
       your networking setup, if any. This also includes the configuration of
       ``kernel modules,'' which are drivers that are loaded into the kernel.
       These modules include storage hardware drivers, network drivers, special
       language support, and support for other peripherals. Configuring these
       fundamental things is done first, because it is often necessary for the
       system to function properly for the next steps of installation.

       dbootstrap is a simple, character-based application. It is very easy to
       use; generally, it will guide you through each step of the installation
       process in a linear fashion. You can also go back and repeat steps if you
       made a mistake. Navigation within dbootstrap is accomplished with the
       arrow keys, Enter, and Tab.

                         Select Color or Monochrome Display

       Once the system has finished booting, dbootstrap is invoked. The first
       thing that dbootstrap asks about is your display. You should see the
       ``Select Color or Monochrome display'' dialog box. If your monitor is
       capable of displaying color, press Enter. The display should change from
       black-and-white to color. Then press Enter again, on the ``Next'' item, to
       continue with the installation.

       If your monitor can display only black and white, use the arrow keys to
       move the cursor to the ``Next'' menu item, and then press Enter to
       continue with the installation.

                        Debian GNU/Linux Installation Main Menu

       You may see a dialog box that says ``The installation program is
       determining the current state of your system and the next installation
       step that should be performed.'' This is a phase in which the installation
       program automatically figures out what you probably need to do next. In
       some cases, you may not even see this box.

       During the entire installation process, you will be presented with the
       main menu, titled ``Debian GNU/Linux Installation Main Menu.'' The choices
       at the top of the menu will change to indicate your progress in installing
       the system. Phil Hughes wrote in the Linux Journal that you could teach a
       chicken to install Debian! He meant that the installation process was
       mostly just pecking at the Enter key. The first choice on the installation
       menu is the next action that you should perform according to what the
       system detects you have already done. It should say ``Next,'' and at this
       point the next step in installing the system will be taken.

    Configure the Keyboard

       Make sure the highlight is on the ``Next'' item and press Enter to go to
       the keyboard configuration menu.

       Move the highlight to the keyboard selection you desire and press Enter.
       Use the arrow keys to move the highlight. In most cases, you can just use
       the default U.S. layout.

    Last Chance to Back Up!

       Did we tell you to back up your disks? Here's your first chance to wipe
       out all of the data on your disks and your last chance to save your old
       system. If you haven't backed up all of your disks, remove the floppy from
       the drive, reset the system, and run backups.

    Partition a Hard Disk

       Whatever the ``Next'' menu selection is, you can use the down-arrow key to
       select ``Partition a Hard Disk.'' Go ahead and do this now, then press
       Enter.

       The ``Partition a Hard Disk'' menu item presents you with a list of disk
       drives you can partition and runs a partitioning application called
       cfdisk. You must create at least one ``Linux native'' (type 83) disk
       partition, and you probably want at least one ``Linux swap'' (type 82)
       partition, as explained in later in this section.

       You will now create the partitions that you need to install Debian. For
       this example, the assumption is that you are partitioning an empty hard
       disk.

       The boot partition must reside within the first 1,024 of cylinders of your
       hard disk (see section 2.3.3 on page [*]). Keeping that in mind, use the
       right-arrow key to highlight the ``New'' menu selection, and then press
       Enter. You will be presented with the choice of creating a primary
       partition or a logical partition. To help ensure that the partition
       containing the boot information is within the first 1,024 cylinders,
       create a primary partition first. This primary partition will be your
       ``Linux native'' partition.

       Highlight the ``Primary'' menu selection and press Enter. Next you will
       need to enter how large you want that partition to be. Review section
       2.3.2 on page [*] if you're not sure how large it should be. Remember to
       leave enough space for your swap partition (see section 2.3.5 on page
       [*]). Enter the parition size you want and then press Enter. Next you will
       be asked if you want to place the partition at the beginning of free space
       or at the end. Place it at the beginning to help ensure that it lies
       within the first 1,024 cylinders. Highlight ``Beginning'' and press Enter.
       At this point you will be brought back to the main screen. Notice that the
       partition you created is listed. By default, a Linux native partition was
       created. This partition must now be made bootable. Make sure that the
       ``Bootable'' menu selection is highlighted and press Enter. The partition
       should now have the word ``Boot'' listed under the ``Flags'' column.

       With the remaining space, create another primary partition. Using the
       down-arrow key, highlight the free space entry in the partition list. Now
       highlight the ``New'' menu selection and proceed just as you did when you
       created the first primary partition. Notice that the partition is listed
       as a Linux native partition. Because this partition will be your swap
       partition, it must be denoted as such. Make sure the partition you just
       created (your swap partition) is highlighted and then press the left-arrow
       key until the ``Type'' menu selection is highlighted, then press Enter.
       You will be presented with a list of supported partition types. The Linux
       swap partition type should already be selected. If it is not, enter the
       number from the list that corresponds to the Linux swap partition (82),
       and then press Enter. Your swap partition should now be listed as a Linux
       swap partition under the ``FS Type'' column in the main screen.

       Your cfdisk screen should look something like the screenshot in Figure 3.1
       on page [*]. The numbers may not be the same, but the Flags and FS Type
       column shoulds be similar.

       Until now, nothing on your disk has been altered. If you are satisfied
       that the partition scheme you created is what you want, press the
       left-arrow key until ``Write'' is highlighted, and press Enter. Your hard
       disk has now been partitioned. Quit the cfdisk application by selecting
       the ``Quit'' menu selection. Once you have left cfdisk, you should be back
       in Debian's dbootstrap installation application.

                         Figure 3.1: cfdisk screenshot
                \resizebox*{4in}{!}{\includegraphics{images/cfdisk.eps}}

                        Initialize and Activate a Swap Partition

       This will be the ``Next'' menu item once you have created one disk
       partition. You have the choice of initializing and activating a new swap
       partition, activating a previously-initialized one, or doing without a
       swap partition.

       A swap partition is strongly recommended, but you can do without one if
       you insist and if your system has more than 4MB RAM. If you wish to do
       this, select the ``Do Without a Swap Partition'' item from the menu and
       move on to the next section.

       It's always permissible to reinitialize a swap partition, so select
       ``Initialize and Activate a Swap Partition'' unless you are sure you know
       what you are doing. This menu choice will first present you with a dialog
       box reading ``Please select the partition to activate as a swap device.''
       The default device presented should be the swap partition you've already
       set up; if so, just press Enter.

       Next you have the option to scan the entire partition for unreadable disk
       blocks caused by defects on the surface of the hard disk platters. This is
       useful if you have MFM, RLL, or older SCSI disks, and it never hurts
       (although it can be time-consuming). Properly working disks in most modern
       systems don't require this step, because they have their own internal
       mechanisms for mapping out bad disk blocks.

       Finally, there is a confirmation message because initialization will
       destroy any data previously on the partition. If all is well, select
       ``Yes.'' The screen will flash as the initialization program runs.

                         Initialize a Linux Partition

       At this point, the next menu item presented should be ``Initialize a Linux
       Partition.'' If it isn't, either you haven't completed the disk
       partitioning process, or you haven't made one of the menu choices dealing
       with your swap partition.

       You can initialize a Linux partition, or alternately you can mount a
       previously initialized one. Note that dbootstrap will not upgrade an old
       system without destroying it. If you're upgrading, Debian can usually
       upgrade itself, and you won't need to use dbootstrap. The Debian 2.1
       release notes contain upgrade instructions.

       If you are using old disk partitions that are not empty, i.e., if you want
       to just throw away what is on them, you should initialize them (which
       erases all files). Moreover, you must initialize any partitions that you
       created in the disk partitioning step. About the only reason to mount a
       partition without initializing it at this point would be to mount a
       partition upon which you have already performed some part of the
       installation process using this same set of installation floppies.

       Select the ``Next'' menu item to initialize and mount the / disk
       partition. The first partition that you mount or initialize will be the
       one mounted as / (pronounced ``root''). You will be offered the choice to
       scan the disk partition for bad blocks, as you were when you initialized
       the swap partition. It never hurts to scan for bad blocks, but it could
       take 10 minutes or more to do so if you have a large disk.

       Once you've mounted the / partition, the ``Next'' menu item will be
       ``Install Operating System Kernel and Modules'' unless you've already
       performed some of the installation steps. You can use the arrow keys to
       select the menu items to initialize or to mount disk partitions if you
       have any more partitions to set up. If you have created separate
       partitions for /var, /usr, or other filesystems, you should initialize or
       mount them now.

    Mount a Previously-Initialized Partition

       An alternative to the ``Initialize a Partition'' step is the ``Mount a
       Previously-Initialized Partition'' step. Use this if you are resuming an
       installation that was interrupted or if you want to mount partitions that
       have already been initialized.

                      Install Operating System Kernel and Modules

       This should be the next menu step after you've mounted your root
       partition, unless you've already performed this step in a previous run of
       dbootstrap. First, you will be asked to confirm that the device you have
       mounted on root is the proper one. Next, you will be offered a menu of
       devices from which you can install the kernel. Choose the appropriate
       device from which to install the kernel and modules; this will either be a
       CD-ROM device or the first floppy device.

       If you're installing from floppies, you'll need to feed in the Rescue
       Floppy (which is probably already in the drive), followed by the Drivers
       Floppy.

    Configure PCMCIA Support

       There is an alternate step, before the ``Configure Device Driver Modules''
       menu selection, called ``Configure PCMCIA Support.'' This menu is used to
       enable PCMCIA support.

       If you do have PCMCIA but are not installing your Debian system using it
       (i.e., installation with a PCMCIA Ethernet card), you need not configure
       PCMCIA at this point. You can easily configure and enable PCMCIA at a
       later point, after installation is complete. However, if you are
       installing by way of a PCMCIA network device, this alternate must be
       selected, and PCMCIA support must be configured prior to configuring the
       network.

       If you need to install PCMCIA, select the alternate below ``Configure
       Device Driver Modules.'' You will be asked which PCMCIA controller your
       system contains. In most cases, this will be i82365. In some cases, it
       will be tcic; your laptop's vendor-supplied specifications should provide
       the information. You can generally leave the next few sets of options
       blank. Again, certain hardware has special needs; the Linux PCMCIA HOWTO
       contains plenty of information in case the default doesn't work.

       In some unusual cases, you may also need to modify the file
       /etc/pcmcia/config.opts. You can open your second virtual terminal
       (Left Alt-F2) and edit the file there and then reconfigure your PCMCIA, or
       you can manually force a reload of the modules using insmod and rmmod.

       Once PCMCIA is properly configured and installed, you should configure
       your device drivers as described in the next section.

                         Configure Device Driver Modules

       Select the ``Configure Device Driver Modules'' menu item and look for
       devices that are on your system. Configure those device drivers, and they
       will be loaded whenever your system boots.

       You don't have to configure all your devices at this point; what is
       crucial is that any device configuration required for the installation of
       the base system is done here.

       At any point after the system is installed, you can reconfigure your
       modules with the modconf program.

    Configure the Network

       You'll have to configure the network even if you don't have a network, but
       you'll only have to answer the first two questions -``Choose the Host
       name,'' and ``Is your system connected to a network?''

       If you are connected to a network, you'll need the information you
       collected from 2.2.1. However, if your primary connection to the network
       will be PPP, you should choose NOT to configure the network.

       dbootstrap will ask you a number of questions about your network; fill in
       the answers from 2.2.1. The system will also summarize your network
       information and ask you for confirmation. Next, you need to specify the
       network device that your primary network connection uses. Usually, this
       will be eth0 (the first Ethernet device). On a laptop, it's more likely
       that your primary network device is pcmcia.

       Here are some technical details you may find handy: The program assumes
       the network IP address is the bitwise AND of your system's IP address and
       your netmask. It will guess the broadcast address is the bitwise OR of
       your system's IP address with the bitwise negation of the netmask. It will
       guess that your gateway system is also your DNS server. If you can't find
       any of these answers, use the system's guesses. You can change them once
       the system has been installed, if necessary, by editing
       /etc/init.d/network. (On a Debian system, daemons are started by scripts
       in the directory /etc/init.d/.)

    Install the Base System

       During the ``Install the Base System'' step, you'll be offered a menu of
       devices from which you may install the base system. Here, you need to
       select your CD-ROM device.

       You will be prompted to specify the path to the base2_1.tgz file. If you
       have official Debian media, the default value should be correct.
       Otherwise, enter the path where the base system can be found, relative to
       the media's mount point. As with the ``Install Operating System Kernel and
       Modules'' step, you can either let dbootstrap find the file itself or type
       in the path at the prompt.

    Configure the Base System

       At this point you've read in all of the files that make up a minimal
       Debian system, but you must perform some configuration before the system
       will run.

       You'll be asked to select your time zone. There are many ways to specify
       your time zone; we suggest you go to the ``Directories:'' pane and select
       your country (or continent). That will change the available time zones, so
       go ahead and select your geographic locality (i.e., country, province,
       state, or city) in the ``Timezones:'' pane.

       Next, you'll be asked if your system clock is to be set to GMT or local
       time. Select GMT (i.e., ``Yes'') if you will only be running Linux on your
       computer; select local time (i.e., ``No'') if you will be running another
       operating system as well as Debian. Unix (and Linux is no exception)
       generally keeps GMT time on the system clock and converts visible time to
       the local time zone. This allows the system to keep track of daylight
       savings time and leap years, and even allows a user who is logged in from
       another time zone to individually set the time zone used on his or her
       terminal.

    Make Linux Bootable Directly from the Hard Disk

       If you elect to make the hard disk boot directly to Linux, you will be
       asked to install a master boot record. If you aren't using a boot manager
       (and this is probably the case if you don't know what a boot manager is)
       and you don't have another different operating system on the same machine,
       answer ``Yes'' to this question. Note that if you answer ``Yes,'' you
       won't be able to boot into DOS normally on your machine, for instance. Be
       careful. If you answer ``Yes,'' the next question will be whether you want
       to boot Linux automatically from the hard disk when you turn on your
       system. This sets Linux to be the bootable partition -the one that will
       be loaded from the hard disk.

       Note that multiple operating system booting on a single machine is still
       something of a black art. This book does not even attempt to document the
       various boot managers, which vary by architecture and even by
       sub-architecture. You should see your boot manager's documentation for
       more information. Remember: When working with the boot manager, you can
       never be too careful.

       The standard i386 boot loader is called ``LILO.'' It is a complex program
       that offers lots of functionality, including DOS, NT, and OS/2 boot
       management. To find out more about this functionality, you can read the
       documentation in /usr/doc/lilo after your system is set up.

    Make a Boot Floppy

       You should make a boot floppy even if you intend to boot the system from
       the hard disk. The reason is that it's possible for the hard disk
       bootstrap to be mis-installed, but a boot floppy will almost always work.
       Select ``Make a Boot Floppy'' from the menu and feed the system a blank
       floppy as directed. Make sure the floppy isn't write-protected, because
       the software will format and write it. Mark this the ``Custom Boot''
       floppy and write-protect it once it has been written.

    The Moment of Truth

       You system's first boot on its own power is what electrical engineers call
       the ``smoke test.'' If you have any floppies in your floppy drive, remove
       them. Select the ``Reboot the System'' menu item.

       If are booting directly into Debian and the system doesn't start up,
       either use your original installation boot media (for instance, the Rescue
       Floppy) or insert the Custom Boot floppy if you created one, and then
       reset your system. If you are not using the Custom Boot floppy, you will
       probably need to add some boot arguments. If booting with the Rescue
       Floppy or similar technique, you need to specify rescue root=rootfs, where
       rootfs is your root partition, such as /dev/sda1.

       Debian should boot, and you should see the same messages as when you first
       booted the installation system, followed by some new messages.

    Set the Root Password

       The root account is also called the superuser; it is a login that bypasses
       all security protection on your system. The root account should be used
       only to perform system administration and for as short a time as possible.

       Any password you create should contain from six to eight characters, and
       it should contain both uppercase and lowercase characters, as well as
       punctuation characters. Take extra care when setting your root password,
       since it is such a powerful account. Avoid dictionary words or use of any
       personal information that could be guessed.

       If anyone ever tells you he needs your root password, be extremely wary.
       You should normally never give out your root account, unless you are
       administering a machine with more than one system administrator.

    Create an Ordinary User

       The system will ask you to create an ordinary user account. This account
       should be your main personal login. You should not use the root account
       for daily use or as your personal login.

       Why not? It's a lot harder to do damage to the system as an ordinary user
       than as root; system files are protected. Another reason is that you might
       be tricked into running a Trojan horse program -that is, a program that
       takes advantage of your superuser powers to compromise the security of
       your system behind your back. Any good book on Unix system administration
       will cover this topic in more detail. Consider reading one if this topic
       is new to you.

       Name the user account anything you like. If your name is John Smith, you
       might use ``smith,'' ``john,'' ``jsmith,'' or ``js.''

    Shadow Password Support

       Next, the system will ask whether you want to enable shadow passwords.
       This is an authentication system that makes your Linux system a bit more
       secure. Therefore, we recommend that you enable shadow passwords.
       Reconfiguration of the shadow password system can also be done later with
       the shadowconfig program.

    Remove PCMCIA

       If you have no use for PCMCIA, you can choose to remove it at this point.
       This will make your startup cleaner; also, it will make it easier to
       replace your kernel (PCMCIA requires a lot of correlation between the
       version of the PCMCIA drivers, the kernel modules, and the kernel itself).
       In general, you will not need PCMCIA unless you're using a laptop.

                         Select and Install Profiles

       The system will now ask you if you want to use the pre-rolled software
       configurations offered by Debian. You can always choose package-by-package
       what you want to install on your new machine. This is the purpose of the
       dselect program, described below. But this can be a long task with the
       thousands of packages available in Debian!

       So, you have the ability to choose tasks or profiles instead. A task is
       work you will do with the machine, such as ``Perl programming'' or ``HTML
       authoring'' or ``Chinese word processing.'' You can choose several tasks.
       A profile is a category your machine will be a member of, such as
       ``Network server'' or ``Personal workstation.'' Unlike with tasks, you can
       choose only one profile.

       To summarize, if you are in a hurry, choose one profile. If you have more
       time, choose the Custom profile and select a set of tasks. If you have
       plenty of time and want very precise control on what is or is not
       installed, skip this step and use the full power of dselect.

       Soon, you will enter into dselect. If you selected tasks or profiles,
       remember to skip the ``Select'' step of dselect, because the selections
       have already been made.

       A word of warning about the size of the tasks as they are displayed: The
       size shown for each task is the sum of the sizes of its packages. If you
       choose two tasks that share some packages, the actual disk requirement
       will be less than the sum of the sizes for the two tasks.

       Once you've added both logins (root and personal), you'll be dropped into
       the dselect program. dselect allows you to select packages to be installed
       on your system. If you have a CD-ROM or hard disk containing the
       additional Debian packages that you want to install on your system, or if
       you are connected to the Internet, this will be useful to you right away.
       Otherwise, you may want to quit dselect and start it later after you have
       transported the Debian package files to your system. You must be the
       superuser (root) when you run dselect. Information on how to use dselect
       is given in section 3.20.

                         Package Installation with dselect

       It is now time to install the software packages of your choice on your
       Debian system. This is done using Debian's package management tool,
       dselect.

    Introduction

       This section documents dselect for first-time users. It makes no attempt
       to explain everything, so when you first meet dselect, work through the
       help screens.

       dselect is used to select which packages you wish to install (there are
       currently about 2,250 packages in Debian 2.1). It will be run for you
       during the installation. It is a very powerful and somewhat complex tool.
       As such, having some knowledge of it beforehand is highly recommended.
       Careless use of dselect can wreak havoc on your system.

       dselect will step you through the package installation process outlined
       here:
        1. Choose the access method to use.
        2. Update list of available packages, if possible.
        3. Select the packages you want on your system.
        4. Install and upgrade wanted packages.
        5. Configure any packages that are unconfigured.
        6. Remove unwanted software.
       As each step is completed successfully, dselect will lead you on to the
       next. Go through them in order without skipping any steps.

       Here and there in this document we talk of starting another shell. Linux
       has six console sessions or shells available at any one time. You switch
       between them by pressing Left Alt-F1 through Left Alt-F6, after which you
       log in on your new shell and go ahead. The console used by the install
       process is the first one, a.k.a. tty1, so press Left Alt-F1 when you want
       to return to that process.

    Once dselect Is Launched

       Once in dselect, you will get this screen:

              Debian Linux `dselect' package handling frontend.

              0. [A]ccess Choose the access method to use.

              1. [U]pdate Update list of available packages, if possible.

              2 [S]elect Request which packages you want on your system.

              3. [I]nstall Install and upgrade wanted packages.

              4. [C]onfig Configure any packages that are unconfigured.

              5. [R]emove Remove unwanted software.

              6. [Q]uit Quit dselect.

       Let's look at these one by one.

      Access

       The Access screen is shown in Figure 3.2 on page [*].

                         Figure 3.2: dselect Access screen
            \resizebox*{4in}{!}{\includegraphics{images/dselect-access.eps}}

       Here we tell dselect where our packages are. Ignore the order that these
       appear in. It is very important that you select the proper method for
       installation. You may have a few more methods listed, or a few less, or
       you may see them listed in a different order; just don't worry about it.
       In the following list, we describe the different methods.

       multi_cd.
              Quite large and powerful, this complex method is the recommended
              way of installing a recent version of Debian from a set of
              multiple binary CDs. Each of these CDs should contain information
              about the packages in itself and all prior CDs (in the file
              Packages.cd). When you first select this method, be sure the
              CD-ROM you will be using is not mounted. Place the last binary
              disk of the set (we don't need the source CDs) in the drive and
              answer the questions you are asked:

              CD-ROM drive location

              Confirmation that you are using a multi-cd set

              The location of the Debian distribution on the disk(s)

              [ Possibly ] the location(s) of the Packages file(s)

       Once you have updated the available list and selected the packages to be
       installed, the multi_cd method diverges from normal procedure. You will
       need to run an ``install'' step for each of the CDs you have, in turn.
       Unfortunately, due to the limitations of dselect, it will not be able to
       prompt you for a new disk at each stage; the way to work for each disk is
       outlined here:

        1. Insert the CD in your CD-ROM drive.
        2. From the main dselect menu, select ``Install.''
        3. Wait until dpkg finishes installing from this CD. (It may report
           installation successful, or possibly installation errors. Don't worry
           about these until later.)
        4. Press Return to go back to the main dselect menu.
        5. Repeat with the next CD in the set.
       It may be necessary to run the installation step more than once to cover
       the order of package installation; some packages installed early may need
       to have later packages installed before they will configure properly.

       Running a ``Configure'' step is recommended to help fix any packages that
       may end up in this state.

       multi_nfs, multi_mount.

              These are similar to the multi_cd method and are refinements on
              the theme of coping with changing media -for example, installing
              from a multi_cd set exported via NFS from another machine's CD-ROM
              drive. indexdselect!multi-NFS, multi-mount installation

       apt.
              One of the best options for installation from a local mirror of
              the Debian archive or from the network. This method uses the
              ``apt'' system to do complete dependency analysis and ordering, so
              it's most likely to install packages in the optimal order.

       Configuration of this method is straightforward. You may select any number
       of different locations, mixing and matching file: URLs (local disks or NFS
       mounted disks), http: URLs, or ftp: URLs. Note, however, that the HTTP and
       FTP options do not support local authenticating proxies.

       If you have proxy server for either HTTP or FTP (or both), make sure you
       set the http_proxy and ftp_proxy environment variables, respectively. Set
       them from your shell before starting dselect by using the following
       command:

              # export http_proxy=http://gateway:3128/

              # dselect

      Update

       dselect will read the Packages or Packages.gz files from the mirror and
       create a database on your system of all available packages. This may take
       a while as it downloads and processes the files.

      Select

       Hang on to your hat. This is where it all happens. The object of the
       exercise is to select just which packages you wish to have installed.

       Press Enter. If you have a slow machine, be aware that the screen will
       clear and can remain blank for 15 seconds. So don't start bashing keys at
       this point.

       The first thing that comes up on the screen is page 1 of the Help file.
       You can get to this help by pressing ? at any point in the ``Select''
       screens, and you can page through the help screens by hitting the . (full
       stop) key.

       Before you dive in, note these points:

         * To exit the ``Select'' screen after all selections are complete, press
           Enter. This will return you to the main screen if there is no problem
           with your selection. Otherwise, you will be asked to deal with that
           problem. When you are happy with any given screen, press Enter to get
           out.
         * Problems are quite normal and are to be expected. If you select
           package A and that package requires package B to run, dselect will
           warn you of the problem and will most likely suggest a solution. If
           package A conflicts with package B (i.e., if they are mutually
           exclusive), you will be asked to decide between them.
       Let's look at the top two lines of the Select screen. This header reminds
       us of some of the special keys listed in Table 3.1.

                         Table 3.1: Special dselect keys

                +------------------------------------------------------+
                | Key  |                  Description                  |
                |------+-----------------------------------------------|
                |  +   |      Select a package for installation.       |
                |------+-----------------------------------------------|
                |  =   |            Place a package on hold            |
                |------+-----------------------------------------------|
                |  -  |               Remove a package.               |
                |------+-----------------------------------------------|
                |  _   | Remove a package and its configuration files. |
                |------+-----------------------------------------------|
                | i, I |      Toggle/cycle information displays.       |
                |------+-----------------------------------------------|
                | o, O |        Cycle through the sort options.        |
                |------+-----------------------------------------------|
                | v, V |            A terse/verbose toggle.            |
                +------------------------------------------------------+

       Table 3.2 lists the states that dselect uses to denote the status of each
       package it is aware of.

                         Table 3.2: dselect Package States

                   +-----------------------------------------------+
                   | Flag |     Meaning     |   Possible values    |
                   |------+-----------------+----------------------|
                   |  E   |      Error      |     Space, R, I      |
                   |------+-----------------+----------------------|
                   |  I   | Installed State | Space, *, -, U, C, I |
                   |------+-----------------+----------------------|
                   |  O   |    Old Mark     |    *, -, =, _, n     |
                   |------+-----------------+----------------------|
                   |  M   |      Mark       |    *, -, =, _, n     |
                   +-----------------------------------------------+
    
    

       Rather than spell all this out here, I refer you to the Help screens where
       all is revealed. One example, though.

       You enter dselect and find a line like this:

              EIOM Pri Section Package Description

                 ** Opt misc loadlin a loader (running under DOS) for LINUX

       This is saying that loadlin was selected when you last ran dselect and
       that it is still selected, but it is not installed. Why not? The answer
       must be that the loadlin package is not physically available. It is
       missing from your mirror.

       The information that dselect uses to get all the right packages installed
       is buried in the packages themselves. Nothing in this world is perfect,
       and it does sometimes happen that the dependencies built into a package
       are incorrect, which means that dselect simply cannot resolve the
       situation. A way out is provided where the user can regain control; it
       takes the form of the commands Q and X, which are available in the Select
       screen.

       Q
              An override. Forces dselect to ignore the built-in dependencies
              and to do what you have specified. The results, of course, will be
              on your own head.

       X
              Use X if you get totally lost. It puts things back the way they
              were and exits.

       Select screen (dselect) Keys that help you not to get lost (!) are R, U,
       and D.

       R
              Cancels all selections at this level. Does not affect selections
              made at the previous level.

       U
              If dselect has proposed changes and you have made further changes
              U will restore dselect's selections.

       D
              Removes the selections made by dselect, leaving only yours.

       An example follows. The boot-floppies package (not an example for
       beginners, I know, but it was chosen because it has a lot of dependencies)
       depends on these packages:

         * libc6-pic
         * slang1-pic
         * sysutils
         * makedev
         * newt0.25
         * newt0.25-dev
         * popt
         * zlib1g
         * zlib1g-dev
         * recode
       The person maintaining boot-floppies also thinks that the following
       packages should be installed. These are not, however, essential:

         * lynx
         * debiandoc-sgml
         * unzip

       When you select boot-floppies, dselect brings up the conflict resolution
       screen. You'll notice that all the required packages have been selected.

       Pressing the R key puts things back to the starting point.

              EIOM Pri Section Package Description

                 __ Opt admin boot-floppie Scripts to create the Debian

                 __ Opt devel newt0.25-dev Developer's toolkit for newt

                 __ Opt devel slang1-dev The S-Lang programming library

                 __ Opt devel slang1-pic The S-Lang programming library

       If you decide now that you don't want boot-floppies, just press Enter.

       Pressing the D key puts things the way I selected them in the first place:

              EIOM Pri Section Package Description

                 _* Opt admin boot-floppie Scripts to create the Debian

                 __ Opt devel newt0.25-dev Developer's toolkit for newt

                 __ Opt devel slang1-dev The S-Lang programming library

                 __ Opt devel slang1-pic The S-Lang programming library

       Pressing the U key restores dselect's selections:

              EIOM Pri Section Package Description

                 _* Opt admin boot-floppie Scripts to create the Debian installation

                 _* Opt devel newt0.25-dev Developer's toolkit for newt

                 _* Opt devel slang1-dev The S-Lang programming library

                 _* Opt devel slang1-pic The S-Lang programming library

       I suggest running with the defaults for now; you will have ample
       opportunities to add more later.

       Whatever you decide, press Enter to accept and return to the main screen.
       If this results in unresolved problems, you will be bounced right back to
       another problem resolution screen.

       The R, U, and D keys are very useful in ``what if'' situations. You can
       experiment at will and then restore everything and start again. Don't look
       on them as being in a glass box labeled ``Break in Case of Emergency.''

       After making your selections in the Select screen, press I to give you a
       big window, press t to take you to the beginning, and then use the
       Page Down key to look quickly through the settings. This way you can check
       the results of your work and spot glaring errors. Some people have
       deselected whole groups of packages by mistake and not noticed the error
       until too late. dselect is a very powerful tool; don't misuse it.

       You should now have the situation shown in Table 3.3.

                      Table 3.3: Expected Package Category States

                        +--------------------------------------+
                        | Package category |      Status     |
                        |------------------+-------------------|
                        |     Required     |   all selected     |
                        |------------------+-------------------|
                        |    Important     |   all selected     |
                        |------------------+-------------------|
                        |     Standard     |  mostly selected|
                        |------------------+-------------------|
                        |     Optional     | mostly deselected |
                        |------------------+-------------------|
                        |      Extra       | mostly deselected |
                        +--------------------------------------+
    

       Happy? Press Enter to exit the Select process. You can come back and run
       Select again if you wish.

      Install

       dselect runs through the entire set of packages and installs those
       selected. Expect to be asked to make decisions as you go. It is often
       useful to switch to a different shell to compare, say, an old
       configuration with a new one. If the old file is conf.modules, the new one
       will be conf.modules.dpkg-dist.

       The screen scrolls past fairly quickly on a fast machine. You can stop and
       start it with Ctrl-s and Ctrl-q, respectively, and at the end of the run,
       you will get a list of any uninstalled packages.

       It can happen that a package does not get installed because it depends on
       some other package that is listed for installation but is not yet
       installed. The answer here is to run Install again. Cases have been
       reported where it was necessary to run it four times before everything
       slipped into place. This will vary by your acquisition method.

      Configure

       Most packages get configured in step 3, but anything left hanging can be
       configured here.

      Remove

       Removes packages that are installed but no longer required.

      Quit

       I suggest running /etc/cron.daily/find at this point, because you have a
       lot of new files on your system. Then you can use locate to get the
       location of any given file.

    A Few Hints in Conclusion

       When the install process runs dselect for you, you will doubtless be eager
       to get Debian running as soon as possible. Well, please be prepared to
       take an hour or so to learn your way around and then get it right. When
       you enter the Select screen for the first time, don't make any selections
       at all -just press Enter and see what dependency problems there are. Try
       fixing them. If you find yourself back at the main screen, run Select
       again.

       You can get an idea of the size of a package by pressing i twice and
       looking for the ``Size'' figure. This is the size of the compressed
       package, so the uncompressed files will be a lot bigger (see
       ``Installed-Size,'' which is in kilobytes, to know it).

       Installing a new Debian system is a complex thing, but dselect can do it
       for you as easy as can be. So take the time to learn how to drive it. Read
       the help screens and experiment with i, I, o, and O. Use the R key. It's
       all there, but it's up to you to use it effectively.

    Glossary

       The following terms will be useful to you throughout this book and in
       general when you're talking about Debian.

       Package.
              A file that contains everything needed to install, de-install, and
              run a particular program. The program that handles packages is
              dpkg. dselect is a front-end to dpkg. Experienced users often use
              dpkg to install or remove a package.

       Package names.
              All package names have the form xxxxxxxxxxx.deb. Sample package
              names include the following:

         * efax_08a-1.deb
         * lrzsz_0.12b-1.deb
         * mgetty_0.99.2-6.deb
         * minicom_1.75-1.deb
         * term_2.3.5-5.deb
         * uucp_1.06.1-2.deb
         * uutraf_1.1-1.deb
         * xringd_1.10-2.deb
         * xtel_3.1-2.deb

    Logging In

       Your system is now installed! Pat yourself on the back for a job well
       done! Now it's time to start using the system. In this chapter, we
       introduce you to the Debian command line, some security principles, and
       how to exit the system. In later chapters, we'll go into more detail on
       these topics and introduce you to the Debian graphical interface, X11.

    First Steps

       After you quit dselect, you'll be presented with the login: prompt. You
       can now log in using the personal login and password you selected; your
       system is now ready to use. Let's examine what it means to log in and how
       this process works.

       To use Debian, you must identify yourself to the system. This is so it
       knows who you are, what you have permission to do, and what your
       preferences are.

       To this end, you have a username or login. If you installed Debian
       yourself, you should have been asked to give such a name during
       installation. If you are logging on to a system administered by someone
       else, you'll have to ask him for an account on the system and a
       corresponding username.

       You also have a password, so no one else can pretend to be you. If you
       don't have a password, anyone can log on to your computer from the
       Internet and do bad things. If you're worried about security, you should
       have a password.

       Many people prefer to trust others not to do anything malicious with their
       account; hopefully your work environment doesn't encourage paranoia. This
       is a perfectly reasonable attitude; it depends on your personal priorities
       and your environment. Obviously a home system does not need to be as
       secure as a military installation. Debian allows you to be as secure or as
       insecure as you like.

       When you start Debian, you'll see a prompt: a request from the computer
       for some information. In this case, the prompt is login:.

       You should type your username and, when requested, your password. The
       password does not appear on the screen as you type it. Press Enter after
       both the username and the password. If you type your username or password
       incorrectly, you'll have to start over.

       If you do it correctly, you'll see a brief message and then a $ prompt.
       The $ is printed by a special program called the shell and is thus called
       a shell prompt. This is where you give commands to the system.

       Try entering the command whoami now. There is a cursor to the right of the
       shell prompt. Your cursor is a small underscore or rectangle that
       indicates where you're typing; it should move as you type. Always press
       Enter when you're done typing a shell command.

       whoami tells your username. You'll then get a new shell prompt.

       For the rest of the book, when we say to enter a command, you should type
       it at the shell prompt and press the Enter key.

       When you're done working, you may want to log out of the system. To exit
       the shell, enter the exit command. Keep in mind that if you remain logged
       in, someone could come along and use your account. Hopefully you can trust
       those in your office or home not to do this; but if you do not trust your
       environment, you should be certain to log out when you leave.

                         Command History and Editing the
                         Command Line

       Whatever you type after the shell prompt and before pressing Enter is
       called a command line. It's a line of text that commands the computer to
       do something. The Debian default shell offers several features to make
       entering command lines easy.

       You can scroll up to previous commands to run them again, or you can
       modify them slightly and then run them again. Try this: Enter any command,
       such as whoami; then press the Up Arrow key. The whoami command will
       reappear at the prompt. You can then press Enter to run whoami a second
       time.

       If you've entered several commands, you can keep pressing the Up Arrow key
       to go back through them. This feature is handy if you're doing the same
       thing several times, or if you type a command incorrectly and want to go
       back to fix it. You can press the Down Arrow key to move in the other
       direction, toward your more recent commands. If there are no more commands
       to move to, the computer will beep.

       You can also move around on the command line to make changes. The easiest
       way is with the Left and Right Arrow keys. Try typing whoasmi instead of
       whoami, and then use the Left Arrow key to move back to the s. You can
       erase the s with the Backspace or Delete keys.

       There are more advanced features as well (no need to memorize them all
       now, though). Try pressing Ctrl-a. This moves you to the beginning of the
       line. Ctrl-k (the k stands for ``kill'') deletes all characters until the
       end of the line; try it from the middle of the command line. Using Ctrl-a
       followed by Ctrl-k, you can delete the entire command line. Ctrl-y pastes
       the last thing you killed, reinserting it at the current cursor position
       (y stands for ``yank,'' as in ``yank it back''). Ctrl-e will move the
       cursor to the end of the command line.

       Go ahead and play around with command-line editing to get a feel for it.
       Experiment.

    Working as Root

       Because Debian is a multiuser system, it's designed to keep any one user
       or program from breaking the entire system. The kernel will not allow
       normal users to change important system files. This means that things stay
       the way they're supposed to, safe from accidents, viruses, and even
       malicious pranks. Unlike other operating systems, Debian is safe from
       these threats. You won't need an anti-virus program.

       However, sometimes you need to change important system files; for example,
       you might want to install new software or configure your network
       connection. To do so, you have to have greater powers than a normal user;
       you must become the root user (also called the superuser).

       To become root, just log on with the username root and the root password;
       this was set during installation, as described in section 3.15 on page
       [*].

       At many sites, only the system administrator has the root password, and
       only the system administrator can do the things that one must be root to
       do. If you're using your own personal computer, you are the system
       administrator, of course. If you don't have root privileges, you will have
       to rely on your system administrator to perform any tasks that require
       root privileges.

       Sometimes you'll have the root password even on a shared corporate or
       educational server, because the system administrator trusts you to use it
       properly. In that case, you'll be able to help administer the system and
       customize it for your needs. But you should be sure to use the password
       responsibly, respecting other users at all times.

       If you have the password, try logging on as root now. Enter the whoami
       command to verify your identity. Then log out immediately. When you're
       root, the kernel will not protect you from yourself, because root has
       permission to do anything at all to the system. Don't experiment while
       you're root. In fact, don't do anything as root unless absolutely
       necessary. This isn't a matter of security, but rather of stability. Your
       system will run much better if it can keep you from making mistakes.

       You may find the su command more convenient than logging in as root. su
       allows you to assume the identity of another user, usually root unless you
       specify someone else. (You can remember that su stands for Super User,
       though some say it stands for Set UserID.)

       Here's something to try. Log on as yourself -that is, not as root. Then
       your session will look something like the one in Figure 4.1.

       When you're doing system administration tasks, you should do as much as
       possible as yourself. Then use su, do the part that requires root
       privileges, and use the exit command to turn off privileges so you can no
       longer harm anything.

       You can use su to assume the identity of any user on the system, not just
       root. To do this, type su user where user is the user you want to become.
       You'll have to know the user's password, of course, unless you're root at
       the time or the user has no password.

                         Figure 4.1: Sample session with su \begin{figure}\par\par\begin{list}{}{ \setlength{\rightmargin}{\leftmargin} \ra... ...~~~~~~~~~~~~~}\textrm{\textit{Exit your \lq\lq normal'' shell}}\end{list}\end{figure}

    Virtual Consoles

       The Linux kernel supports virtual consoles. These provide a way of making
       your single screen and keyboard seem like multiple terminals that are
       connected to the same system. Thankfully, using virtual consoles is one of
       the simplest things about Debian: There are ``hot keys'' for switching
       among the consoles quickly. To try it, log in to your system and press
       Alt-F2 (simultaneously press the left Alt key, and F2, that is, function
       key number 2).

       You should find yourself at another login prompt. Don't panic: You are now
       on virtual console (VC) number 2! Log in here and do some things -more
       whoami commands or whatever -to confirm that this is a real login shell.
       Now you can return to virtual console number 1 by pressing Alt-F1. Or you
       can move on to a third virtual console, in the obvious way (Alt-F3).

       Debian comes with six virtual consoles enabled by default, which you
       access with the Alt key and function keys F1 through F6. (Technically,
       there are more virtual consoles enabled, but only six of them allow you to
       log in. The others are used for the X Window system or other special
       purposes.)

       If you're using the X Window system, it will generally start up on the
       first unused virtual console -probably VC 7. Also, to switch from the X
       virtual console to one of the first six, you'll have to add Ctrl to the
       key sequence. So that's Ctrl-Alt-F1 to get to VC 1. But you can go from a
       text VC to the X virtual console using only Alt. If you never leave X, you
       won't have to worry about this; X automatically switches you to its
       virtual console when it starts up.

       Once you get used to them, virtual consoles will probably become an
       indispensable tool for getting many things done at once. (The X Window
       system serves much the same purpose, providing multiple windows rather
       than multiple consoles.) You can run a different program on each VC or log
       on as root on one VC and as yourself on another. Or everyone in the family
       can use his or her own VC; this is especially handy if you use X, in which
       case you can run several X sessions at once on different virtual consoles.

    Shutting Down

       Do not just turn off the computer! You risk losing valuable data!

       If you are the only user of your computer, you might want to turn the
       computer off when you're done with it.

       To avoid possibly weakening some hardware components, only turn off the
       computer when you're done for the day. Power up and power down are the two
       greatest contributors to wear and tear on computer components. Turning the
       computer on and off once a day is probably the best compromise between
       your electric bill and your computer's lifespan.

       It's a bad thing to just press the power switch when you're done using the
       computer. It is also bad to reboot the machine (with the Reset button)
       without first taking proper precautions. The Linux kernel, in order to
       improve performance, has a disk cache. This means it temporarily stores
       information meant for permanent storage in RAM. Because memory is
       thousands of times faster than a disk, this makes many file operations
       move more quickly. Periodically, the information Linux has in memory is
       actually written to the disk. This is called syncing. In order to turn off
       or reboot the computer safely, you'll have to tell the computer to clear
       everything out of memory and put it in permanent storage.

       To reboot, just type reboot or press Ctrl-Alt-Del (that's Ctrl, Alt, and
       Delete).

       To shut down, you'll have to log in as root. As root, just type the
       command shutdown -h now. The sytem will go through the entire shutdown
       procedure, including the sync command, which clears the disk cache as
       described above. When you see System halted, it's safe to turn off the
       computer. If you have Advanced Power Management (APM) support in your
       kernel and BIOS, the computer might shut itself off and save you the
       trouble. APM is common in laptops and is also found in certain desktop
       mainboards.

    The Basics

       It's now time to explore the system in more detail. You've seen how to log
       in and shut down the system. In this chapter, we explore the Linux comand
       line, how Linux deals with files and directories, and some basics on
       identifying yourself to others.

                         The Command Line and Man Pages

       We've already discussed the command line -that is, commands you type
       after the shell prompt. This section describes the structure of more
       complicated command lines.

       A minimal command line contains just a command name, such as whoami. But
       other things are possible. For example, you might type: man whoami. This
       command requests the online manual for the whoami program (you may have to
       press the space bar to scroll through the documentation or press q to
       quit). A more complicated example is man -k PostScript. This command line
       has three parts. It begins with the command name, man. Then it has an
       option or switch, -k, followed by an argument, PostScript. Some people
       refer to everything except the command name as the parameters of the
       command. So, options and arguments are both parameters.

       Options change the behavior of a command, switching on particular features
       or functionality. They usually have a -before them. The GNU utilities
       also have ``long forms'' for the options; the long form of -k is -apropos.
       You can enter man -h or man -help to get a full list of options for the
       man command. Every command will have its own set of options, though most
       have -help and -version options. Some commands, such as tar, do not
       require the ``-'' before their options for historical reasons.

       Anything that isn't an option and isn't the command name is an argument
       (in this case, PostScript). Arguments can serve many purposes; most
       commonly, they are filenames that the command should operate on. In this
       case, PostScript is the word you want man to search for. In the case of
       man whoami, the argument was the command you wanted information about.

       Here's a breakdown of the man -k PostScript command line:

       man.
              The command name, tells the computer to look at the manual pages.
              These provide documentation for commands. For example, man whoami
              will give you documentation on the whoami command.

       -k.
              The option, changes the behavior of man. Normally man expects a
              command name, such as whoami, for an argument and looks for
              documentation of that command. But with the -k or -apropos option,
              it expects the argument to be a keyword. It then gives a list of
              all manual pages with that keyword in their description.

       PostScript.
              is the argument; because we used the -k option, it's the keyword
              to search for.

       -k and PostScript are both parameters.

       Go ahead and type man -k PostScript, and you will see a list of all the
       manual pages on your system that have something to do with PostScript. If
       you haven't installed much software, you might see the message
       PostScript: nothing appropriate instead.

    Describing the Command Line

       Note: You can skip this section if you want to move on.

       There's a traditional, concise way of describing command syntax. Syntax
       means the correct ways to combine various options and arguments. For
       example, if you type man man to get the manual page about man, you'll see
       several syntax descriptions beginning with the command name man. One of
       them will look like this: man -k [-M path] keyword ...

       Anything in brackets ([]) is an optional unit. In this case you don't have
       to use the -M option, but if you do, you must use a path argument. You
       must use the -k option and the keyword argument. The ... means that you
       could have more of whatever came before it, so you could look up several
       keywords.

       Let's look at one of the more complex descriptions from the man manual
       page:

              man [-c|-w|-tZT device] [-adhu7V]

              [-m system[,...]] [-L locale] [-p string]

              [-M path] [-P pager] [-r prompt] [-S list]

              [-e extension] [[section] page ...] ...

       There's no need to go through all of this (and don't worry about what it
       all means), but do pay attention to the organization of the description.

       First, clusters of options usually mean you can use one or more of them in
       different combinations, so -adhu7V means you can also use -h. However, you
       can't always use all combinations; this description doesn't make that
       clear. For example, -h is incompatible with other options, but you could
       do man -du. Unfortunately, the description's format does not make this
       clear.

       Second, the | symbol means ``or.'' So you can use the -c, the -w, or the
       -tZT option, followed by a device argument.

       Third, notice that you can nest the brackets, because they indicate
       optional units. So if you have a section, you must also have a page,
       because e page is not optional within the [[section] page] unit.

       There's no need to memorize any of this, just refer to this section as you
       read documentation.

    Files and Directories

       Files are a facility for storing and organizing information, analogous to
       paper documents. They're organized into directories, which are called
       folders on some other systems. Let's look at the organization of files on
       a Debian system:

       /.
              A simple / represents the root directory. All other files and
              directories are contained in the root directory. If you are coming
              from the DOS/Windows world, / is very similar to what C:is for
              DOS, that is the root of the filesystem. A notable difference
              between DOS and Linux however, is that DOS keeps several
              filesystems: C: (first hard disk), A: (first floppy disk), and D:
              (either CD-ROM or second hard disk), whereas Linux has all its
              files organized above the same / root.

       /home/janeq.
              This is the home directory of user ``janeq.'' Reading left to
              right, to get to this directory you start in the root directory,
              enter directory home, and then enter directory janeq.

       /etc/X11/XF86Config.
              This is the configuration file for the X Window system. It resides
              in the X11 subdirectory of the /etc directory. /etc is in turn a
              subdirectory of the root directory, /.

       Things to note:

         * Filenames are case-sensitive. That is, MYFILE and MyFile are different
           files.
         * The root directory is referred to as simply /. Don't confuse this
           ``root'' with the root user, the user on your system with ``super
           powers.''
         * Every directory has a name, which can contain any letters or symbols
           except /. The root directory is an exception; its name is /
           (pronounced ``slash'' or ``the root directory''), and it cannot be
           renamed.
         * While you can use almost any letters or symbols in a filename, in
           practice it's a bad idea. It is better to avoid characters that often
           have special meanings on the command line, including: { } ( ) [ ] ' `
           " \/ > < | ; ! # &^ * %
         * Also avoid putting spaces in filenames. If you want to separate words
           in a name, good choices are the period, hyphen, and underscore. You
           could also capitalize each word, LikeThis.
         * Each file or directory is designated by a fully-qualified filename,
           absolute filename, or path, giving the sequence of directories which
           must be passed through to reach it. The three terms are synonymous.
           All absolute filenames begin with the / directory, and there's a /
           before each directory or file in the filename. The first / is the name
           of a directory, but the others are simply separators to distinguish
           the parts of the filename.
         * The words used here can be confusing. Take the following example:
           /usr/share/keytables/us.map.gz. This is a fully-qualified filename;
           some people call it a path. However, people will also refer to
           us.map.gz alone as a filename.
         * There is also another use for the word ``path.'' The intended meaning
           is usually clear from the context.
         * Directories are arranged in a tree structure. All absolute filenames
           start with the root directory. The root directory has a number of
           branches, such as /etc and /usr. These subdirectories in turn branch
           into still more subdirectories, such as /etc/init.d and /usr/local.
           The whole thing together is called the ``directory tree.''
         * You can think of an absolute filename as a route from the base of the
           tree (/) to the end of some branch (a file). You'll also hear people
           talk about the directory tree as if it were a family tree: Thus
           subdirectories have ``parent,'' and a path shows the complete ancestry
           of a file.
         * There are also relative paths that begin somewhere other than the root
           directory. More on this later.
         * No directory corresponds to a physical device, such as your hard disk.
           This differs from DOS and Windows, in which all paths begin with a
           device name such as C:\. The directory tree is meant to be an
           abstraction of the physical hardware, so you can use the system
           without knowing what the hardware is. All your files could be on one
           disk -or you could have 20 disks, some of them connected to a
           different computer elsewhere on the network. You can't tell just by
           looking at the directory tree, and nearly all commands work just the
           same way no matter what physical device(s) your files are really on.
       Don't worry if all this isn't completely clear yet. There are many
       examples to come.

    Using Files: A Tutorial

       To use your system, you'll have to know how to create, move, rename, and
       delete files and directories. This section describes how to do so with the
       standard Debian commands.

       The best way to learn is to try things. As long as you aren't root (and
       haven't yet created any important personal files), you cannot mess up too
       seriously. Jump in -type each of these commands at the prompt and press
       Enter.

              pwd
       One directory is always considered the current working directory for the
       shell you're using. You can view this directory with the pwd command,
       which stands for Print Working Directory. pwd prints the name of the
       directory you're working in -probably /home/yourname.

              ls
       ls stands for ``list,'' as in ``list files.'' When you type ls, the system
       displays a list of all the files in your current working directory. If
       you've just installed Debian, your home directory may well be empty. If
       your working directory is empty, ls produces no output, because there are
       no files to list.

              cd /
       cd means ``change directory.'' In this case, you've asked to change to the
       root directory.

              pwd
       This verifies that you're working in the root directory.

              ls
       Lets you see what's in /.

              cd
       Typing cd with no arguments selects your home directory -/home/ yourname
       -as the current working directory. Try pwd to verify this.

       Before continuing, you should know that there are actually two different
       kinds of filenames. Some of them begin with /, the root directory, such as
       /etc/profile. These are called absolute filenames because they refer to
       the same file no matter what your current directory is. The other kind of
       filename is relative.

       Two directory names are used only in relative filenames: . and ... The
       directory . refers to the current directory, and .. is the parent
       directory. These are ``shortcut'' directories. They exist in every
       directory. Even the root directory has a parent directory -it's its own
       parent!

       So filenames that include . or .. are relative, because their meaning
       depends on the current directory. If I'm in /usr/bin and type ../etc, I'm
       referring to /usr/etc. If I'm in /var and type ../etc, I'm referring to
       /etc. Note that a filename without the root directory at the front
       implicitly has ./ at the front. So you can type local/bin, or ./local/bin
       and it means the same thing.

       A final handy tip: The tilde ~ is equivalent to your home directory. So
       typing cd ~ is the same as typing cd with no arguments. Also, you can type
       things like cd ~/practice/mysubdirectory to change to the directory
       /home/yourname/practice/mysubdirectory. In a similar way, ~myuser is
       equivalent to the home directory of the user ``myuser,'' which is probably
       something like /home/myuser; so ~myuser/docs/debian.ps is equivalent to
       /home/myuser/doc/debian.ps.

       Here are some more file commands to try out, now that you know about
       relative filenames. cd to your home directory before you begin.

              mkdir practice
       In your home directory, make a directory called practice. You'll use this
       directory to try out some other commands. You might type ls to verify that
       your new directory exists.

              cd practice
       Changes the directory to practice.

              mkdir mysubdirectory
       Creates a subdirectory of practice.

              cp /etc/profile .
       cp is short for ``copy.'' /etc/profile is just a random file on your
       system, don't worry about what it is for now. We've copied it to . (recall
       that . just means ``the directory I'm in now,'' or the current working
       directory). So this creates a copy of /etc/profile and puts it in your
       practice directory. Try typing ls to verify that there's indeed a file
       called profile in your working directory, alongside the new
       mysubdirectory.

              more profile
       This lets you view the contents of the file profile. more is used to view
       the contents of text files. It's called more because it shows one
       screenful of the file at a time, and you press the space bar to see more.
       more will exit when you get to the end of the file, or when you press q
       (quit).

              more /etc/profile
       Verifies that the original looks just like the copy you made.

              mv profile mysubdirectory
       mv stands for ``move.'' You've moved the file profile from the current
       directory into the subdirectory you created earlier.

              ls
       Verifies that profile is no longer in the current directory.

              ls mysubdirectory
       Verifies that profile has moved to mysubdirectory.

              cd mysubdirectory
       Changes to the subdirectory.

              mv profile myprofile
       Note that unlike some operating systems, there is no difference between
       moving a file and renaming it. Thus there's no separate rename command.
       Note that the second argument to mv can be a directory to move the file or
       directory into, or it can be a new filename. cp works the same way.

       As usual, you can type ls to see the result of mv.

              mv myprofile ..
       Just as . means ``the directory I'm in now,'' .. means ``parent of the
       current directory,'' in this case the practice directory you created
       earlier. Use ls to verify that that's where myprofile is now.

              cd ..
       Changes directories to the parent directory -in this case practice, where
       you just put myprofile.

              rm myprofile
       rm means ``remove,'' so this deletes myprofile. Be careful! Deleting a
       file on a GNU/Linux system is permanent -there is no undelete. If you rm
       it, it's gone, forever. Be careful! To repeat, deleting a file on a
       GNU/Linux system is permanent -there is no undelete. If you rm it, it's
       gone, forever.

              rmdir mysubdirectory
       rmdir is just like rm, only it's for directories. Notice that rmdir only
       works on empty directories. If the directory contains files, you must
       delete those files first, or alternatively you can use rm -r in place of
       rmdir.

              cd ..
       This moves out of the current directory, and into its parent directory.
       Now you can type the following:

              rmdir practice
       This will delete the last remnants of your practice session.

       So now you know how to create, copy, move, rename, and delete files and
       directories. You also learned some shortcuts, like typing simply cd to
       jump to your home directory, and how . and .. refer to the current
       directory and its parent, respectively. You should also remember the
       concept of the root directory, or /, and the alias ~ for your home
       directory.

    Dot Files and ls -a

       When you type ls, files beginning with a dot are not listed.
       Traditionally, files that contain configuration information, user
       preferences, and so on begin with a dot; these are hidden and out of your
       way while you do your day-to-day work. Sample dot files are ~/.emacs,
       ~/.newsrc, ~/.bashrc, ~/.xsession, and ~/.fvwmrc. These are used by Emacs,
       news readers, the Bash shell, the X Window system, and the fvwm window
       manager, respectively. It is conventional to end the dot filename with rc,
       but some programs don't. There are also directories beginning with a dot,
       such as ~/.gimp and ~/.netscape, which store preferences for the Gimp and
       Netscape.

       Sometimes a program will create a dot file automatically; for example,
       Netscape allows you to edit your preferences with a graphical dialog box
       and then it saves your choices. Other times you will create them yourself
       using a text editor; this is the traditional way to do it, but you have to
       learn the peculiar format of each file -inconvenient at first, but it can
       give you a lot of power.

       To see dot files, you must use the -a option to ls. The long form of -a is
       -all, if you find that easier to remember. You can also use -A or
       -almost-all, which displays all dot files except . and ... Remember that .
       is the current directory, and .. is the parent of the current directory;
       because these are guaranteed to be in every directory, there is no real
       reason to list them with ls. You already know they are there.

    Processes

       We mentioned before that GNU/Linux is a multitasking system. It can do
       many tasks at once. Each of these tasks is called a process. The best way
       to get a sense of this is to type top at the shell prompt. You'll get a
       list of processes, sorted according to how much of the computer's
       processing time they're using. The order will continuously change before
       your eyes. At the top of the display, there's some information about the
       system: how many users are logged in, how many total processes there are,
       how much memory you have and how much you're using.

       In the far left column, you'll see the user owning each process. The far
       right column shows which command invoked the process. You'll probably
       notice that top itself, invoked by you, is near the top of the list
       (because anytime top checks on CPU usage, it will be active and using CPU
       to do the check).

       Note that in all the commands ending in ``d'' -such as kflushd and inetd
       -the ``d'' stands for daemon.

       Daemon originally meant Disks And Extensions MONitor. A daemon is a
       non-interactive process, that is, it's run by the system and users never
       have to worry about it. Daemons provide services like Internet
       connectivity, printing, or e-mail.

       Now press u and give top your username when it asks. The u command asks to
       see only those processes belonging to you; it allows you to ignore all the
       daemons and whatever other people are doing. You might notice bash, the
       name of your shell. You'll pretty much always be running bash.

       Note that column two of the top display shows you the PID, or Process
       IDentification number. Each process is assigned a unique PID. You can use
       the PID to control individual processes (more on that later). Another
       useful trick is to press ? to get a list of top commands.

       You may wonder about the difference between a ``process'' and a
       ``program.'' In practice, people use the terms interchangeably.
       Technically, the program is the set of instructions written by a
       programmer and kept on disk. The process is the working instantiation of
       the program kept in memory by Linux. But it's not that important to keep
       the terms straight.

       Much of your interaction with a computer involves controlling processes.
       You'll want to start them, stop them, and see what they're up to. Your
       primary tool for this is the shell.

    The Shell

       The shell is a program that allows you to interact with your computer.
       It's called a shell because it provides an environment for you to work in
       -sort of a little electronic home for you as you compute. (Think hermit
       crab.)

       The simplest function of the shell is to launch other programs. You type
       the name of the program you want to run, followed by the arguments you
       want, and the shell asks the system to run the program for you.

       Of course, graphical windowing systems also fill this need. Technically,
       Windows 95 provides a graphical shell, and the X Window system is another
       kind of graphical shell. But ``shell'' is commonly used to mean
       ``command-line shell.''

       Needless to say, the hackers who work on shells aren't satisfied with
       simply launching commands. Your shell has a bewildering number of
       convenient and powerful features if you would like to take advantage of
       them.

       There are countless different shells available; most are based on either
       the Bourne shell or the C shell, two of the oldest shells. The original
       Bourne shell's program name is sh, while csh is the C shell. Bourne shell
       variants include the Bourne Again Shell from the GNU project (bash, the
       Debian default), the Korn shell (ksh), and the Z shell (zsh). There is
       also ash, a traditional implementation of the Bourne shell. The most
       common C shell variant is tcsh (the t pays tribute to the TENEX and
       TOPS-20 operating systems, which inspired some of tcsh's improvements over
       csh).

       bash is probably the best choice for new users. It is the default and has
       all the features you're likely to need. But all the shells have loyal
       followings; if you want to experiment, install some different shell
       packages and change your shell with the chsh command. Just type chsh,
       supply a password when asked, and choose a shell. When you next log in,
       you'll be using the new shell.

                         Managing Processes with bash

       Debian is a multitasking system, so you need a way to do more than one
       thing at once. Graphical environments like X provide a natural way to do
       this; they allow multiple windows on the screen at any one time.
       Naturally, bash (or any other shell) provides similar facilities.

       Earlier you used top to look at the different processes on the system.
       Your shell provides some convenient ways to keep track of only those
       processes you've started from the command line. Each command line starts a
       job (also called a process group) to be carried out by the shell. A job
       can consist of a single process or a set of processes in a pipeline (more
       on pipelines later).

       Entering a command line will start a job. Try typing man cp, and the cp
       manual page will appear on the screen. The shell will go into the
       background and return when you finish reading the manual page (or you can
       press q to quit rather than scrolling through the whole thing).

       But say you're reading the manual page, and you want to do something else
       for a minute. No problem. Press Ctrl-z while you're reading to suspend the
       current foreground job and put the shell in the foreground. When you
       suspend a job, bash will first give you some information on it, followed
       by a shell prompt. You will see something like this on the screen:

              NAME cp -copy files SYNOPSIS cp [options] source -More-

              [1]+ Stopped man cp

              $

       Note the last two lines. The next to last is the job information, and then
       you have a shell prompt.

       bash assigns a job number to each command line you run from the shell.
       This allows you to refer to the process easily. In this case, man cp is
       job number 1, displayed as [1]. The + means that this is the last job you
       had in the foreground. bash also tells you the current state of the job -
       Stopped -and the job's command line.

       There are many things you can do with jobs. With man cp still suspended,
       try the following commands:

              man ls
       Starts a new job.

              Ctrl-z
       Suspends the man ls job; you should see its job information.

              man mv
       Starts yet another job.

              Ctrl-z
       Suspends it.

              jobs
       Asks bash for a display of current jobs. The result looks like this:

              {$} jobs

              [1] Stopped man cp

              [2]-Stopped man ls

              [3]+ Stopped man mv

              {$}

       Notice the -and +, denoting respectively the next to last and last
       foreground jobs.

              fg
       Places the last foreground job (man mv, the one with the +) in the
       foreground again. If you press the space bar, the man page will continue
       scrolling.

              Ctrl-z
       Re-suspends man mv.

              fg %1
       You can refer to any job by placing a % in front of its number. If you use
       fg without specifying a job, the last active one is assumed.

              Ctrl-z
       Re-suspends man cp.

              kill %1
       Kills off job 1. bash will report the job information, which will look
       like this:

              $ kill %1

              [1]-Terminated man cp

              $

       bash is only asking the job to quit, and sometimes a job will not want to
       do so. If the job doesn't terminate, you can add the -KILL5.1 option to
       kill to stop asking and start demanding. For example:

              $ kill -KILL %1

              [1]-Killed man mv

              $

       The -KILL option forcibly and unconditionally kills off the job.

       In technical terms, kill simply sends a signal. By default, it sends a
       signal that requests termination (TERM, or signal 15) but you can also
       specify a signal, and signal 9 (KILL) is the signal that forces
       termination. The command name kill is not necessarily appropriate to the
       signal sent; for example, sending the TSTP (terminal stop) signal suspends
       the process but allows it to be continued later.

              top
       This brings the top display back up. Give the u command in top to see only
       your processes. Look in the right-hand column for the man ls and man mv
       commands. man cp won't be there because you killed it. top is showing you
       the system processes corresponding to your jobs; notice that the PID on
       the left of the screen does not correspond to the job number.

       You may not be able to find your processes because they're off the bottom
       of the screen; if you're using X (see Chapter 9 on page [*]), you can
       resize the xterm to solve this problem.

       Even these simple jobs actually consist of multiple processes, including
       the man process and the pager more, which handles scrolling one page at a
       time. You may notice the more processes are also visible in top.

       You can probably figure out how to clean up the remaining two jobs. You
       can either kill them (with the kill command) or foreground each one (with
       fg) and exit it. Remember that the jobs command gives you a list of
       existing jobs and their status.

       One final note: The documentation for bash is quite good, but it is found
       in the Info help system rather than the man pages. To read it, type info
       bash. See section A.1.1 for instructions on using the info program. bash
       also contains a very good summary of its commands accessible by the help
       command. help displays a list of available topics; more information about
       each of them is accessible with the command help topic name. Try typing
       help cd, for example. This will give you details on the -P and -L
       arguments recognized by cd.

    A Few bash Features

       This section mentions just a few of the most commonly used Bash features;
       for a more complete discussion see Chapter 6.

    Tab Completion

       The bash shell can guess what filename or command you are trying to type
       and automatically finish typing it for you. Just type the beginning of a
       command or filename and press Tab. If bash finds a single unique
       completion, it will finish the word and put a space after it. If it finds
       multiple possible completions, it will fill out the part all completions
       have in common and beep. You can then enter enough of the word to make it
       unique and press Tab again. If it finds no completions, it will simply
       beep.

    Managing Your Identity

       Unix-like systems are multiuser, and so you have your own electronic
       identity as a user on the system. Type finger yourusername to look at some
       of the information about you that's publically available. To change the
       name and shell listed there, you can use the commands chfn and chsh. Only
       the superuser can change your login (username) and directory. You'll
       notice that it says ``No plan.'' A ``plan'' is just some information you
       can make available to others. To create a plan, you put whatever
       information you want people to see in a file called .plan. To do this
       you'll use a text editor; see section 8.2 on page [*]. Then finger
       yourself to see your plan. Others can finger you to see your plan and to
       check whether you've received new mail or read your mail.

       Note that this finger information is available to the entire Internet by
       default. If you don't want this, read about configuring inetd and the file
       /etc/services. Eventually the installation manual will describe this
       configuration, but for now you might try the man pages or just put
       nonsense in for your finger information.

    Using the Shell

       As you have been reading this book, you've been interacting with the shell
       already. The shell is the program that reads your commands and then does
       what you ask it to. In this chapter, you explore the shell in greater
       detail, with a special eye towards customizing the shell to work as you
       want it to.

    Environment Variables

       Every process has an environment associated with it. An environment is a
       collection of environment variables. A variable is a changeable value with
       a fixed name. For example, the name EMAIL could refer to the value
       joe@nowhere.com. The value can vary; EMAIL could also refer to
       jane@somewhere.com.

       Because your shell is a process like any other, it has an environment. You
       can view your shell's environment by entering the printenv command.

                         Figure 6.1: Sample printenv output \begin{figure}\par\par\begin{list}{}{ \setlength{\rightmargin}{\leftmargin} \ra... ...ables}\index{shells!environments} \par\_=/usr/bin/printenv\end{list}\end{figure}

       Figure 6.1 on page [*] has some sample output from printenv. On your
       system, the output will be different but similar.

       Environment variables are one way to configure the system. For example,
       the EDITOR variable lets you select your preferred editor for posting
       news, writing e-mail, and so on.

       Setting environment variables is simple. For practice, try customizing
       your shell's prompt and your text file viewer with environment variables.
       First, let's get a bit of background information.

              man less
       This command lets you view the online manual for the less command. In
       order to show you the text one screenful at a time, man invokes a pager
       that shows you a new page of text each time you press the space bar. By
       default, it uses the pager called more.

       Go ahead and glance over the man page for less, which is an enhanced
       pager. Scroll to a new page by pressing space; press q to quit. more will
       also quit automatically when you reach the end of the man page.

              export PAGER=less
       After reading about the advantages of less, you might want to use it to
       read man pages. To do this, you set the environment variable PAGER.

       The command to set an environment variable within bash always has this
       format:

              export NAME=value
       export means to move the variable from the shell into the environment.
       This means that programs other than the shell (for instance, a file
       viewer) will be able to access it.

              echo $PAGER
       This is the easiest way to see the value of a variable. $PAGER tells the
       shell to insert the value of the PAGER variable before invoking the
       command. echo echoes back its argument: in this case, it echoes the
       current PAGER value, less.

              man more
       Displays the more manual. This time, man should have invoked the less
       pager.

       less has lots of features that more lacks. For example, you can scroll
       backward with the b key. You can also move up and down (even sideways)
       with the arrow keys. less won't exit when it reaches the end of the man
       page; it will wait for you to press q.

       You can try out some less-specific commands, like b, to verify that they
       don't work with more and that you are indeed using more.

              unset PAGER
       If you don't want to specify a pager anymore, you can unset the variable.
       man will then use more by default, just as it did before you set the
       variable.

              echo $PAGER
       Because PAGER has been unset, echo won't print anything.

              PS1=hello:

                         Figure 6.2: Changing the prompt \begin{figure}\par\par\begin{list}{}{ \setlength{\rightmargin}{\leftmargin} \ra... ...o~My~prompt~is~\$PS1} \par My~prompt~is~hello: \par hello:\end{list}\end{figure}

       Just for fun, change your shell prompt. $ should now change; see Figure
       6.2 for details.

       export is not necessary, because you're changing the shell's own behavior.
       There's no reason to export the variable into the environment for other
       programs to see. Technically, PS1 is a shell variable rather than an
       environment variable.

       If you wanted to, you could export the shell variable, transforming it
       into an environment variable. If you do this, programs you run from the
       shell can see it.

                        Where Commands Reside: The PATH Variable

       When you type a command into the shell, it has to find the program on your
       hard disk before executing it. If the shell had to look all over the disk,
       it would be very slow; instead, it looks in a list of directories
       contained in the PATH environment variable. This list of directories makes
       up the shell's search path; when you enter a command, it goes through each
       one in turn looking for the program you asked to run.

       You may need to change the PATH variable if you install programs yourself
       in a non-standard location. The value of PATH is a colon-separated list of
       directories. The default value on Debian systems is as follows:

              /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

       This value is defined in the file /etc/profile and applies to all users.
       You can easily change the value, just as you can change any environment
       variable. If you type the command ls, the shell will first look in
       /usr/local/bin; ls isn't there, so it will try /usr/bin; when that fails,
       it will check /bin. There it will discover /bin/ls, stop its search, and
       execute the program /bin/ls. If /usr/bin/X11/ls existed (it doesn't, but
       pretend), it would be ignored.

       You can see which ls the shell is going to use with the type command.
       type ls will give you the answer /bin/ls. Try it yourself.

       Try asking where type itself resides:

              $ type type

              type is a shell builtin

       type isn't actually a program; it's a function provided by the shell.
       However, you use it just like an external program.

       There are a number of commands like this; type man builtins to read the
       man page describing them. In general, you don't need to know whether a
       command is a builtin or a real program; however, builtins will not show up
       in the output of ps or top because they aren't separate processes. They're
       just part of the shell.

    Configuration Files

       Many applications on Linux systems allow you to alter how they behave at
       certain times by altering files containing configuration information.
       These configuration files may contain application start-up information,
       run-time settings and application shutdown settings. In general, a
       configuration filename is based on the name of the application for which
       it contains settings. Such a naming convention allows you to more readily
       determine which configuration file contains settings for a given
       application.

    System-Wide Versus User-Specific Configuration

       It's important to remember that there are two different kinds of
       configurations on a Debian system. System-wide configuration affects all
       users. System-wide settings are made in the /etc directory, so you
       generally must be root in order to change system-wide settings. You might
       configure the way the system connects to the Internet, for example, or
       have web browsers on the system always start on the company home page.
       Since you want these settings to apply to all users, you make the changes
       in /etc. Sample configuration files in /etc include /etc/X11/XF86Config,
       /etc/lynx.cfg, and /etc/ppp/options. In fact, nearly all the files in /etc
       are configuration files.

       User configuration affects only a single user. Dotfiles are used for user
       configuration. For example, the file ~/.newsrc stores a list of which
       USENET (discussion group) articles you have read and which groups you
       subscribe to. This allows news readers such as trn or GNUS to display
       unread articles in the groups you're interested in. This information will
       be different for every user on the system, so each user has his own
       .newsrc file in his home directory.

    Aliases

       If you use the same command often, you might get tired of typing it. bash
       lets you write shorter aliases for your commands.

       Say you always use the -almost-all and -color=auto options to ls. You
       quickly get tired of typing ls -almost-all -color=auto. So you make an
       alias:

              alias myls='ls -almost-all -color=auto'
       Now you can type myls instead of the full command. To see what myls really
       is, run the command type myls. To see a list of aliases you've defined,
       simply type alias on a line by itself.

                         Controlling Input and Output

       Throughout your experiences with Linux, you will most likely find that
       manipulating application input and output can be a very powerful thing to
       do. This section describes some of the things that controlling input and
       output can do for you.

    stdin, stdout, Pipelines, and Redirection

       Every process has at least three connections to the outside world. The
       standard input is one source of the process's data; the standard output is
       one place the process sends data; and the standard error is a place the
       process can send error messages. (These are often abbreviated stdin,
       stdout, and stderr.)

       The words ``source'' and ``place'' are intentionally vague. These standard
       input and output locations can be changed by the user; they could be the
       screen, the keyboard, a file, even a network connection. You can specify
       which locations to use.

       When you run a program from the shell, usually standard input comes from
       your keyboard, and standard output and error both go to your screen.
       However, you can ask the shell to change these defaults.

       For example, the echo command sends it output to standard output, normally
       the screen. But you can send it to a file instead with the output
       redirection operator, >. For example, to put the word ``Hello'' in the
       file myfile, use this command:

              echo Hello > myfile
       Use cat or your text file pager (more or less) to view myfile's contents;
       see Figure 6.3 on page [*].

                         Figure 6.3: Redirecting output \begin{figure}\par\par\begin{list}{}{ \setlength{\rightmargin}{\leftmargin} \ra... ...llo~>~myfile} \par\$~\textbf{cat~myfile} \par Hello \par\$\end{list}\end{figure}

       You can change the standard input of a command with the input redirection
       operator,    myfile. This is not useful in practice; for convenience, the cat command
       accepts a filename argument. So you can simply say cat myfile, and the
       effect will be the same. redirection operators

       Under the hood, cat < myfile means that the shell opens myfile and then
       feeds its contents to the standard input of cat. cat myfile, without the
       redirection operator, means that the cat command receives one argument
       (myfile) opens the file itself, and then displays the file.

       There's a reason for the double functionality, however. For example, you
       can connect the standard output of one command to the standard input of
       another. This is called a pipeline, and it uses the pipe operator6.1, |.

       Perhaps you want to see the GNU General Public License in reverse. To do
       this, you use the tac command (it's cat, only backward). Try it out:

              tac /usr/doc/copyright/GPL
       Unfortunately, it goes by too quickly to read. So you only get to see a
       couple of paragraphs. The solution is a pipeline:

              tac /usr/doc/copyright/GPL | less
       This takes the standard output of tac, which is the GPL in reverse, and
       sends it to the standard input of less.

       You can chain as many commands together as you like. Say you have an
       inexplicable desire to replace every G with Q. For this you use the
       command tr G Q, like this:

              tac /usr/doc/copyright/GPL | tr G Q | less
       You could get the same effect using temporary files and redirection, for
       example:

              tac /usr/doc/copyright/GPL > tmpfile

              tr G Q < tmpfile > tmpfile2

              less < tmpfile2

              rm tmpfile tmpfile2

       Clearly a pipeline is more convenient.

    Filename Expansion

       Often you want a command to work with a group of files. Wildcards are used
       to create a filename expansion pattern: a series of characters and
       wildcards that expands to a list of filenames. For example, the pattern
       /etc/* expands to a list of all6.2 the files in /etc.

       * is a wildcard that can stand for any series of characters, so the
       pattern /etc/* will expand to a list of all the filenames beginning with
       /etc/.

       This filename list is most useful as a set of arguments for a command. For
       example, the /etc directory contains a series of subdirectories called
       rc0.d, rc1.d, etc. Normally to view the contents of these, you would type
       the following:

              ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d

              ls /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d

       This is tedious. Instead, you can use the ? wildcard as shown here:

              ls /etc/rc?.d
       /etc/rc?.d expands to a list of filenames that begin with rc, followed by
       any single character, followed by .d.

       Available wildcards include the following:

       *
              Matches any group of 0 or more characters.

       ?
              Matches exactly one character.

       [...]
              If you enclose some characters in brackets, the result is a
              wildcard that matches those characters. For example, [abc] matches
              either a, or b, or c. If you add a ^ after the first bracket, the
              sense is reversed; so [^abc] matches any character that is not a,
              b, or c. You can include a range, such as [a-j], which matches
              anything between a and j. The match is case sensitive, so to allow
              any letter, you must use [a-zA-Z].

       Expansion patterns are simple once you see some concrete examples:

       *.txt
              This will give you a list of all filenames that end in .txt, since
              the * matches anything at all.

       *.[hc]
              This gives a list of filenames that end in either .h or .c.

       a??
              This gives you all three-letter filenames that begin with a.

       [^a]??
              This gives you all three-letter filenames that do not begin with
              a.

       a*
              This gives you every filename that starts with a, regardless of
              how many letters it has.

    More on Files

       In section 5.2 on page [*], we covered moving and renaming files with mv,
       copying them with cp, removing them with rm, removing directories with
       rmdir, and creating directories with mkdir. This chapter will cover some
       more aspects of working with files.

    Permissions

       GNU and Unix systems are set up to allow many people to use the same
       computer, while keeping certain files private or keeping certain people
       from modifying certain files. You can verify this for yourself. Log in as
       yourself, i.e. NOT as root.

              whoami
       This verifies that you are not root. Then enter the following command:

              rm /etc/resolv.conf
       You should be told Permission denied. /etc/resolv.conf is an essential
       system configuration file; you aren't allowed to change or remove it
       unless you're root. This keeps you from accidentally messing up the
       system, and if the computer is a public one (such as at an office or
       school), it keeps users from messing up the system on purpose.

       Now type ls -l /etc/resolv.conf.

       This will give you output that looks something like this:

              -rw-r-r-1 root root 119 Feb 23 1997 /etc/resolv.conf

       The -l option to ls requests all that additional information. The info on
       the right is easy: The size of the file is 119 bytes; the date the file
       was last changed is February 23, 1997; and the file's name is
       /etc/resolv.conf. On the left side of the screen, things are a little more
       complicated.

       First, the brief, technical explanation: The -rw-r-r-is the mode of the
       file, the 1 is the number of hard links to this file (or the number of
       files in a directory), and the two roots are the user and group owning the
       file, respectively.

       So that was cryptic. Let's go through it slowly.

    File Ownership

       Every file has two owners: a user and a group. The above case is a little
       confusing because there's a group called root in addition to the root
       user. Groups are just collections of users who are collectively permitted
       access to some part of the system. A good example is a games group. Just
       to be mean, you might create a group called games on your computer and
       then set up your system so that only people in a games group are allowed
       to play games.

       Here's a more practical example. Consider a case in which you're setting
       up a computer for a school. You might want certain files to be accessible
       only to teachers, not students, so you put all the teachers in a single
       group. Then you can tell the system that certain files belong to members
       of the group teachers, and that no one else can access those files.

       Let's explore groups on the system. First, you can use the groups command
       at the shell prompt. This will show you a list of the groups to which you
       belong. Here's an example:

              $ groups

              system-wide configuration!permissions!file
              ownershipusername dialout cdrom floppy audio

       It's likely that you're a member of only one group, which is identical to
       your username. However, root can add you to other groups. The above
       example shows a person that is a member of five groups.

              less /etc/group
       This file lists the groups that exist on your system. Notice the root
       group (the only member of this group is the root user), and the group that
       corresponds to your username. There are also groups like dialout (users
       who are allowed to dial out on the modem) and floppy (users who can use
       the floppy drive). However, your system is probably not configured to make
       use of these groups. It's likely that only root can use the floppy or the
       modem right now. For details about this file, try reading man group.

              ls -l /home
       This command shows you that every user's directory is owned by that user
       and that user's personal group.

         Tip: If you just installed Debian, you may be the only user. You can use
         the adduser command to add more users to the system.

    Mode

       In addition to being owned by one user and one group, every file and
       directory also has a mode, which determines who's allowed to read, write,
       and execute the file (and run it, if it's a program). There are a few
       other things also determined by the mode, but they're advanced topics so
       we'll skip them for now.

       The mode looks like this in the ls output: -rw-r-r-. For now, we'll
       consider nine of these parts: those that control read, write, and execute
       permissions for the user owning the file, the group owning the file, and
       others (everyone on the system, sometimes called world).

       In the mode line, the first ``element'' gives the file type. The -in this
       case means it's a regular file. If it was d, we'd be looking at a
       directory. There are also other possibilities too complex to go into here;
       for details, see section 13.2.2 on page [*].

       The remaining nine elements are used to display the file's mode. The basic
       9 bits (read, write, and execute for user, group, and other) are displayed
       as three blocks of rwx.

       So if all permissions are turned on and this is a regular file, the mode
       will look like this: -rwxrwxrwx. If it was a directory with all
       permissions turned off for others and full permissions for user and group,
       it would be drwxrwx--.

                         Table 7.1: Permissions in Linux

    +------------------------------------------------------------------------------+
    | Code |  Name   | Allows for Files         | Allows for Directories           |
    |------+---------+--------------------------+----------------------------------|
    |  r   |  read   | Examine contents of file | List contents of directory       |
    |------+---------+--------------------------+----------------------------------|
    |  w   |  write  | Modify file              | Add or remove files in directory |
    |------+---------+--------------------------+----------------------------------|
    |  x   | execute | Run as a command         | Access files in directory        |
    +------------------------------------------------------------------------------+

       Table 7.1 describes the meaning of the read, write, and execute
       permissions for both files and directories.

       Directory modes can be a little confusing, so here are some examples of
       the effects of various combinations:

              r-
       The user, group, or other with these permissions may list the contents of
       the directory, but can do nothing else. The files in the directory can't
       be read, changed, deleted, or manipulated in any way. The only permitted
       action is reading the directory itself, that is, seeing what files it
       contains.

              rw-
       Write permission has no effect in the absence of execute permission, so
       this mode behaves just like the above mode.

              r-x
       This mode permits the files in a directory to be listed and permits access
       to those files. However, files can't be created or deleted. Access means
       that you can view, change, or execute the files as permitted by the files'
       own permissions.

              -x
       Files in this directory can be accessed, but the contents of the directory
       can't be listed, so you have to know what filename you're looking for in
       advance (unless you're exceptionally good at guessing). Files can't be
       created or deleted.

              rwx
       You can do anything you want with the files in this directory, as long as
       it's permitted by the permissions on the files themselves.

       Directory write permission determines whether you can delete files in a
       directory. A read-only file can be deleted if you have permission to write
       to the directory containing it. You can't delete a file from a read-only
       directory even if you're allowed to make changes to the file.

       This also means that if you own a directory you can always delete files
       from it, even if those files belong to root.

       Directory execute permission determines whether you have access to files -
       and thus whether file permissions come into play. If you have execute
       permissions to a directory, file permissions for that directory become
       relevant. Otherwise, file permissions just don't matter; you can't access
       the files anyway.

    Permissions in Practice

       This section goes through a short example session to demonstrate how
       permissions are used. To change permissions, we'll use the chmod command.

              cd; touch myfile
       There are a couple of new tricks here. First, you can use ; to put two
       commands on one line. You can type the above as:

              $ cd

              $ touch myfile

       or as:

              $ cd; touch myfile
       Either way the same thing will end up happening.

       Recall that cd by itself returns you to your home directory. touch is
       normally used to change the modification time of the file to the current
       time. But it has another interesting feature: If the file doesn't exist,
       touch creates the file. So you're using it to create a file to practice
       with. Use ls -l to confirm that the file has been created and notice the
       permissions mode:

              $ ls -l

              -rw-r-r-1 user user 0 Nov 18 22:04 myfile

       Obviously the time and user/group names will be different when you try it.
       The size of the file is 0, because touch creates an empty file. -rw-r-r-
       is the default permissions mode on Debian.

              chmod u+x myfile
       This command means to add (+) execute (x) permissions for the user (u) who
       owns the file. Use ls -l to see the effects.

              chmod go-r myfile
       Here you've subtracted (-) read permission (r) from the group (g) owning
       the file and from everyone else (others, o). Again, use ls -l to verify
       the effects.

              chmod ugo=rx myfile
       Here you've set (=) user, group, and other permissions to read and
       execute. This sets permissions to exactly what you've specified and unsets
       any other permissions. So all rx should be set, and all w should be unset.
       Now, no one can write to the file.

              chmod a-x myfile
       a is a shortcut for ugo, or ``all.'' So all the x permissions should now
       be unset.

              rm myfile
       With this command, you're removing the file, but without write
       permissions. rm will ask if you're sure by displaying the following
       message:

              rm: remove `myfile', overriding mode 0444?
       You should respond by typing y and pressing Enter. This is a feature of
       rm, not a fact of permissions. Permission to delete a file comes from the
       directory permissions, and you have write permission in the directory.
       However, rm tries to be helpful, figuring that if you didn't want to
       change the file (and thus remove write permission), you don't want to
       delete it either, so it asks you.

       What was that 0444 business in the question from rm? The permissions mode
       is a twelve-digit binary number, like this: 000100100100. 0444 is this
       binary number represented as an octal (base 8) number, which is the
       conventional way to write a mode. So you can type chmod 444 myfile instead
       of chmod ugo=r myfile.

                         Files Present and Their Locations

       Now that you can navigate the directory tree, let's take a guided tour of
       the files and directories you created when you installed Debian. If you're
       curious, cd to each directory and type ls to see its contents. If the
       listing doesn't fit on the screen, try ls | less, where | is the ``pipe''
       character, generally found on the same key with backslash.

       /
              As already mentioned, this is the root directory, which contains
              every other directory.

       /root
              But don't get /confused with /root! /root is the home directory of
              the root user, or superuser. It's a directory called /root, but it
              isn't the root directory /.

       /home
              This is where all normal users -that is, all users except root -
              have their home directories. Each home directory is named after
              the user who owns it, for example, /home/jane. If you're using a
              large system at a school or business, your system administrator
              may create additional directories to contain home directories:
              /home1 and /home2 for example. On some other systems, you'll see
              an additional level of subdirectories: /home/students/username,
              /home/staff/username, etc.

              Your home directory is where you put all your personal work,
              e-mail and other documents, and personal configuration
              preferences. It's your home on the system.

       /bin
              This directory contains ``binaries,'' executable files that are
              essential to the operation of the system. Examples are the shell
              (bash) and file commands such as cp.

       /sbin
              This directory contains ``system binaries,'' utilities that the
              root user or system administrator might want to use, but that you
              probably won't want to use in your day-to-day activities.

       /usr
              /usr contains most of the files you'll be interested in. It has
              many subdirectories. /usr/bin and /usr/sbin are pretty much like
              /bin and /sbin, except that the directories in /usr are not
              considered ``essential to the operation of the system.''

              While not essential to getting the computer working, /usr does
              contain the applications you'll use to get real work done. Also in
              /usr, you'll find the /usr/man, /usr/info, and /usr/doc
              directories. These contain manual pages, info pages, and other
              documentation, respectively. And don't forget /usr/games!

       /usr/local
              The Debian system doesn't install anything in this directory. You
              should use it if you want to install software that you compile
              yourself or any software not contained in a Debian package. You
              can also install software in your home directory if you'll be the
              only one using it.

       /etc
              /etc contains all the system-wide configuration files. Whenever
              you want to change something that affects all users of your
              computer -such as how you connect to the Internet or what kind of
              video card you have -you'll probably have to log on as root and
              change a file in /etc.

       /tmp
              Here you'll find temporary files, most of them created by the
              system. This directory is generally erased on a regular basis or
              every time you reboot the system. You can create files here if you
              want, just be aware that they might get deleted automatically.

       /var
              /var contains ``variable'' files that the system changes
              automatically. For example, incoming mail is stored here. The
              system keeps a log of its actions here. There are a number of
              other automatically generated files here as well. You'll mostly be
              interested in the contents of /var/log, where you can find error
              messages that can help you figure out what you're system's up to
              if something goes wrong.

       Clearly there are many more directories on the system -far too many to
       describe every one.

       For changing things, you'll usually want to confine yourself to your home
       directory and /etc. On a Debian system, there's rarely an occasion to
       change anything else, because everything else is automatically installed
       for you.

       /etc is used to configure the system as a whole. You'll use your own home
       directory, a subdirectory of /home, for configuring your own preferences
       and storing your personal data. The idea is that on a day-to-day basis,
       you confine yourself to /home/yourname, so there's no way you can break
       anything. Occasionally you log in as root to change something in a
       system-wide directory, but only when it's absolutely necessary. Of course,
       if you're using Debian at a school or business and someone else is the
       system administrator, you won't have root access and will be able to
       change only your home directory and any other directory that you own. This
       limits what you can do with the system.

    File Compression with gzip

       Often it would be nice to make a file smaller -say, to download it
       faster, or so it takes up less space on your disk. The program to do this
       is called gzip (GNU zip). Here's how it works:

              $ cd; cp /etc/profile ./mysamplefile
       This switches to your home directory and copies an arbitrarily chosen file
       (/etc/profile) to your current directory, in the process renaming it
       mysamplefile. This gives you a file to play with when using gzip.

              $ ls -l
       Lists the contents of the current directory. Note the size of
       mysamplefile.

              $ gzip mysamplefile
       Compresses mysamplefile.

              $ ls -l
       Observe the results of this command: mysamplefile is now called
       mysamplefile.gz . It's also a good bit smaller.

              $ gunzip mysamplefile.gz; ls -l
       This uncompresses the file. Observe that mysamplefile has returned to its
       original state. Notice that to uncompress, one uses gunzip, not gzip.

              $ rm mysamplefile
       Use this command to remove the file, since it was just to practice with.

    Finding Files

       There are two different facilities for finding files: find and locate.
       find searches the actual files in their present state. locate searches an
       index generated by the system every morning at 6:42 a.m. (this is a cron
       job, explained elsewhere in this book). locate won't find any files that
       were created after the index was generated. However, because locate
       searches an index, it's much faster -like using the index of a book
       rather than looking through the whole thing.

       To compare the two ways of finding files, pretend you can't remember where
       the X configuration file XF86Config resides.

              $ locate XF86Config
       This should be pretty fast. You'll get a list of filenames that contain
       XF86Config, something like this:

              /etc/X11/XF86Config

              /usr/X11R6/lib/X11/XF86Config

              /usr/X11R6/lib/X11/XF86Config.eg

              /usr/X11R6/man/man5/XF86Config.5x.gz

       Now try the find command:

              $ find / -name XF86Config
       You will hear a lot of disk activity, and this will take a lot longer.
       Results will look something like this:

              /etc/X11/XF86Config

              /usr/X11R6/lib/X11/XF86Config

              find: /var/spool/cron/atjobs: Permission denied

              find: /var/spool/cron/atspool: Permission denied

              find: /var/lib/xdm/authdir: Permission denied

       Notice that find found only files that were named exactly XF86Config,
       rather than any files containing that string of letters. Also, find
       actually tried to look in every directory on the system -including some
       where you didn't have read permissions. That's why you got the
       Permission denied messages.

       The syntax is different as well. With find, you had to specify what
       directory to search in, whereas locate automatically chose the root
       directory. And you had to specify a search by name using the -name option.
       You could also have searched for files using many other criteria, such as
       modification date or owner. To have find search for files whose names
       match XF86Config, you'd have to use a wildcard:

              $ find / -name '*XF86Config*'
       Like most of the command line tools, find accepts wildcards as arguments.

       In general, find is a more powerful utility, and locate is faster for
       everyday quick searches. The full range of possible searches would take a
       long time to explain; for more details , type info find, which will bring
       up the very thorough info pages on find and locate.

                         Determining a File's Contents

       Debian comes with a utility that can guess at the contents of a file for
       you. Although it is not 100% accurate, you can use the following command
       to explore your system:

              $ file /bin/cp
       You should see something like this:

              /bin/cp: ELF 32-bit LSB executable, Intel 386, version 1

       Skipping the technical parts, this is an executable file for Intel
       machines.

              $ file /etc/init.d/boot
       The preceding command gives this response:

              /etc/init.d/boot: Bourne shell script text
       meaning that this is a text file containing a Bourne shell script.

    Using a File Manager

       Instead of moving files around by hand, you can use a file manager. If you
       move a lot of files around, a file manager can make your work more
       efficient. There are text-based file managers, such as GNU Midnight
       Commander (mc), and a number of file managers for the X Window system (for
       example gmc for the X Window version of GNU Midnight Commander).

       Describing each of these is outside the scope of this book, but you may
       want to try them out if the command line doesn't meet your needs.

    Working with Text Files

       Text files are prevelant on a GNU/Linux system. They hold everything from
       documentation to configuration files. Fortunately, it's easy to work with
       them.

    Viewing Text Files

       A text file is simply a normal file that happens to contain human-readable
       text. There's nothing special about it otherwise. The other kind of file,
       a binary file, is meant to be interpreted by the computer.

       You can view either kind of file with the less file pager if you have it
       installed (install it if you haven't, it's quite useful). Type less
       /etc/profile to view a sample text file. Notice that you can read the
       characters even if their meaning is obscure. Type less /bin/ls to view a
       binary file. As you can see, the ls program is not meant to be read by
       humans.

       Sometimes, you'll find files that end with .gz. These files may be viewed
       with zless; you can run it like so:

              zless /usr/doc/ae/changelog.Debian.gz

         Tip: zless is great for viewing documentation, which is often shipped in
         .gz form.

       The difference between the two kinds of files is purely a matter of what
       they contain, unlike in some other systems (such as DOS and MacOS), which
       actually treat the files differently.

       Text files can contain shell scripts, documentation, copyright notices, or
       any other human-readable text.

       Incidentally, this illustrates the difference between source code and
       binary executables. /bin/ls is a binary executable you can download from
       Debian, but you can also download a text file that tells the computer how
       to create /bin/ls. This text file is the source code. Comparing /bin/ls to
       /etc/profile illustrates how important source code is if someone wants to
       understand and modify a piece of software. Free software provides you or
       your consultants with this all-important source code.

    Text Editors

       A text editor is a program used to create and change the contents of text
       files. Most operating systems have a text editor: DOS has edit, Windows
       has Notepad, MacOS has SimpleText.

       Debian provides a large variety of text editors. vi and Emacs are the
       classic two, which are probably both the most powerful and the most widely
       used. Both vi and Emacs are quite complex and require some practice, but
       they can make editing text extremely efficient. Emacs runs both in a
       terminal and under the X Window system; vi normally runs in a terminal but
       the vim variant has a -g option that allows it to work with X. text
       editors

       Simpler editors include nedit, ae, jed, and xcoral. nedit and xcoral
       provide easy-to-use X Window system graphical interfaces. There are also
       several vi variants. Additionally, you can find and a GNU Emacs variant
       called XEmacs.

       This book does not cover the use of any particular editor in detail,
       though we will briefly introduce ae since it is small, fast, and can be
       found even on the Debian rescue disks, so it pays to know a bit about it
       for usage in a pinch. When you need to do more serious editing, check out
       vim or GNU Emacs. Emacs provides an excellent interactive tutorial of its
       own; to read it, load Emacs with the emacs command and type F1 t. Emacs is
       an excellent choice for new users interested in a general-purpose or
       programming editor.

    Using ae

       You can start ae by giving it the name of a file to edit, like so:

              $ ae filename.txt
       This will bring up an editor screen. The top part of this screen provides
       some quick help; the bottom shows the file you're editing. Moving around
       in this editor is simple; just use the arrow keys. You can save the file
       by pressing C-x C-s and then exit the editor by pressing C-x C-c. Once you
       feel comfortable with the editor, you can press C-x C-h to turn off the
       help. That's it! Knowing this will let you do basic editing. For
       programming or more detailed editing work, you'll want to investigate
       other editors as discussed earlier.

    The X Window System

       This chapter describes the X Window system graphical user interface. It
       assumes that you have already successfully configured X as described in
       the Installation Manual (again, the install manual is not yet written; for
       now you will need to use the XFree86 HOWTO, the contents of /usr/doc/X11,
       and this chapter). Once you install X, you can enter the X environment by
       typing startx or via xdm, depending on your choice during configuration.

    Introduction to X

       A GUI (Graphical User Interface) is part and parcel of the Windows and Mac
       operating systems. It's basically impossible to write an application for
       those systems that does not use the GUI, and the systems can't be used
       effectively from the command line. GNU/Linux is more modular, that is,
       it's made up of many small, independent components that can be used or not
       according to one's needs and preferences. One of these components is the X
       Window system, or simply X.

       This component is also sometimes called X11. Please note that ``X
       Windows'' is not correct.

       X itself is a means for programs to talk to your mouse and video card
       without knowing what kind of mouse and video card you have. That is, it's
       an abstraction of the graphics hardware. User applications talk to X in
       X's language; X then translates into the language of your particular
       hardware. This means that programs only have to be written once, and they
       work on everyone's computer.

       In X jargon, the program that speaks to the hardware is known as an X
       server. User applications that ask the X server to show windows or
       graphics on the screen are called X clients. The X server includes a video
       driver, so you must have an X server that matches your video card.

       The X server doesn't provide any of the features one might expect from a
       GUI, such as resizing and rearranging windows. A special X client, called
       a window manager, draws borders and title bars for windows, resizes and
       arranges windows, and provides facilities for starting other X clients
       from a menu. Specific window managers may have additional features.

       Window managers available on a Debian system include fvwm, fvwm2, icewm,
       afterstep, olvwm, wmaker, twm, and enlightenment. You'll probably want to
       try them all and pick your favorite.

       Neither the X server nor the window manager provide a file manager; that
       is, there aren't any windows containing icons for your files and
       directories. You can launch a file manager as a separate application, and
       there are many of them available. The GNOME desktop project is developing
       an icon-based file manager and other GUI facilities. See the GNOME
       homepage for the latest news on this.

       A final feature of X is its network transparency, meaning that X clients
       don't care if they're talking to an X server on the same machine or an X
       server somewhere on the network. In practical terms, this means you can
       run a program on a more powerful remote machine but display it on your
       desktop computer.

    Starting the X Environment

       There are two ways to start X. The first is to start X manually when you
       feel like using it. To do so, log in to one of the text consoles and type
       startx. This will start X and switch you to its virtual console.

       The second (and recommended) way to use X is with xdm or X Display
       Manager. Basically, xdm gives you a nice graphical login prompt on the X
       virtual console (probably VC 7), and you log in there.

       By default, either method will also start an xterm, which is a small
       window containing a shell prompt. At the shell prompt, you can type any
       commands just as you would on a text VC. So you can follow all the
       examples in this book using xterm; the only difference between an xterm
       and the text console is that you don't have to log on to the xterm because
       you already logged on to X.

       There are also a lot of things you can do only in X, which are covered in
       this chapter.

       One note: The default xterm window has a smallish font. If you have a
       small monitor or very high resolution or bad eyesight, you may want to fix
       this. Follow these steps:

        1. Move the mouse pointer into the center of the xterm window.
        2. Hold down the Control key and the right mouse button simultaneously.
           This will give you a font menu.
        3. Point to the font you want and release the mouse button.

    Basic X Operations

       There are certain commonly used operations in X that you should
       familiarize yourself with. This section describes some of the basic
       operations that you may find useful.

    The Mouse

       The mouse in X works pretty much the same as the mouse on other systems,
       except that it has three buttons. If your mouse has only two, you can
       simulate the middle button by clicking both buttons simultaneously. This
       is kind of tricky and annoying, so investing in a $15 three-button mouse
       probably isn't a bad idea. These are available from most computer
       retailers.

       The buttons are numbered from left to right assuming you have a
       right-handed mouse. So button one is on the left, two is in the middle,
       and three is on the right. You may see either the numbers or the locations
       in documentation.

       X has a simple built-in copy-and-paste facility. To select text to copy,
       you click and drag with the left mouse button. This should select the text
       to copy, assuming the application you're using has copy-and-paste support.
       To paste the text, you click the middle mouse button in a different X
       application. For example, if you receive an e-mail containing an URL, you
       can select the URL with the left button and then click in your web
       browser's ``Location'' field with the middle button to paste it in.

    X Clients

       Programs that communicate with the X server are called X clients. Most of
       these programs will ask the X server to display windows on the screen.

       You start an X client the same way you start any other Debian program.
       Simply type the name of the client on the command line. Try typing xterm
       into an existing xterm window, and a new xterm client will appear on the
       screen.

       You may notice that the original xterm is now useless, because your shell
       is waiting for the second xterm to finish. To avoid this problem, you can
       run the X client in the backgroundby adding a &after the command name
       like this: xterm .If you forget, you can place a running process in the
       background. First suspend the process with CTRL-z, and then place it in
       the background with the bg command.

       If you use a program often, your window manager will generally provide a
       way to put that program on a convenient graphical menu.

    Troubleshooting

       Sometimes when you launch an X client from a graphical menu, you won't be
       able to see any error messages if it fails. You can find any error
       messages in the file ~/.xsession-errors.

    Leaving the X Environment

       To leave X, you need to use a menu. Unfortunately for beginners, this is
       different for every window manager, and for most window managers, it can
       be configured in many ways. If there's an obvious menu, look for an entry
       like ``Exit'' or ``Close Window Manager.'' If you don't see a menu, try
       clicking each of the mouse buttons on the background of the screen. If all
       else fails, you can forcibly kill the X server by pressing
       CTRL-ALT-Backspace. Forcibly killing the server destroys any unsaved data
       in open applications.

    Customizing Your X Startup

       When you start X, Debian runs some shell scripts that start your window
       manager and other X clients. By default, a window manager, an xconsole,
       and an xterm are started for you.

       To customize your X startup, the file /etc/X11/config must contain the
       line allow-user-xsession. If it does not, log in as root and add the line
       now. Then log back in as yourself and continue the tutorial.

       You can see how Debian's X startup works in the file /etc/X11/ Xsession.
       Note that you can change the behavior of /etc/X11/Xsession by modifying
       the file /etc/X11/config, which specifies a few system-wide preferences.

       To run the clients of your choice when X starts, you create an executable
       shell script called .xsession in your home directory.

              $ touch ~/.xsession
       This creates the file.

              $ chmod u+x ~/.xsession
       This makes the file executable.

       Once .xsession is created, you need to edit it to do something useful with
       your favorite text editor. You can do anything you want to in this script.
       However, when the script's process terminates, X also terminates.

       In practical terms, this means that you often end the script with a call
       to exec. Whatever program you exec will replace the script process with
       itself, so commands found after the exec line will be ignored. The program
       you exec will become the new owner of the script process, which means that
       X will terminate when this new program's process terminates.

       Say you end your .xsession with the line exec fvwm. This means that the
       fvwm window manager will be run when X starts. When you quit the fvwm
       window manager, your X session will end, and all other clients will be
       shut down. You do not have to use a window manager here; you could exec
       xterm, in which case typing exit in that particular xterm would cause the
       entire X session to end.

       If you want to run other clients before you use exec, you will need to run
       them in the background. Otherwise .xsession will pause until each client
       exits and then continue to the next line. See the previous section on
       running jobs in the background (basically you want to put an ampersand at
       the end, as in xterm

       You can take advantage of this behavior, though. If you want to run
       commands at the end of your X session, you can have your .xsession run a
       window manager or the like and wait for it to finish. That is, leave off
       the exec and the & just enter fvwm by itself. Then put the commands of
       your choice after fvwm.

       It would probably help to look at a few sample .xsession files. In all the
       examples, replace fvwm with the window manager of your choice.

       The simplest .xsession just runs a window manager:

              exec fvwm
       This will run fvwm, and the X session will end when fvwm exits. If you do
       it without the exec, everything will appear to behave the same way, but
       behind the scenes .xsession will hang around waiting for fvwm, and
       .xsession will exit after fvwm does. Using exec is slightly better because
       fvwm replaces .xsession instead of leaving it waiting. You can use the ps
       or top command to verify this.

       A more useful .xsession runs a few clients before starting the window
       manager. For example, you might want some xterms and an xclock whenever
       you start X. No problem; just enter xterm &xterm &xclock &exec fvwm.
       Two xterms and an xclock start up in the background, and then the window
       manager is launched. When you quit the window manager, you'll also quit X.

       You might try it without the backgrounding just to see what happens. Enter
       this command: xterm xclock exec fvwm. xterm will start, and wait for you
       to exit it. Then xclock will start; you'll have to exit xclock before fvwm
       will start. The commands are run in sequence, since the script waits for
       each one to exit.

       You can use sequential execution to your advantage. Perhaps you want to
       keep track of when you stop working every day:

              xterm

              xclock

              fvwm

              date >> ~/logout-time

       This will fork off an xterm and an xclock and then run fvwm and wait for
       it to finish. When you exit fvwm, it will move on to the last line, which
       appends the current date and time to the file ~/logout-time.

       Finally, you can have a program other than the window manager determine
       when X exits:

              xclock

              fvwm

              exec xterm

       This script will run xclock and fvwm in the background and then replace
       itself with xterm. When you exit the xterm, your X session will end.

       The best way to learn how to use .xsession is to try some of these things
       out. Again, be sure you use chmod to make it executable; failure to do so
       is a common error.

    Filesystems

       A Debian system uses a filesystem to store and manage your data. This
       chapter introduces you to the filesystem, describes how to add and remove
       filesystems, and shows you how to back up your system.

    Concepts

       It's probably a good idea to explain a little theory before discussing the
       mechanics of using disks. In particular, you must understand the concept
       of a filesystem. This can be a bit confusing because it has several
       meanings.

       The filesystem refers to the whole directory tree, starting with the root
       directory /, as described in earlier chapters.

       A filesystem in general means any organization of files and directories on
       a particular physical device. ``Organization'' means the hierarchical
       directory structure and any other information about files one might want
       to keep track of: their size, who has permission to change them, etc. So
       you might have one filesystem on your hard disk, and another one on each
       floppy disk.

       ``Filesystem'' is also used to mean a type of filesystem. For example,
       MS-DOS and Windows 3.1 organize files in a particular way, with particular
       rules: Filenames can have only eight characters, for example, and no
       permission information is stored. Linux calls this the msdos filesystem.
       Linux also has its own filesystem, called the ext2 filesystem (version two
       of the ext filesystem). You'll use the ext2 filesystem most of the time
       unless you're accessing files from another operating system or have other
       special needs.

       Any physical device you wish to use for storing files must have at least
       one filesystem on it. This means a filesystem in the second sense -a
       hierarchy of files and directories, along with information about them. Of
       course, any filesystem has a type, so the third sense will come into play
       as well. If you have more than one filesystem on a single device, each
       filesystem can have a different type -for example, you might have both a
       DOS partition and a Linux partition on your hard disk.

    mount and /etc/fstab

       This section describes how to mount a floppy or Zip disk, discusses the
       /dev directory, and addresses distributing the directory tree over
       multiple physical devices or partitions.

    Mounting a Filesystem

       On a GNU/Linux system there's no necessary correspondence between
       directories and physical devices as there is in Windows, in which each
       drive has its own directory tree beginning with a letter (such as C:\).

       Instead, each physical device such as a hard disk or floppy disk has one
       or more filesystems on it. In order to make a filesystem accessible, it's
       assigned to a particular directory in another filesystem. To avoid
       circularity, the root filesystem (which contains the root directory /) is
       not stored within any other filesystem. You have access to it
       automatically when you boot Debian.

       A directory in one filesystem that contains another filesystem is known as
       a mount point. A mount point is a directory in a first filesystem on one
       device (such as your hard disk) that ``contains'' a second filesystem,
       perhaps on another device (such as a floppy disk). To access a filesystem,
       you must mount it at some mount point.

       So, for example, you might mount a CD at the mount point /cdrom. This
       means that if you look in the directory /cdrom, you'll see the contents of
       the CD. The /cdrom directory itself is actually on your hard disk. For all
       practical purposes, the contents of the CD become a part of the root
       filesystem, and when you type commands and use programs, it doesn't make
       any difference what the actual physical location of the files is. You
       could have created a directory on your hard disk called /cdrom and put
       some files in it, and everything would behave in exactly the same way.
       Once you mount a filesystem, there's no need to pay any attention to
       physical devices.

       However, before you can mount a filesystem or actually create a filesystem
       on a disk that doesn't have one yet, it's necessary to refer to the
       devices themselves. All devices have names, which are located in the /dev
       directory. If you type ls /dev now, you'll see a pretty lengthy list of
       every possible device you could have on your Debian system. For a summary
       of some devices, see Table 2.1 on page [*]. A more thorough list can be
       found on your system in the file /usr/src/linux/Documentation/devices.txt.

       To mount a filesystem, we want to tell Linux to associate whatever
       filesystem it finds on a particular device with a particular mount point.
       In the process, we might have to tell Linux what kind of filesystem to
       look for.

    Example: Mounting a CD-ROM

       As a simple demonstration, we'll go through mounting a CD-ROM, such as the
       one you may have used to install Debian. You'll need to be root to do
       this, so be careful; whenever you're root, you have the power to
       manipulate the whole system, not just your own files. Also, these commands
       assume there's a CD in your drive; you should put one in the drive now.
       Then start with the following command:

              su
       If you haven't already, you need to either log in as root or gain root
       privileges with the su (super user) command. If you use su, enter the root
       password when prompted.

              ls /cdrom
       Use this command to see what's in the /cdrom directory before you start.
       If you don't have a /cdrom directory, you may have to make one using
       mkdir /cdrom.

              mount
       Simply typing mount with no arguments lists the currently mounted
       filesystems.

              mount -t iso9660 CD-device /cdrom
       For this command, you should substitute the name of your CD-ROM device for
       CD-device in the above command line. If you aren't sure, /dev/cdrom is a
       good guess because the install process should have created this symbolic
       link on the system. If that fails, try the different IDE devices:
       /dev/hdc, etc. You should see a message like this: mount: block device
       /dev/hdc is write-protected, mounting read-only.

       The -t option specifies the type of the filesystem, in this case iso9660.
       Most CDs are iso9660. The next argument is the name of the device to
       mount, and the final argument is the mount point. There are many other
       arguments for mount; see the manual page for details.

       Once a CD is mounted, you may find that your drive tray will not open. You
       must unmount the CD before removing it.

              ls /cdrom
       Confirms that /cdrom now contains whatever is on the CD in your drive.

              mount
       Displays the list of filesystems again; notice that your CD drive is now
       mounted.

              umount /cdrom
       This unmounts the CD. It's now safe to remove the CD from the drive.
       Notice that the command is umount with no ``n,'' even though it's used to
       unmount the filesystem.

              exit
       Don't leave yourself logged on as root. Log out immediately, just to be
       safe.

    /etc/fstab: Automating the Mount Process

       The file /etc/fstab (it stands for ``filesystem table'') contains
       descriptions of filesystems that you mount often. These filesystems can
       then be mounted with a shorter command, such as mount /cdrom. You can also
       configure filesystems to mount automatically when the system boots. You'll
       probably want to mount all of your hard disk filesystems when you boot, so
       Debian automatically adds entries to fstab to do this for you.

       Look at this file now by typing more /etc/fstab. It will have two or more
       entries that were configured automatically when you installed the system.
       It probably looks something like this:

              # /etc/fstab: static file system information.

              #

              # #

              /dev/hda1 / ext2 defaults 0 1

              /dev/hda3 none swap sw 0 0

              proc /proc proc defaults 0 0

              /dev/hda5 /tmp ext2 defaults 0 2

              /dev/hda6 /home ext2 defaults 0 2

              /dev/hda7 /usr ext2 defaults 0 2

              /dev/hdc /cdrom iso9660 ro,noauto 0 0

              /dev/fd0 /floppy auto noauto,sync 0 0

       The first column lists the device the filesystem resides on. The second
       lists the mount point, the third indicates the filesystem type. The line
       beginning by proc is a special filesystem. Notice that the swap partition
       (/dev/hda3 in the example) has no mount point, so the mount point column
       contains none.

       The last three columns may require some explanation.

       The fifth column is used by the dump utility to decide when to back up the
       filesystem. In most cases, you can put 0 here.

       The sixth column is used by fsck to decide in what order to check
       filesystems when you boot the system. The root filesystem should have a 1
       in this field, filesystems that don't need to be checked (such as the swap
       partition) should have a 0, and all other filesystems should have a 2.
       It's worth noting that the swap partition isn't exactly a filesystem in
       the sense that it does not contain files and directories but is just used
       by the Linux kernel as secondary memory. However, for historical reasons,
       the swap partitions are still listed in the same file as the filesystems.

       Column four contains one or more options to use when mounting the
       filesystem. You can check the mount manpage for a summary; see section 5.1
       on page [*].

    Removable Disks (Floppies, Zip Disks, Etc.)

       Add the following lines to your /etc/fstab file:

              /dev/sda1 /mnt/zip ext2 noauto,user 0 0

              /dev/sda4 /mnt/dos msdos noauto,user 0 0

       From now on, you'll be able to mount the DOS-formatted Zip disks with the
       command mount /mnt/dos, and you be able to mount Linux-formatted Zip disks
       with the command mount /mnt/zip.

       If you have SCSI hard disks in your system, you'll have to change sda to
       sdb or sdc in the example above.

    Backup Tools

       Backups are important under any operating system. Debian GNU/Linux
       provides several different utilities that you might want to use.
       Additionally, while many of these utilities were aimed at tape backups
       originally, you'll find that they are now being used for other things. For
       instance, tar is being used for distributing programs over the Internet.
       Some of the utilities that you'll find include the following:

         * Taper is a menu-driven, easy-to-learn backup program that can back up
           to a variety of media. Its limitation is that it doesn't handle large
           (4GB or larger) backups.
         * dump is designed specifically for tapes; its main strengths are its
           interface for file restores, low-level filesystem backups, and
           incremental backup scheduling. Its limitations include the inability
           to back up NFS or other non-ext2 filesystems and some rather arcane
           defaults.
         * GNU tar (short for Tape ARchiver) is an implementation of what is
           probably the most widely used backup or archiving utility in Linux
           today. It makes a good general purpose tool and can deal with the
           widest variety of target media. Additionally, many different systems
           can read tar files, making them highly portable. tar's weaknesses
           include a weaker incremental backup system than dump and no
           interactive restore selection screen.

    tar

       Because tar is used so much, and for quite a bit in addition to backups,
       it is being described here. For more details, see the tar manual page;
       instructions for viewing manual pages can be found in section 5.1 on page
       [*].

       tar is an archiver. This means that tar can take many files and combine
       them all into one large file or write them out to a backup device such as
       a tape drive. Once you have this one large file, you will often want to
       compress it; the -z option is great for this. Hence, tar offers a great
       way to distribute programs and data on the Internet, and you'll find that
       it is used extensively for this purpose.

       Here's a sample tar command line:

              tar -zcvf myfiles.tar.gz /usr/local/bin
       Let's take a look at how this command can be broken down:

       tar
              Name of the command.

       -
              Tells tar that options will follow.

       z
              Tells tar to use gzip compression automatically; if you use this,
              it's good to add a .gz extension as well.

       c
              Tells tar to create a new archive.

       v
              This says to be verbose; that is, it tells tar to let you know
              what it's doing while it creates the archive.

       f
              This indicates that the next thing on the command line is the name
              of the file to be created or the device to be used. If I used
              /dev/st0 here, for instance, it would write the backup to the tape
              drive.

       myfiles.tar.gz
              This is the name of the file to be created.

       /usr/local/bin
              This is the name of the file or directory to store in the archive.
              It's also possible to specify several items here.

       You may often find tar.gz files (or simply tgz files) on the Internet. You
       can unpack these with a command like:

              tar -zxvf filename.tar.gz

    Networking

       One of the key benefits of GNU/Linux over other systems lies in its
       networking support. Few systems can rival the networking features present
       in GNU/Linux. In this chapter, we tell you how to configure your network
       devices.

    PPP

       This section is a quick-start guide to setting up PPP on Debian. If it
       turns out that you need more details, see the excellent |PPP HOWTO| from
       the Linux Documentation Project. The HOWTO goes into much more detail if
       you're interested or have unique needs.

    Introduction

       If you connect to the Internet over a phone line, you'll want to use PPP
       (Point-to-Point Protocol). This is the standard connection method offered
       by ISPs (Internet service providers). In addition to using PPP to dial
       your ISP, you can have your computer listen for incoming connections -
       this lets you dial your computer from a remote location.

    Preparation

       Configuring PPP on Debian GNU/Linux is straightforward once you have all
       the information you'll need. Debian makes things even easier with its
       simple configuration tools.

       Before you start, be sure you have all the information provided by your
       ISP. This might include:

         * Username or login
         * Password
         * Your static IP (Internet Protocol) address, if any (these look like
           209.81.8.242). This information isn't needed for most ISPs.
         * Bitmask (this will look something like 255.255.255.248). This
           information isn't needed for most ISPs.
         * The IP addresses of your ISP's name servers (or DNS).
         * Any special login procedure required by the ISP.
       Next, you'll want to investigate your hardware setup: whether your modem
       works with GNU/Linux and which serial port it's connected to.

       A simple rule determines whether your modem will work. If it's a
       ``winmodem'' or ``host-based modem,'' it won't work. These modems are
       cheap because they have very little functionality, and they require the
       computer to make up for their shortcomings. Unfortunately, this means they
       are complex to program, and manufacturers generally do not make the
       specifications available for developers.

       If you have a modem with its own on-board circuitry or an external modem,
       you should have no trouble at all.

       On GNU/Linux systems, the serial ports are referred to as /dev/ttyS0,
       /dev/ttyS1, and so on. Your modem is almost certainly connected to either
       port 0 or port 1, equivalent to COM1: and COM2: under Windows. If you
       don't know which your modem is connected to, run the program wvdialconf to
       try to detect it (see below); otherwise, just try both and see which
       works.

       If you want to talk to your modem or dial your ISP without using PPP, you
       can use the minicom program. You may need to install the minicom package
       to make the program available.

    The Easy Way: wvdial

       The simplest way to get PPP running is with the wvdial program. It makes
       some reasonable guesses and tries to set things up for you. If it works,
       you're in luck. If it guesses wrong, you'll have to do things manually.

       Be sure you have the following packages installed:

         * ppp
         * ppp-pam
         * wvdial
       When you install the wvdial package, you may be given the opportunity to
       configure it. Otherwise, to set up wvdial, follow these simple steps:

       Log in as root, using su (as described in an earlier chapter).

              touch /etc/wvdial.conf
       touch will create the following file if the file doesn't exist; the
       configuration program requires an existing file.

              wvdialconf /etc/wvdial.conf
       This means you're creating a configuration file, /etc/wvdial.conf.

       Answer any questions that appear on the screen. wvdialconf will also scan
       for your modem and tell you which serial port it's on; you may want to
       make a note of this for future reference.

    Ethernet

       Another popular way to connect to the Internet is via a LAN that uses
       Ethernet. This gives you a high-speed local network in addition to
       Internet access. Fortunately, though, you should have already configured
       Ethernet networking during installation so there isn't much you need to do
       now. If you ever need to modify your configuration, here are the files
       that you will be interested in:

         * /etc/init.d/network has things such as your IP address, netmask, and
           default route.
         * /etc/hostname records your hostname.
         * /etc/hosts also records your hostname and IP address.

                         Removing and Installing Software

       This chapter describes ways of installing and removing software packages.
       There are several ways of doing both. Here we discuss installation and
       removal of pre-built software, such as Debian packages, and installation
       of source that must be built by you.

                        What a Package Maintenance Utility Does

       An application or utility program usually involves quite a few files. It
       might include libraries, data files like game scenarios or icons,
       configuration files, manual pages, and documentation. When you install the
       program, you want to make sure you have all the files you need in the
       right places.

       You'd also like to be able to uninstall the program. When you uninstall,
       you want to be sure all the associated files are deleted. However, if a
       program you still have on the system needs those files, you want to be
       sure you keep them.

       Finally, you'd like to be able to upgrade a program. When you upgrade, you
       want to delete obsolete files and add new ones, without breaking any part
       of the system.

       The Debian package system solves these problems. It allows you to install,
       remove, and upgrade software packages, which are neat little bundles
       containing the program files and information that helps the computer
       manage them properly. Debian packages have filenames ending in the
       extension .deb, and they're available on the FTP site or on your official
       Debian CD-ROM.

    dpkg

       The simplest way to install a single package you've downloaded is with the
       command dpkg -i (short for dpkg -install). Say you've downloaded the
       package icewm_0.8.12-1.deb and you'd like to install it. First log on as
       root, and then type dpkg -i icewm_0.8.12-1.deb, and icewm version 0.8.12
       will be installed. If you already had an older version, dpkg will upgrade
       it rather than installing both versions at once.

       If you want to remove a package, you have two options. The first is most
       intuitive: dpkg -r icewm. This will remove the icewm package (-r is short
       for -remove). Note that you give only the icewm for -remove, whereas
       -install requires the entire .deb filename.

       -remove will leave configuration files for the package on your system. A
       configuration file is defined as any file you might have edited in order
       to customize the program for your system or your preferences. This way, if
       you later reinstall the package, you won't have to set everything up a
       second time.

       However, you might want to erase the configuration files too, so dpkg also
       provides a -purge option. dpkg -purge icewm will permanently delete every
       last file associated with the icewm package.

    dselect

       dselect is a great front-end for dpkg. dselect provides a menu interface
       for dpkg, and can automatically fetch the appropriate files from a CD-ROM
       or Internet FTP site. For details on using dselect, see section 3.20 on
       page [*].

    Compiling Software

       Many programs come in source format, often in tar.gz form. First, you must
       unpack the tar.gz file; for details on doing this, see section 10.3.1 on
       page [*]. Before you can compile the package, you'll need to have gcc,
       libc6-dev, and other relevant ``-dev'' packages installed; most of these
       are listed in the devel area in dselect.

       With the appropriate packages installed, cd into the directory that tar
       created for you. At this point, you'll need to read the installation
       instructions. Most programs provide an INSTALL or README file that will
       tell you how to proceed.

    Advanced Topics

       By now, you should have a strong base for which to build your GNU/Linux
       skills on. In this chapter we cover some very useful information regarding
       some advanced GNU/Linux features.

    Regular Expressions

       A regular expression is a description of a set of characters. This
       description can be used to search through a file by looking for text that
       matches the regular expression. Regular expressions are analogous to shell
       wildcards (see section 6.6 on page [*]), but they are both more
       complicated and more powerful.

       A regular expression is made up of text and metacharacters. A
       metacharacter is just a character with a special meaning. Metacharacters
       include the following: . * [] -\^ $.

       If a regular expression contains only text (no metacharacters), it matches
       that text. For example, the regular expression ``my regular expression''
       matches the text ``my regular expression,'' and nothing else. Regular
       expressions are usually case sensitive.

       You can use the egrep command to display all lines in a file that contain
       a regular expression. Its syntax is as follows:

              egrep 'regexp' filename1 ...
       The single quotation marks are not always needed, but they never hurt.

       For example, to find all lines in the GPL that contain the word GNU, you
       type

              egrep 'GNU' /usr/doc/copyright/GPL
       egrep will print the lines to standard output. If you want all lines that
       contain freedom followed by some indeterminate text, followed by GNU, you
       can do this:

              egrep 'freedom.*GNU' /usr/doc/copyright/GPL
       The . means ``any character,'' and the * means ``zero or more of the
       preceding thing,'' in this case ``zero or more of any character.'' So .*
       matches pretty much any text at all. egrep only matches on a line-by-line
       basis, so freedom and GNU have to be on the same line.

       Here's a summary of regular expression metacharacters:

       .
              Matches any single character except newline.

       *
              Matches zero or more occurrences of the preceding thing. So the
              expression a* matches zero or more lowercase a, and .* matches
              zero or more characters.

       [characters]
              The brackets must contain one or more characters; the whole
              bracketed expression matches exactly one character out of the set.
              So [abc]matches one a, one b, or one c; it does not match zero
              characters, and it does not match a character other than these
              three.

       ^
              Anchors your search at the beginning of the line. The expression
              ^The matches The when it appears at the beginning of a line; there
              can't be spaces or other text before The. If you want to allow
              spaces, you can permit 0 or more space characters like this: ^
              *The.

       $
              Anchors at the end of the line. end$ requires the text end to be
              at the end of the line, with no intervening spaces or text.

       [^characters]
              This reverses the sense of a bracketed character list. So [^abc]
              matches any single character, except a, b, or c.

       [character-character]
              You can include ranges in a bracketed character list. To match any
              lowercase letter, use [a-z]. You can have more than one range; so
              to match the first three or last three letters of the alphabet,
              try [a-cx-z]. To get any letter, any case, try [a-zA-Z]. You can
              mix ranges with single characters and with the ^metacharacter; for
              example, [^a-zBZ]means ``anything except a lowercase letter,
              capital B, or capital Z.''

       ()
              You can use parentheses to group parts of the regular expression,
              just as you do in a mathematical expression.

       |
              |means ``or.'' You can use it to provide a series of alternative
              expressions. Usually you want to put the alternatives in
              parentheses, like this: c(ad|ab|at)matches cad or cab or cat.
              Without the parentheses, it would match cad or ab or at instead

       \
              Escapes any special characters; if you want to find a literal *,
              you type \*. The slash means to ignore *'s usual special meaning.

       Here are some more examples to help you get a feel for things:

       c.pe
              matches cope, cape, caper.

       c\ .pe
              matches c.pe, c.per.

       sto*p
              matches stp, stop, stoop.

       car.*n
              matches carton, cartoon, carmen.

       xyz.*
              matches xyz and anything after it; some tools, like egrep, only
              match until the end of the line.

       ^The
              matches The at the beginning of a line.

       atime$
              matches atime at the end of a line.

       ^Only$
              matches a line that consists solely of the word Only -no spaces,
              no other characters, nothing. Only Only is allowed.

       b[aou]rn
              matches barn, born, burn.

       Ver[D-F]
              matches VerD, VerE, VerF.

       Ver[^0-9]
              matches Ver followed by any non-digit.

       the[ir][re]
              matches their, therr, there, theie.

       [A-Za-z][A-Za-z]*
              matches any word which consists of only letters, and at least one
              letter. It will not match numbers or spaces.

    Advanced Files

       Now that you have a basic understanding of files, it is time to learn more
       advanced things about them.

    The Real Nature of Files: Hard Links and Inodes

       Each file on your system is represented by an inode (for Information Node;
       pronounced ``eye-node''). An inode contains all the information about the
       file. However, the inode is not directly visible. Instead, each inode is
       linked into the filesystem by one or more hard links. Hard links contain
       the name of the file and the inode number. The inode contains the file
       itself, i.e., the location of the information being stored on disk, its
       access permissions, the file type, and so on. The system can find any
       inode if it has the inode number.

       A single file can have more than one hard link. What this means is that
       multiple filenames refer to the same file (that is, they are associated
       with the same inode number). However, you can't make hard links across
       filesystems: All hard references to a particular file (inode) must be on
       the same filesystem. This is because each filesystem has its own set of
       inodes, and there can be duplicate inode numbers on different filesystems.

       Because all hard links to a given inode refer to the same file, you can
       make changes to the file, referring to it by one name, and then see those
       changes when referring to it by a different name. Try this:

              cd; echo "hello" > firstlink
       cd to your home directory and create a file called firstlink containing
       the word ``hello.'' What you've actually done is redirect the output of
       echo (echo just echoes back what you give to it), placing the output in
       firstlink. See the chapter on shells for a full explanation.

              cat firstlink
       Confirms the contents of firstlink.

              ln firstlink secondlink
       Creates a hard link: secondlink now points to the same inode as firstlink.

              cat secondlink
       Confirms that secondlink is the same as firstlink.

              ls -l
       Notice that the number of hard links listed for firstlink and
       secondlinkfiles!inodes is 2.

              echo "change" >> secondlink
       This is another shell redirection trick (don't worry about the details).
       You've appended the word ``change'' to secondlink. Confirm this with cat
       secondlink.

              cat firstlink
       firstlink also has the word ``change'' appended! That's because firstlink
       and secondlink refer to the same file. It doesn't matter what you call it
       when you change it.

              chmod a+rwx firstlink
       Changes permissions on firstlink. Enter the command ls -l to confirm that
       permissions on secondlink were also changed. This means that permissions
       information is stored in the inode, not in links.

              rm firstlink
       Deletes this link. This is a subtlety of rm. It really removes links, not
       files. Now type ls -l and notice that secondlink is still there. Also
       notice that the number of hard links for secondlink has been reduced to
       one.

              rm secondlink
       Deletes the other link. When there are no more links to a file, Linux
       deletes the file itself, that is, its inode.

       All files work like this -even special types of files such as devices
       (e.g. /dev/hda).

       A directory is simply a list of filenames and inode numbers, that is, a
       list of hard links. When you create a hard link, you're just adding a
       name-number pair to a directory. When you delete a file, you're just
       removing a hard link from a directory.

    Types of Files

       One detail we've been concealing up to now is that the Linux kernel
       considers nearly everything to be a file. That includes directories and
       devices: They're just special kinds of files.

       As you may remember, the first character of an ls -l display represents
       the type of the file. For an ordinary file, this will be simply -. Other
       possibilities include the following:

       d
              directory

       l
              symbolic link

       b
              block device

       c
              character device

       p
              named pipe

       s
              socket

      Symbolic Links

       Symbolic links (also called ``symlinks'' or ``soft links'') are the other
       kind of link besides hard links. A symlink is a special file that ``points
       to'' a hard link on any mounted filesystem. When you try to read the
       contents of a symlink, it gives the contents of the file it's pointing to
       rather than the contents of the symlink itself. Because directories,
       devices, and other symlinks are types of files, you can point a symlink at
       any of those things.

       So a hard link is a filename and an inode number. A file is really an
       inode: a location on disk, file type, permissions mode, etc. A symlink is
       an inode that contains the name of a hard link. A symlink pairs one
       filename with a second filename, whereas a hard link pairs a filename with
       an inode number.

       All hard links to the same file have equal status. That is, one is as good
       as another; if you perform any operation on one, it's just the same as
       performing that operation on any of the others. This is because the hard
       links all refer to the same inode. Operations on symlinks, on the other
       hand, sometimes affect the symlink's own inode (the one containing the
       name of a hard link) and sometimes affect the hard link being pointed to.

       There are a number of important differences between symlinks and hard
       links.

       Symlinks can cross filesystems. This is because they contain complete
       filenames, starting with the root directory, and all complete filenames
       are unique. Because hard links point to inode numbers, and inode numbers
       are unique only within a single filesystem, they would be ambiguous if the
       filesystem wasn't known.

       You can make symlinks to directories, but you can't make hard links to
       them. Each directory has hard links -its listing in its parent directory,
       its . entry, and the .. entry in each of its subdirectories -but to
       impose order on the filesystem, no other hard links to directories are
       allowed. Consequently, the number of files in a directory is equal to the
       number of hard links to that directory minus two (you subtract the
       directory's name and the . link). comparing!hard links and symlinks You
       can only make a hard link to a file that exists, because there must be an
       inode number to refer to. However, you can make a symlink to any filename,
       whether or not there actually is such a filename.

       Removing a symlink removes only the link. It has no effect on the
       linked-to file. Removing the only hard link to a file removes the file.

       Try this:

              cd; ln -s /tmp/me MyTmp
       cd to your home directory. ln with the -s option makes a symbolic link -
       in this case, one called MyTmp that points to the filename /tmp/me.

              ls -l MyTmp
       Output should look like this:

              lrwxrwxrwx 1 havoc havoc 7 Dec 6 12:50 MyTmp -> /tmp/me
       The date and user/group names will be different for you, of course. Notice
       that the file type is l, indicating that this is a symbolic link. Also
       notice the permissions: Symbolic links always have these permissions. If
       you attempt to chmod a symlink, you'll actually change the permissions on
       the file being pointed to.

              chmod 700 MyTmp
       You will get a No such file or directory error, because the file /tmp/me
       doesn't exist. Notice that you could create a symlink to it anyway.

              mkdir /tmp/me
       Creates the directory /tmp/me.

              chmod 700 MyTmp
       Should work now.

              touch MyTmp/myfile
       Creates a file in MyTmp.

              ls /tmp/me
       The file is actually created in /tmp/me.

              rm MyTmp
       Removes the symbolic link. Notice that this removes the link, not what it
       points to. Thus you use rm not rmdir.

              rm /tmp/me/myfile; rmdir /tmp/me
       Lets you clean up after yourself. symlinks!removing

      Device Files

       Device files refer to physical or virtual devices on your system, such as
       your hard disk, video card, screen, and keyboard. An example of a virtual
       device is the console, represented by /dev/console.

       There are two kinds of devices:character and block. Character devices can
       be accessed one character at a time. Remember the smallest unit of data
       that can be written to or read from the device is a character (byte).

       Block devices must be accessed in larger units called blocks, which
       contain a number of characters. Your hard disk is a block device.

       You can read and write device files just as you can from other kinds of
       files, though the file may well contain some strange
       incomprehensible-to-humans gibberish. Writing random data to these files
       is probably a bad idea. Sometimes it's useful, though. For example, you
       can dump a postscript file into the printer device /dev/lp0 or send modem
       commands to the device file for the appropriate serial port.

        /dev/null

       /dev/null is a special device file that discards anything you write to it.
       If you don't want something, throw it in /dev/null. It's essentially a
       bottomless pit. If you read /dev/null, you'll get an end-of-file (EOF)
       character immediately. /dev/zero is similar, except that you read from it
       you get the \0 character (not the same as the number zero).

      Named Pipes (FIFOs)

       A named pipe is a file that acts like a pipe. You put something into the
       file, and it comes out the other end. Thus it's called a FIFO, or
       First-In-First-Out, because the first thing you put in the pipe is the
       first thing to come out the other end.

       If you write to a named pipe, the process that is writing to the pipe
       doesn't terminate until the information being written is read from the
       pipe. If you read from a named pipe, the reading process waits until
       there's something to read before terminating. The size of the pipe is
       always zero: It doesn't store data, it just links two processes like the
       shell |. However, because this pipe has a name, the two processes don't
       have to be on the same command line or even be run by the same user.

       You can try it by doing the following:

              cd; mkfifo mypipe
       Makes the pipe.

              echo "hello" > mypipe    Puts a process in the background that tries to write ``hello'' to the
       pipe. Notice that the process doesn't return from the background; it is
       waiting for someone to read from the pipe.

              cat mypipe
       At this point, the echo process should return, because cat read from the
       pipe, and the cat process will print hello.

              rm mypipe
       You can delete pipes just like any other file.

      Sockets

       Sockets are similar to pipes, only they work over the network. This is how
       your computer does networking. You may have heard of ``WinSock,'' which is
       sockets for Windows.

       We won't go into these further because you probably won't have occasion to
       use them unless you're programming. However, if you see a file marked with
       type son your computer, you know what it is.

    The proc Filesystem

       The Linux kernel makes a special filesystem available, which is mounted
       under /proc on Debian systems. This is a ``pseudo-filesystem'' because it
       doesn't really exist on any of your physical devices.

       The proc filesystem contains information about the system and running
       processes. Some of the ``files'' in /proc are reasonably understandable to
       humans (try typing cat /proc/meminfo or cat /proc/cpuinfo); others are
       arcane collections of numbers. Often, system utilities use these to gather
       information and present it to you in a more understandable way.

       People frequently panic when they notice one file in particular -
       /proc/kcore -which is generally huge. This is (more or less) a copy of
       the contents of your computer's memory. It's used to debug the kernel. It
       doesn't actually exist anywhere, so don't worry about its size.

       If you want to know about all the things in /proc, type man 5 proc.

    Large-Scale Copying

       Sometimes you may want to copy one directory to another location. Maybe
       you're adding a new hard disk and you want to copy /usr/local to it. There
       are several ways you can do this.

       The first is to use cp. The command cp -a will tell cp to do a copy
       preserving all the information it can. So, you might use

              cp -a /usr/local /destination
       However, there are some things that cp -a won't catch13.1. So, the best
       way to do a large copy job is to chain two tar commands together, like so:

              tar -cSpf -/usr/local | tar -xvSpf --C /destination
       The first tar command will archive the existing directory and pipe it to
       the second. The second command will unpack the archive into the location
       you specify with -C.

    Security

       Back in section 7.1 on page [*], we discussed file permissions in Linux.
       This is a fundamental way to keep your system secure. If you are running a
       multi-user system or a server, it is important to make sure that
       permissions are correct. A good rule of thumb is to set files to have the
       minimum permissions necessary for use.

       If you are running a network server, there are some other things to be
       aware of as well. First, you ought to uninstall or turn off any network
       services you're not using. A good place to start is the file
       /etc/inetd.conf; you can probably disable some of these. For most network
       services, it's also possible to control who has access to them; the
       /etc/hosts.allow and /etc/hosts.deny files (documented in
       man 5 hosts_access) can control who has access to which services. You also
       ought to keep up-to-date with patches or updates to Debian; these can be
       found on your nearest Debian FTP mirror.

       Some other commonsense rules apply:

         * Never tell anyone your password.
         * Never send your password in cleartext across the Internet by using
           something like telnet or FTP. Instead, use encrypted protocols or
           avoid logging in remotely.
         * Avoid using root as much as possible.
         * Don't install untrusted software, and don't install it as root.
         * Avoid making things world-writable whenever possible. /tmp is one
           exception to this rule.
       While this is probably not of as much use to somebody not running a
       server, it is still pays to know a bit about security. Debian's security
       mechanism is what protects your system from many viruses.

                         Software Development with Debian

       Debian makes a great platform for software development and programming.
       Among the languages and near-languages it supports are: C, C++,
       Objective-C, Perl, Python, m4, Ada, Pascal, Java, awk, Tcl/Tk, SQL,
       assembler, Bourne shell, csh, and more. Writing programs is beyond the
       scope of this book, but here are some of the more popular development
       programs in Debian:

       gcc
              The GNU C Compiler, a modern optimizing C compiler.

       g++
              The C++ compiler from the gcc line.

       cpp
              The C preprocessor from gcc.

       perl
              The Perl interpreter. Perl is a great ``glue'' language.

       gdb
              GNU Debugger, used to debug programs in many different languages.

       gprof
              Used for profiling, this program helps you to find ways to improve
              the performance of your programs.

       emacs
              GNU Emacs is a programmers' editor and IDE.

       as
              The GNU Assembler.

    Reference

                         Reading Documentation and Getting Help

    Kinds of Documentation

       On Debian systems, you can find documentation in at least the following
       places:

         * man pages, read with the man command.
         * info pages, read with the info command.
         * The /usr/doc/package directories, where package is the name of the
           Debian package.

             Tip:

             zless is useful for reading the files in /usr/doc; see section 8.1
             on page [*] for details.

         * /usr/doc/HOWTO/contains the Linux Documentation Project's
           HOWTO documents, if you've installed the Debian packages containing
           them.

         * Many commands have an -h or -help option. Type the command name
           followed by one of these options to try it.
         * The Debian Documentation Project has written some manuals.
         * The Debian support page has a FAQ and other resources. You can also
           try the Linux web site.
       The confusing variety of documentation sources exists for many reasons.
       For example, info is supposed to replace man, but man hasn't disappeared
       yet. However, it's nice to know that so much documentation exists!

       So where to look for help? Here are some suggestions:

         * Use the man pages and the -help or -h option to get a quick summary of
           a command's syntax and options. Also use man if a program doesn't yet
           have an info page.
         * Use info if a program has info documentation.
         * If neither of those works, look in /usr/doc/packagename.
         * /usr/doc/packagename often has Debian-specific information, even if
           there's a man page or info page.
         * Use the HOWTOs for instructions on how to set up a particular thing or
           for information on your particular hardware. For example, the Ethernet
           HOWTO has a wealth of information on Ethernet cards, and the PPP HOWTO
           explains in detail how to set up PPP.
         * Use the Debian Documentation Project manuals for conceptual
           explanations and Debian-specific information.
         * If all else fails, ask someone. See section A.1.3 on page [*].
       Using man pages is discussed above in section 5.1 on page [*]. It's very
       simple: press the space bar to go to the next page, and press q to quit
       reading. Using info, viewing files in /usr/doc, and asking for help from a
       person are all discussed in the remainder of this chapter.

    Using info

       info is the GNU documentation viewer. Some programs provide
       documentationin info format, and you can use info to view that
       documentation. You can start up the viewer by simply typing info, or by
       supplying a topic as well:

              info emacs
       You can also bring up the information on info itself, which includes a
       tutorial, like so:

              info info
       Now, you may navigate with these keys:

       arrows
              Move the cursor around the document

       m RET
              Select the menu item that's at the cursor

       u
              Move ``up'' in the document

       n
              Move to the next page

       p
              Move to the previous page

       s
              Search for something

       g
              Go to a specific page

       q
              Quit info

       You might notice that the top line of the screen indicates the next,
       previous, and ``up'' pages, corresponding nicely to the actions for the n,
       p, and u keys.

    HOWTOs

       In addition to their books, the Linux Documentation Project has made a
       series of short documents describing how to set up particular aspects of
       GNU/Linux. For instance, the SCSI-HOWTO describes some of the
       complications of using SCSI -a standard way of talking to devices -with
       GNU/Linux. In general, the HOWTOs have more specific information about
       particular hardware configurations and will be more up to date than this
       manual.

       There are Debian packages for the HOWTOs. doc-linux-text contains the
       various HOWTOs in text form; the doc-linux-html package contains the
       HOWTOs in (surprise!) browsable HTML format. Note also that Debian has
       packaged translations of the HOWTOs in various languages that you may
       prefer if English is not your native language. Debian has packages for the
       German, French, Spanish, Italian, Japanese, Korean, Polish, Swedish and
       Chinese versions of the HOWTOs. These are usually available in the package
       doc-linux-languagecode, where languagecode is fr for French, es for
       Spanish, etc. If you've installed one of these, you should have them in
       /usr/doc/HOWTO. However, you may be able to find more recent versions on
       the Net at the LDP homepage.

    Personal Help

       The correct place to ask for help with Debian is the debian-user mailing
       list at debian-user@lists.debian.org. If you know how to use IRC (Internet
       Relay Chat), you can use the #debian channel on irc.debian.org. You can
       find general GNU/Linux help on the comp.os.linux.* USENET hierarchy. It is
       also possible to hire paid consultants to provide guaranteed support
       services. The Debian website has more information on many of these
       resources.

       Again, please do not ask the authors of this book for help. We probably
       don't know the answer to your specific problem anyway; if you mail
       debian-user, you will get higher-quality responses, and more quickly.

       Always be polite and make an effort to help yourself by reading the
       documentation. Remember, Debian is a volunteer effort and people are doing
       you a favor by giving their time to help you. Many of them charge hundreds
       of dollars for the same services during the day.

      Tips for asking questions

         * Read the obvious documentation first. Things like command options and
           what a command does will be covered there. This includes manpages and
           info documentation.
         * Check the HOWTO documents if your question is about setting up
           something such as PPP or Ethernet.
         * Try to be sure the answer isn't in this book.
         * Don't be afraid to ask, after you've made a basic effort to look it
           up.
         * Don't be afraid to ask for conceptual explanations, advice, and other
           things not often found in the documentation.
         * Include any information that seems relevant. You'll almost always want
           to mention the version of Debian you're using. You may also want to
           mention the version of any pertinent packages: The command
           dpkg -l packagename will tell you this. It's also useful to say what
           you've tried so far and what happened. Please include the exact error
           messages, if any.
         * Don't apologize for being new to Linux. There's no reason everyone
           should be a GNU/Linux expert to use it, any more than everyone should
           be a mechanic to use a car.
         * Don't post or mail in HTML. Some versions of Netscape and Internet
           Explorer will post in HTML rather than plain text. Most people will
           not even read these posts because the posts are difficult to read in
           most mail programs. There should be a setting somewhere in the
           preferences to disable HTML.
         * Be polite. Remember that Debian is an all-volunteer effort, and anyone
           who helps you is doing so on his or her time out of kindness.
         * Re-mail your question to the list if you've gotten no responses after
           several days. Perhaps there were lots of messages and it was
           overlooked. Or perhaps no one knows the answer -if no one answers the
           second time, this is a good bet. You might want to try including more
           information the second time.
         * Answer questions yourself when you know the answer. Debian depends on
           everyone doing his or her part. If you ask a question, and later on
           someone else asks the same question, you'll know how to answer it. Do
           so!

    Getting Information from the System

       When diagnosing problems or asking for help, you'll need to get
       information about your system. Here are some ways to do so:

         * Examine the files in /var/log/.
         * Examine the output of the dmesg command.
         * Run uname -a.

    Troubleshooting

       In Debian, as in life, things don't always work as you might expect or
       want them to. While Debian has a well-deserved reputation for being
       rock-solid and stable, sometimes its reaction to your commands may be
       unexpected. Here, we try to shed some light on the most common problems
       that people encounter.

    Common Difficulties

       This section provides some tips for handling some of the most frequently
       experienced difficulties users have encountered.

    Working with Strangely-Named Files

       Occasionally, you may find that you have accidentally created a file that
       contains a character not normally found in a filename. Examples of this
       could include a space, a leading hyphen, or maybe a quotation mark. You
       may find that accessing, removing, or renaming these files can be
       difficult.

       Here are some tips to help you:

         * Try enclosing the filename in single quotation marks, like this:
           less 'File With Spaces.txt'
         * Insert a ./ before the filename:
           less './-a strange file.txt'
         * Use wildcards:
           less File?With?Spaces.txt
         * Use a backslash before each unusual character:
           less File\ With\ Spaces.txt

    Printing

       One common source of trouble is the printing system in Debian.
       Traditionally, printing has been a powerful but complex aspect of Unix.
       However, Debian makes it easier. An easy way to print is with the package
       called magicfilter. magicfilter will ask you a few questions about your
       printer and then configure it for you. If you are having troubles
       printing, give magicfilter a try.

    X Problems

       Many questions revolve around X. Here are some general tips for things to
       try if you are having difficulties setting up the X Window system:

         * For mouse problems, run XF86Setup and try the PS/2, Microsoft,
           MouseSystems, and Logitech options. Most mice will fit under one of
           these. Also, the device for your mouse is /dev/psaux for PS/2 mice and
           a serial port such as /dev/ttyS0 for serial mice.
         * If you don't know what video chipset you have, try running
           SuperProbe; it can often figure this out for you.
         * If your screen doesn't have a lot of color, try selecting a different
           video card or tell X how much video RAM you have.
         * If your screen goes blank or has unreadable text when you start X, you
           probably selected an incorrect refresh rate. Go back to XF86Setup or
           xf86config and double-check those settings.
         * xvidtune can help if the image on the screen is shifted too far to the
           left or right, is too high or low, or is too narrow or wide.
         * xdpyinfo can give information about a running X session.
         * XF86Setup can set your default color depth.
         * You can select your default window manager by editing
           /etc/X11/window-managers.
         * /var/log/xdm-errors can contain useful information if you are having
           trouble getting xdm to start properly.
       As a final reminder, try the XF86Setup or xf86config tools for configuring
       or reconfiguring X for your hardware.

                         Troubleshooting the Boot Process

       If you have problems during the boot process, such as the kernel hangs
       during the boot process, the kernel doesn't recognize peripherals you
       actually have, or drives are not recognized properly, the first things to
       check are the boot parameters. They can be found by pressing F1 when
       booting from the rescue disk.

       Often, problems can be solved by removing add-ons and peripherals and then
       booting again. Internal modems, sound cards, and Plug-n-Play devices are
       especially problematic.

       Tecras and other notebooks, and some non-portables fail to flush the cache
       when switching on the A20 gate, which is provoked by bzImage kernels but
       not by zImage kernels. If your computer suffers from this problem, you'll
       see a message during boot saying A20 gating failed. In this case, you'll
       have to use the `tecra' boot images.

       If you still have problems, please submit a bug report. Send an email to
       submit@bugs.debian.org. You must include the following as the first lines
       of the email:

              Package: boot-floppies

              Version: version

       Make sure you fill in version with the version of the boot-floppies set
       that you used. If you don't know the version, use the date you downloaded
       the floppies, and include the distribution you got them from (e.g.,
       ``stable'' or ``frozen'').

       You should also include the following information in your bug report:

       architecture
              i386

       model
              your general hardware vendor and model

       memory
              amount of RAM

       scsi
              SCSI host adapter, if any

       cd-rom
              CD-ROM model and interface type, i.e., ATAPI

       network card
              network interface card, if any

       pcmcia
              details of any PCMCIA devices

       Depending on the nature of the bug, it also might be useful to report the
       disk model, the disk capacity, and the model of video card.

       In the bug report, describe what the problem is, including the last
       visible kernel messages in the event of a kernel hang. Describe the steps
       you performed that put the system into the problem state.

    Booting the System

       This appendix describes what happens during the GNU/Linux boot process.

       How you boot your system depends on how you set things up when you
       installed Debian. Most likely, you just turn the computer on. But you may
       have to insert a floppy disk first.

       Linux is loaded by a program called LILO, or LInux LOader. LILO can also
       load other operating systems and ask you which system you'd like to load.

       The first thing that happens when you turn on an Intel PC is that the BIOS
       executes. BIOS stands for Basic Input Output System. It's a program
       permanently stored in the computer on read-only chips. It performs some
       minimal tests and then looks for a floppy disk in the first disk drive. If
       it finds one, it looks for a ``boot sector'' on that disk and starts
       executing code from it, if there is any. If there is a disk but no boot
       sector, the BIOS will print a message like this:
       Non-system disk or disk error. Removing the disk and pressing a key will
       cause the boot process to resume.

       If there isn't a floppy disk in the drive, the BIOS looks for a master
       boot record (MBR) on the hard disk. It will start executing the code found
       there, which loads the operating system. On GNU/Linux systems, LILO can
       occupy the MBR and will load GNU/Linux.

       Thus, if you opted to install LILO on your hard drive, you should see the
       word LILO as your computer starts up. At that point, you can press the
       left Shift key to select which operating system to load or press Tab to
       see a list of options. Type in one of those options and press Enter. LILO
       will boot the requested operating system.

       If you don't press the Shift key, LILO will automatically load the default
       operating system after about 5 seconds. If you like, you can change what
       system LILO loads automatically, which systems it knows how to load, and
       how long it waits before loading one automatically.

       If you didn't install LILO on your hard drive, you probably created a boot
       disk. The boot disk will have LILO on it. All you have to do is insert the
       disk before you turn on your computer, and the BIOS will find it before it
       checks the MBR on the hard drive. To return to a non-Linux OS, take out
       the boot disk and restart the computer. From Linux, be sure you follow the
       proper procedure for restarting; see section 4.5 on page [*] for details.

       LILO loads the Linux kernel from disk and then lets the kernel take over.
       (The kernel is the central program of the operating system, which is in
       control of all other programs.) The kernel discards the BIOS and LILO.

       On non-Intel platforms, things work a little differently. But once you
       boot, everything is more or less the same.

       Linux looks at the type of hardware it's running on. It wants to know what
       type of hard disks you have, whether or not you have a bus mouse, whether
       or not you're on a network, and other bits of trivia like that. Linux
       can't remember things between boots, so it has to ask these questions each
       time it starts up. Luckily, it isn't asking you these questions -it's
       asking the hardware! While it boots, the Linux kernel will print messages
       on the screen describing what it's doing.

       The query process can cause problems with your system, but if it was going
       to, it probably would have when you first installed GNU/Linux. If you're
       having problems, consult the installation instructions or ask questions on
       a mailing list.

       The kernel merely manages other programs, so once it is satisfied
       everything is okay, it must start another program to do anything useful.
       The program the kernel starts is called init. After the kernel starts
       init, it never starts another program. The kernel becomes a manager and a
       provider of services.

       Once init is started, it runs a number of scripts (files containing
       commands), which prepare the system to be used. They do some routine
       maintenance and start up a lot of programs that do things like display a
       login prompt, listen for network connections, and keep a log of the
       computer's activities.

                         The GNU General Public License

    GNU GENERAL PUBLIC LICENSE

    Version 2, June 1991

                Copyright (C) 1989, 1991 Free Software Foundation, Inc.

    59 Temple Place, Suite 330, Boston,

    MA 02111-1307 USA

                Everyone is permitted to copy and distribute verbatim copies

                of this license document, but changing it is not allowed.

    Preamble

                 The licenses for most software are designed to take away your

              freedom to share and change it. By contrast, the GNU General Public

              License is intended to guarantee your freedom to share and change free

              software-to make sure the software is free for all its users. This

              General Public License applies to most of the Free Software

              Foundation's software and to any other program whose authors commit to

              using it. (Some other Free Software Foundation software is covered by

              the GNU Library General Public License instead.) You can apply it to

              your programs, too.

                 When we speak of free software, we are referring to freedom, not

              price. Our General Public Licenses are designed to make sure that you

              have the freedom to distribute copies of free software (and charge for

              this service if you wish), that you receive source code or can get it

              if you want it, that you can change the software or use pieces of it

              in new free programs; and that you know you can do these things.

                 To protect your rights, we need to make restrictions that forbid

              anyone to deny you these rights or to ask you to surrender the rights.

              These restrictions translate to certain responsibilities for you if you

              distribute copies of the software, or if you modify it.

                 For example, if you distribute copies of such a program, whether

              gratis or for a fee, you must give the recipients all the rights that

              you have. You must make sure that they, too, receive or can get the

              source code. And you must show them these terms so they know their

              rights.

                 We protect your rights with two steps: (1) copyright the software, and

              (2) offer you this license which gives you legal permission to copy,

              distribute and/or modify the software.

                 Also, for each author's protection and ours, we want to make certain

              that everyone understands that there is no warranty for this free

              software. If the software is modified by someone else and passed on, we

              want its recipients to know that what they have is not the original, so

              that any problems introduced by others will not reflect on the original

              authors' reputations.

                 Finally, any free program is threatened constantly by software

              patents. We wish to avoid the danger that redistributors of a free

              program will individually obtain patent licenses, in effect making the

              program proprietary. To prevent this, we have made it clear that any

              patent must be licensed for everyone's free use or not licensed at all.

                 The precise terms and conditions for copying, distribution and

              modification follow.

    GNU GENERAL PUBLIC LICENSE

                  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

                 0. This License applies to any program or other work which contains

              a notice placed by the copyright holder saying it may be distributed

              under the terms of this General Public License. The "Program", below,

              refers to any such program or work, and a "work based on the Program"

              means either the Program or any derivative work under copyright law:

              that is to say, a work containing the Program or a portion of it,

              either verbatim or with modifications and/or translated into another

              language. (Hereinafter, translation is included without limitation in

              the term "modification".) Each licensee is addressed as "you".

              Activities other than copying, distribution and modification are not

              covered by this License; they are outside its scope. The act of

              running the Program is not restricted, and the output from the Program

              is covered only if its contents constitute a work based on the

              Program (independent of having been made by running the Program).

              Whether that is true depends on what the Program does.

                 1. You may copy and distribute verbatim copies of the Program's

              source code as you receive it, in any medium, provided that you

              conspicuously and appropriately publish on each copy an appropriate

              copyright notice and disclaimer of warranty; keep intact all the

              notices that refer to this License and to the absence of any warranty;

              and give any other recipients of the Program a copy of this License

              along with the Program.

              You may charge a fee for the physical act of transferring a copy, and

              you may at your option offer warranty protection in exchange for a fee.

                 2. You may modify your copy or copies of the Program or any portion

              of it, thus forming a work based on the Program, and copy and

              distribute such modifications or work under the terms of Section 1

              above, provided that you also meet all of these conditions:

                   a) You must cause the modified files to carry prominent notices

                   stating that you changed the files and the date of any change.

                   b) You must cause any work that you distribute or publish, that in

                   whole or in part contains or is derived from the Program or any

                   part thereof, to be licensed as a whole at no charge to all third

                   parties under the terms of this License.

                   c) If the modified program normally reads commands interactively

                   when run, you must cause it, when started running for such

                   interactive use in the most ordinary way, to print or display an

                   announcement including an appropriate copyright notice and a

                   notice that there is no warranty (or else, saying that you provide

                   a warranty) and that users may redistribute the program under

                   these conditions, and telling the user how to view a copy of this

                   License. (Exception: if the Program itself is interactive but

                   does not normally print such an announcement, your work based on

                   the Program is not required to print an announcement.)

              These requirements apply to the modified work as a whole. If

              identifiable sections of that work are not derived from the Program,

              and can be reasonably considered independent and separate works in

              themselves, then this License, and its terms, do not apply to those

              sections when you distribute them as separate works. But when you

              distribute the same sections as part of a whole which is a work based

              on the Program, the distribution of the whole must be on the terms of

              this License, whose permissions for other licensees extend to the

              entire whole, and thus to each and every part regardless of who wrote it.

              Thus, it is not the intent of this section to claim rights or contest

              your rights to work written entirely by you; rather, the intent is to

              exercise the right to control the distribution of derivative or

              collective works based on the Program.

              In addition, mere aggregation of another work not based on the Program

              with the Program (or with a work based on the Program) on a volume of

              a storage or distribution medium does not bring the other work under

              the scope of this License.

                 3. You may copy and distribute the Program (or a work based on it,

              under Section 2) in object code or executable form under the terms of

              Sections 1 and 2 above provided that you also do one of the following:

                   a) Accompany it with the complete corresponding machine-readable

                   source code, which must be distributed under the terms of Sections

                   1 and 2 above on a medium customarily used for software interchange;

                or,

                   b) Accompany it with a written offer, valid for at least three

                   years, to give any third party, for a charge no more than your

                   cost of physically performing source distribution, a complete

                   machine-readable copy of the corresponding source code, to be

                   distributed under the terms of Sections 1 and 2 above on a medium

                   customarily used for software interchange; or,

                   c) Accompany it with the information you received as to the offer

                   to distribute corresponding source code. (This alternative is

                   allowed only for noncommercial distribution and only if you

                   received the program in object code or executable form with such

                   an offer, in accord with Subsection b above.)

              The source code for a work means the preferred form of the work for

              making modifications to it. For an executable work, complete source

              code means all the source code for all modules it contains, plus any

              associated interface definition files, plus the scripts used to

              control compilation and installation of the executable. However, as a

              special exception, the source code distributed need not include

              anything that is normally distributed (in either source or binary

              form) with the major components (compiler, kernel, and so on) of the

              operating system on which the executable runs, unless that component

              itself accompanies the executable.

              If distribution of executable or object code is made by offering

              access to copy from a designated place, then offering equivalent

              access to copy the source code from the same place counts as

              distribution of the source code, even though third parties are not

              compelled to copy the source along with the object code.

                 4. You may not copy, modify, sublicense, or distribute the Program

              except as expressly provided under this License. Any attempt

              otherwise to copy, modify, sublicense or distribute the Program is

              void, and will automatically terminate your rights under this License.

              However, parties who have received copies, or rights, from you under

              this License will not have their licenses terminated so long as such

              parties remain in full compliance.

                 5. You are not required to accept this License, since you have not

              signed it. However, nothing else grants you permission to modify or

              distribute the Program or its derivative works. These actions are

              prohibited by law if you do not accept this License. Therefore, by

              modifying or distributing the Program (or any work based on the

              Program), you indicate your acceptance of this License to do so, and

              all its terms and conditions for copying, distributing or modifying

              the Program or works based on it.

                 6. Each time you redistribute the Program (or any work based on the

              Program), the recipient automatically receives a license from the

              original licensor to copy, distribute or modify the Program subject to

              these terms and conditions. You may not impose any further

              restrictions on the recipients' exercise of the rights granted herein.

              You are not responsible for enforcing compliance by third parties to

              this License.

                 7. If, as a consequence of a court judgment or allegation of patent

              infringement or for any other reason (not limited to patent issues),

              conditions are imposed on you (whether by court order, agreement or

              otherwise) that contradict the conditions of this License, they do not

              excuse you from the conditions of this License. If you cannot

              distribute so as to satisfy simultaneously your obligations under this

              License and any other pertinent obligations, then as a consequence you

              may not distribute the Program at all. For example, if a patent

              license would not permit royalty-free redistribution of the Program by

              all those who receive copies directly or indirectly through you, then

              the only way you could satisfy both it and this License would be to

              refrain entirely from distribution of the Program.

              If any portion of this section is held invalid or unenforceable under

              any particular circumstance, the balance of the section is intended to

              apply and the section as a whole is intended to apply in other

              circumstances.

              It is not the purpose of this section to induce you to infringe any

              patents or other property right claims or to contest validity of any

              such claims; this section has the sole purpose of protecting the

              integrity of the free software distribution system, which is

              implemented by public license practices. Many people have made

              generous contributions to the wide range of software distributed

              through that system in reliance on consistent application of that

              system; it is up to the author/donor to decide if he or she is willing

              to distribute software through any other system and a licensee cannot

              impose that choice.

              This section is intended to make thoroughly clear what is believed to

              be a consequence of the rest of this License.

                 8. If the distribution and/or use of the Program is restricted in

              certain countries either by patents or by copyrighted interfaces, the

              original copyright holder who places the Program under this License

              may add an explicit geographical distribution limitation excluding

              those countries, so that distribution is permitted only in or among

              countries not thus excluded. In such case, this License incorporates

              the limitation as if written in the body of this License.

                 9. The Free Software Foundation may publish revised and/or new versions

              of the General Public License from time to time. Such new versions will

              be similar in spirit to the present version, but may differ in detail to

              address new problems or concerns.

              Each version is given a distinguishing version number. If the Program

              specifies a version number of this License which applies to it and "any

              later version", you have the option of following the terms and conditions

              either of that version or of any later version published by the Free

              Software Foundation. If the Program does not specify a version number of

              this License, you may choose any version ever published by the Free

              Software Foundation.

                 10. If you wish to incorporate parts of the Program into other free

              programs whose distribution conditions are different, write to the author

              to ask for permission. For software which is copyrighted by the Free

              Software Foundation, write to the Free Software Foundation; we sometimes

              make exceptions for this. Our decision will be guided by the two goals

              of preserving the free status of all derivatives of our free software and

              of promoting the sharing and reuse of software generally.

    NO WARRANTY

                 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

              FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

              OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

              PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

              OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

              MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

              TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

              PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

              REPAIR OR CORRECTION.

                 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

              WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/

              OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR

              DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL

              DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING

              BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR

              LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO

              OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY

              HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

                         How to Apply These Terms to Your New Programs

                 If you develop a new program, and you want it to be of the greatest

              possible use to the public, the best way to achieve this is to make it

              free software which everyone can redistribute and change under these

                terms.

                 To do so, attach the following notices to the program. It is safest

              to attach them to the start of each source file to most effectively

              convey the exclusion of warranty; and each file should have at least

              the "copyright" line and a pointer to where the full notice is found.

                   

              it does.>

                   Copyright (C) 19yy

                   This program is free software; you can redistribute it and/or modify

                   it under the terms of the GNU General Public License as published by

                   the Free Software Foundation; either version 2 of the License, or

                   (at your option) any later version.

                   This program is distributed in the hope that it will be useful,

                   but WITHOUT ANY WARRANTY; without even the implied warranty of

                   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

                   GNU General Public License for more details.

                   You should have received a copy of the GNU General Public License

                   along with this program; if not, write to the Free Software

                   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307

              USA

              Also add information on how to contact you by electronic and paper mail.

              If the program is interactive, make it output a short notice like this

              when it starts in an interactive mode:

                   Gnomovision version 69, Copyright (C) 19yy name of author

                   Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type

              `show w'.

                   This is free software, and you are welcome to redistribute it

                   under certain conditions; type `show c' for details.

              The hypothetical commands `show w' and `show c' should show the

              appropriate
              parts of the General Public License. Of course, the commands you use may

              be called something other than `show w' and `show c'; they could even be

              mouse-clicks or menu items-whatever suits your program.

              You should also get your employer (if you work as a programmer) or your

              school, if any, to sign a "copyright disclaimer" for the program, if

              necessary. Here is a sample; alter the names:

                 Yoyodyne, Inc., hereby disclaims all copyright interest in the program

                 `Gnomovision' (which makes passes at compilers) written by James Hacker.

                  , 1 April 1989

                 Ty Coon, President of Vice

              This General Public License does not permit incorporating your program

              into proprietary programs. If your program is a subroutine library, you

              may consider it more useful to permit linking proprietary applications

              with the library. If this is what you want to do, use the GNU Library

              General Public License instead of this License.

    Index

       $ (dollar sign)
                    regular expression
                         Regular Expressions
       () (parentheses)
                    regular expression
                         Regular Expressions
       (caret)
                    regular expression
                         Regular Expressions
       * (regular expression)
              Regular Expressions
       * (wildcard)
              Filename Expansion
       . (regular expression)
              Regular Expressions
       / (slash)
                    root directory
                         Files and Directories | Files and Directories
       /bin directory
              Files Present and Their
       /etc (directory)
                    system-wide configuration
                         System-Wide Versus User-Specific Configuration |
                         System-Wide Versus User-Specific Configuration
       /etc directory
              Files Present and Their | Files Present and Their | Files Present
              and Their
       /etc/X11/Xsession
                    modifying
                         Customizing Your X Startup
       /root directory
              Files Present and Their
       /sbin directory
              Files Present and Their
       /user directory
              Files Present and Their
       /var directory
              Files Present and Their
       /tmp directory
              Files Present and Their
       ? wildcard
              Filename Expansion
       [] (brackets)
                    regular expression
                         Regular Expressions
         (tilde)
              Using Files: A Tutorial
       absolute filenames
              Files and Directories | Using Files: A Tutorial
       abstractions
              Introduction to X
       Access screen
                    dselect
                         Access
       accessing
                    files
                         Mode
                    filesystems
                         Mounting a Filesystem
                    Help file (installation)
                         Select
       accounts
                    ordinary user
                         Create an Ordinary User | Create an Ordinary User
                    permissions
                         Permissions | Permissions
                         example sessions
                         Permissions in Practice | Permissions in
                         Practice | Permissions in Practice
                         file mode
                         Mode | Mode | Mode
                         file ownership
                         File Ownership | File Ownership
                    root user
                         Working as Root | Working as Root
                    superuser
                         Set the Root Password
                    user
                         logging in
                         First Steps | First Steps
                         plans
                         Managing Your Identity | Managing Your
                         Identity
       Acknowledgments
              no title
       activating
                    swap partition
                         Initialize and Activate a | Initialize and Activate a
       ae
              no title
       ae (text editor)
              Text Editors | Using ae
       alias
              Aliases
       aliases
              Aliases
       Alt key
              Conventions | Conventions
       APM
              Shutting Down
       APM (Advanced Power Management)
              Shutting Down
       application software
              What Is Debian?
       applications
                    cfdisk
                         Partition a Hard Disk | Partition a Hard Disk
                    configuration files
                         Configuration Files
                    dbootstrap
                         Step-by-Step Installation
                         network configuration
                         Configure the Network
                    dselect
                         Select and Install Profiles | Introduction |
                         Introduction
                         Access screen
                         Access
                         multi-CD installation
                         Access
                         multi-NFS, multi-mount installation
                         Access
                         package states
                         Select | Select
                         Update screen
                         Update | Select | Select | Select |
                         Select
                    exiting
                         How to Read This
                    file managers
                         Introduction to X
                    GNU documentation viewer
                         Using info | Using info
                    gzip
                         File Compression with gzip | File Compression with
                         gzip
                    multitasking
                         A Multiuser, Multitasking Operating
                    system binaries
                         Files Present and Their
                    tasks
                         Select and Install Profiles | Select and Install
                         Profiles
                    text editores
                         Text Editors | Text Editors
                    text editors
                         ae
                         Using ae
       archiving utilities
              Backup Tools
       arguments
              The Command Line and
       arranging
                    hard drive
                         Partitioning Your Hard Drive | Background |
                         Background
       asking technical questions
              Personal Help | Tips for asking questions
       assigning
                    job numbers to command lines
                         Managing Processes with bash
       authentication
                    shadow passwords
                         Shadow Password Support
       automatic filesystem mounting
              /etc/fstab: Automating the Mount | /etc/fstab: Automating the
              Mount
       backing up
                    disks
                         Last Chance to Back
       backups
                    performing
                         Before You Start
                    utilities
                         Backup Tools
                         GNU tar
                         tar
       base system
              no title | no title
                    configuring
                         Debian Installation Steps | Choosing Your
                         Installation Media
                    installation
                         Install the Base System | Configure the Base System
       bash
              Managing Processes with bash | Managing Processes with bash
                    commands
                         aliases
                         Aliases
                    environment variables
                         setting
                         Environment Variables | Environment
                         Variables
                    Info help system
                         displaying
                         Managing Processes with bash
       binary executables
                    comparing to source code
                         Viewing Text Files
       binary files
              Working with Text Files
                    viewing
                         Viewing Text Files
       BIOS (Basic Input/Output System)
              Booting the System
       black-and-white display
                    selecting
                         Select Color or Monochrome
       block devices
              Device Files | /dev/null
       blocks
              Device Files
       bold face
                    typographical conventions
                         Conventions
       boot floppies
                    creating
                         Make a Boot Floppy
       boot loaders
              Before You Start
                    LILO
                         Make Linux Bootable Directly
       boot partition
              PC Disk Limitations
       boot process
                    LILO (Linux Loader)
                         Booting the System
                    query process
                         Booting the System
                    troubleshooting
                         Troubleshooting the Boot Process
       booting
                    Debian
                         Booting Debian
                    from CD-ROM
                         Choosing Your Installation Media
                    from floppies
                         Booting from Floppies
                    operating systems
                         multiple
                         Make Linux Bootable Directly
                    smoke test
                         The Moment of Truth
       Bourne shell
              The Shell
       bug reports
                    submitting
                         Troubleshooting the Boot Process
       built-in dependencies
                    packages
                         Select | Select
       built-in programs
              Where Commands Reside: The
       buttons
                    mouse operation
                         The Mouse
       C shell
              The Shell
       canceling
                    selections (dselect)
                         Select
       cd
              Using Files: A Tutorial
       cd command
              Using Files: A Tutorial | Using Files: A Tutorial
       CD-ROM
                    booting from
                         Choosing Your Installation Media
       CD-ROMs
                    mounting
                         Example: Mounting a CD-ROM | Example: Mounting a
                         CD-ROM
                    unmounting
                         Example: Mounting a CD-ROM
       CDs
                    multi-CD installation
                         Access | Access
                    multi-NFS, multi-mount installation
                         Access
       cfdisk
              Partition a Hard Disk | Partition a Hard Disk | Partition a Hard
              Disk
       Change Directory
              see cd
       character devices
              Device Files | /dev/null
       characters
                    metacharacters
                         Regular Expressions
       clients
                    X clients
                         Introduction to X
                         network transparency
                         Introduction to X
                    X windows system
                         X Clients | X Clients
                         selecting
                         Customizing Your X Startup | Customizing
                         Your X Startup
       closing
                    programs
                         How to Read This
       color display
                    selecting
                         Select Color or Monochrome
       Comand Line
                    History
                         no title
       command history
              Command History and Editing
       command line
              Command History and Editing | Command History and Editing | no
              title | Describing the Command Line | Describing the Command Line
                    structure
                         The Command Line and
       command lines
                    job numbers
                         assigning
                         Managing Processes with bash
       command-line shell
              The Shell | The Shell
       commands
                    aliases
                         Aliases
                    arguments
                         The Command Line and
                    Bash
                         wildcards
                         Tab Completion
                    cd
                         Using Files: A Tutorial | Using Files: A Tutorial
                    documentation
                         Kinds of Documentation | Kinds of Documentation
                         info
                         Using info | Using info
                    egrep
                         Regular Expressions
                    ls
                         Using Files: A Tutorial | Using Files: A Tutorial |
                         Dot Files and ls -a
                    man less
                         Environment Variables
                    mkdir
                         Using Files: A Tutorial
                    more
                         Using Files: A Tutorial
                    parameters
                         The Command Line and
                    shell commands
                         typing
                         First Steps
                    su
                         Working as Root
                    whoami
                         Working as Root
       commercial software
                    comparing to proprietary
                         What Is Free Software?
       comparing
                    binary and text files
                         Viewing Text Files
                    crackers and hackers
                         What Is Free Software?
                    hard links and symlinks
                         Symbolic Links
                    programs and processes
                         Processes
                    software
                         commercial and proprietary
                         What Is Free Software?
                    system-wide and user-specific configuration
                         System-Wide Versus User-Specific Configuration |
                         System-Wide Versus User-Specific Configuration
       compiling
                    packages
                         Compiling Software
       compressing
                    files
                         File Compression with gzip | File Compression with
                         gzip
       Configuration
                    Base system
                         no title
                    comparing system-wide and user-specific
                         System-Wide Versus User-Specific Configuration |
                         System-Wide Versus User-Specific Configuration
                    Device drivers
                         no title
                    Modules
                         no title
                    networking
                         Ethernet
                         Ethernet
                         PPP
                         The Easy Way: wvdial | The Easy Way:
                         wvdial
                    PCMCIA
                         no title | Configure PCMCIA Support
                    system-wide
                         /etc directory
                         Files Present and Their
                         automatic filesystem mounting
                         /etc/fstab: Automating the Mount |
                         /etc/fstab: Automating the Mount
                         networking
                         Networking | PPP | Preparation
                    user-specific
                         dotfiles
                         System-Wide Versus User-Specific
                         Configuration
       configuring
                    base system
                         Debian Installation Steps | Choosing Your
                         Installation Media
                    device drivers
                         Configure Device Driver Modules
                    keyboard
                         Configure the Keyboard
                    network
                         Configure the Network
                    packages
                         Configure
       connections
                    networking
                         Ethernet
                         Ethernet
                         PPP
                         PPP | Preparation | The Easy Way: wvdial
                         | The Easy Way: wvdial
       consoles
              A Multiuser, Multitasking Operating
                    virtual consoles
                         Virtual Consoles | Virtual Consoles
       controllers
                    SCSI
                         partitions, naming
                         Device Names in Linux
       controlling
                    processes
                         The Shell | The Shell
       conventions
                    typographical
                         Conventions | Conventions
                         spaces
                         Conventions
       copy-and-paste
                    mouse operation (X)
                         The Mouse
       copying
                    large-scale
                         Large-Scale Copying | Large-Scale Copying
       crackers
                    comparing to hackers
                         What Is Free Software?
       creating
                    accounts
                         ordinary user
                         Create an Ordinary User | Create an
                         Ordinary User
                         superuser
                         Set the Root Password
                    directories
                         Using Files: A Tutorial
                    disk images
                         Creating Floppies from Disk | Creating Floppies from
                         Disk
                    plans
                         Managing Your Identity | Managing Your Identity
       csh (C shell)
              The Shell
       current working directories
              Using Files: A Tutorial
       Current Working Directory
              Using Files: A Tutorial
       customizing
                    X windows system
                         Customizing Your X Startup
       cylinder translation
              PC Disk Limitations
       daemon
              Processes
       dbootstrap
              Step-by-Step Installation
                    network configuration
                         Configure the Network
       Debian
                    booting
                         Booting Debian
                         from CD-ROM
                         Choosing Your Installation Media
                    Web site
                         What Is Free Software?
       Debian base system
              Debian Installation Steps | Choosing Your Installation Media
       Debian mailing list
              Personal Help | Personal Help
       deleting
                    directories
                         Using Files: A Tutorial
                    files
                         Using Files: A Tutorial
                    hard links
                         The Real Nature of
                    named pipes
                         Named Pipes (FIFOs)
                    symlinks
                         Symbolic Links | Symbolic Links
       Deleting Files
              see rm
       dependencies
                    packages
                         Select | Select
       deselect
                    package maintenance
                         dselect
       Devel_comp (profile)
              Planning Use of the
       developing
                    Free Software
                         Social Contract
                         What Is Free Software?
                    software
                         free software
                         What Is Free Software? | What Is Free
                         Software?
       development
              Who Creates Debian?
       device drivers
                    configuring
                         Configure Device Driver Modules
       device files
              Device Files | /dev/null
       Device Names
              no title
       devices
              Device Names in Linux | Device Names in Linux
                    abstractions
                         Introduction to X
                    base system
                         installing
                         Install the Base System | Configure the
                         Base System
                    block devices
                         Device Files | /dev/null
                    character devices
                         Device Files | /dev/null
                    daemons
                         Processes
                    files
                         symlinks
                         Symbolic Links
                    filesystems
                         Concepts
                         automatic mounting
                         /etc/fstab: Automating the Mount |
                         /etc/fstab: Automating the Mount
                         hard links
                         The Real Nature of | The Real Nature of
                         mount points
                         Mounting a Filesystem
                         mounting
                         Mounting a Filesystem | Mounting a
                         Filesystem | Example: Mounting a CD-ROM
                         | Example: Mounting a CD-ROM | Removable
                         Disks (Floppies, Zip
                         proc
                         The proc Filesystem
                         symlinks
                         Symbolic Links | Symbolic Links |
                         Symbolic Links
                    naming
                         Device Names in Linux
                    output
                         redirecting
                         stdin, stdout, Pipelines, and | stdin,
                         stdout, Pipelines, and
                    PCMCIA
                         configuring
                         Configure PCMCIA Support
                    printers
                         troubleshooting
                         Printing
                    SCSI drives
                         partitions
                         Device Names in Linux
                    swap partitions
                         Recommended Partitioning Scheme | Recommended
                         Partitioning Scheme
       Dialup profile
              Planning Use of the
       Directories
              no title | Files and Directories | Files and Directories | Files
              and Directories | Files Present and Their
                    /etc
                         Files Present and Their | Files Present and Their |
                         Files Present and Their
                         system-wide configuration
                         System-Wide Versus User-Specific
                         Configuration | System-Wide Versus
                         User-Specific Configuration
                    /root
                         Files Present and Their
                    /tmp
                         Files Present and Their
                    /user
                         Files Present and Their
                    /var
                         Files Present and Their
                    contents, displaying
                         Files Present and Their | Files Present and Their
                    copying
                         Large-Scale Copying | Large-Scale Copying
                    creating
                         Using Files: A Tutorial
                    current working directory
                         Using Files: A Tutorial
                    file systems
                         mount points
                         Mounting a Filesystem
                    filename expansion patterns
                         Filename Expansion | Filename Expansion
                    files
                         hard links
                         The Real Nature of | The Real Nature of
                         inodes
                         The Real Nature of | The Real Nature of
                         locating
                         Finding Files | Finding Files
                         symlinks
                         Symbolic Links
                    filesystems
                         Concepts
                         mounting
                         Mounting a Filesystem | Mounting a
                         Filesystem | Example: Mounting a CD-ROM
                         | Example: Mounting a CD-ROM | Removable
                         Disks (Floppies, Zip
                    hard links
                         removing
                         The Real Nature of
                    home directory
                         Files Present and Their
                    modes
                         Mode
                    parent directories
                         Using Files: A Tutorial
                    paths
                         Files and Directories
                    permissions
                         example session
                         Permissions in Practice | Permissions in
                         Practice | Permissions in Practice
                    removing
                         Using Files: A Tutorial
                    search path (shell)
                         Where Commands Reside: The | Where Commands Reside:
                         The
                    shortcut directories
                         Using Files: A Tutorial
                    symlinks
                         Symbolic Links
                    system-wide
                         files, modifying
                         Files Present and Their
       disk blocks
                    scanning
                         Initialize and Activate a
       disk cache
              Shutting Down
       disk space
                    installation requirements
                         Memory and Disk Space
       disks
                    backing up
                         Last Chance to Back
                    boot disks
                         LILO
                         Booting the System
                    boot floppies
                         creating
                         Make a Boot Floppy
                    filesystems
                         mount points
                         Mounting a Filesystem
                         mounting
                         Mounting a Filesystem | Mounting a
                         Filesystem | Example: Mounting a CD-ROM
                         | Example: Mounting a CD-ROM | Removable
                         Disks (Floppies, Zip
                    floppies
                         booting from
                         Booting from Floppies
                    images
                         writing to floppies
                         Creating Floppies from Disk | Creating
                         Floppies from Disk
                    removable
                         mounting filesystem
                         Removable Disks (Floppies, Zip
       displaying
                    directory contents
                         Files Present and Their | Files Present and Their
                    file contents
                         Determining a File's Contents
                    files
                         filename expansion pattern
                         Filename Expansion
                    Info help system
                         Managing Processes with bash
                    mounted filesystems
                         Example: Mounting a CD-ROM
                    text files
                         Viewing Text Files
       displays
                    ae (text editor)
                         Using ae
                    dselect
                         Access screen
                         Access
                    X windows system
                         windows manager
                         Introduction to X
       dividing
                    partitions
                         Lossless Repartitioning
       documentation
              Kinds of Documentation | Kinds of Documentation
                    GNU General Public License
                         The GNU General Public | The GNU General Public | The
                         GNU General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public
                    HOWTOs
                         HOWTOs
                    info
                         Using info | Using info
       DOS (Disk Operating System)
                    partitioning
                         Partitioning from DOS or | Lossless Repartitioning |
                         Debian Installation Steps
       Dotfiles
              no title | Dot Files and ls -a | System-Wide Versus User-Specific
              Configuration
       dpkg
              no title
                    package maintenance
                         dpkg
       dselect
              Select and Install Profiles | no title | Introduction |
              Introduction | Access | no title
                    Access menu
                         no title
                    Access screen
                         Access
                    multi-CD installation
                         Access
                    package states
                         Select | Select
                    packages
                         configuring
                         Configure
                         installing
                         Install | Install
                    Select
                         no title
                    Select screen
                         Select | Select | Select | Select | Select
                         exiting
                         Select
                    Update
                         no title
                    Update screen
                         Update
       dump
              Backup Tools
       dump (backup utility
              Backup Tools
       editing
                    text
                         Text Editors | Text Editors
       Editors
              no title
       egrep command
              Regular Expressions
       Emacs (text editor)
              Text Editors | Text Editors
       email
                    bug reports
                         troubleshooting
                         Troubleshooting the Boot Process
                    Debian mailing list
                         Personal Help | Personal Help
       environment
                    variables
                         importing
                         Environment Variables
       environment variables
              no title | Environment Variables
                    bash
                         setting
                         Environment Variables | Environment
                         Variables
                    PATH
                         Where Commands Reside: The | Where Commands Reside:
                         The
                    proxy servers
                         setting
                         Access
       environments
              Environment Variables
       error messages
                    standard error
                         stdin, stdout, Pipelines, and
                    X windows system
                         troubleshooting
                         Troubleshooting
       Ethernet
                    configuration
                         Ethernet
       example session
                    permissions
                         Permissions in Practice | Permissions in Practice |
                         Permissions in Practice
       execute permission
              Mode
       executing
                    programs
                         search path
                         Where Commands Reside: The | Where
                         Commands Reside: The
       exiting
                    ae (text editor)
                         Using ae
                    programs
                         How to Read This
                    Select screen (dselect)
                         Select
                    X windows system
                         Leaving the X Environment | Customizing Your X
                         Startup | Customizing Your X Startup
       expansion patterns
              Filename Expansion | Filename Expansion
                    see also wildcards
                         Filename Expansion
       exporting
                    shell variables
                         Environment Variables
                    variables to environment
                         Environment Variables
       ext2 filesystem
              Concepts
       extended partitions
              PC Disk Limitations | Device Names in Linux
       FIFO (first-in-first-out)
              Named Pipes (FIFOs)
       file manager
              Using a File Manager
       file managers
                    icon-based
                         Introduction to X
       file pagers
                    text files
                         viewing
                         Viewing Text Files
       file systems
              Partitioning Your Hard Drive | Background | Background
       filename expansion pattern
              Filename Expansion
       filename expansion patterns
              Filename Expansion
       files
              no title | Files and Directories | Files and Directories | Files
              and Directories
                    /etc/X11/Xsession
                         modifying
                         Customizing Your X Startup
                    access
                         Mode
                    binary
                         Working with Text Files
                         viewing
                         Viewing Text Files
                    compressing
                         File Compression with gzip | File Compression with
                         gzip
                    configuration files
                         Configuration Files
                    contents
                         displaying
                         Determining a File's Contents
                    current working directory
                         Using Files: A Tutorial
                    deleting
                         Using Files: A Tutorial
                    device files
                         Device Files | /dev/null
                    disk images
                         Creating Floppies from Disk | Creating Floppies from
                         Disk
                    dotfiles
                         Dot Files and ls -a | System-Wide Versus
                         User-Specific Configuration
                    Editors
                         no title
                    hard links
                         The Real Nature of | The Real Nature of
                    inodes
                         The Real Nature of
                    large-scale copying
                         Large-Scale Copying | Large-Scale Copying
                    locating
                         Finding Files | Finding Files
                    moving
                         Using Files: A Tutorial
                    named pipes
                         Named Pipes (FIFOs)
                    naming conventions
                         troubleshooting
                         Working with Strangely-Named Files
                    permissions
                         Permissions | Permissions | Security
                         example sessions
                         Permissions in Practice | Permissions in
                         Practice | Permissions in Practice
                         mode
                         Mode | Mode | Mode
                         ownership
                         File Ownership | File Ownership
                    plans
                         creating
                         Managing Your Identity | Managing Your
                         Identity
                    regular expressions
                         Regular Expressions | Regular Expressions | Regular
                         Expressions
                    sockets
                         Sockets
                    symlinks
                         Symbolic Links
                         removing
                         Symbolic Links | Symbolic Links
                    temporary
                         Files Present and Their
                    Text
                         no title
                         editing
                         Text Editors | Text Editors | Using ae
                         viewing
                         Viewing Text Files
                    text files
                         Working with Text Files
                    uncompressing
                         File Compression with gzip
       filesystems
              Filesystems
                    automatic mounting
                         /etc/fstab: Automating the Mount | /etc/fstab:
                         Automating the Mount
                    backing up
                         Backup Tools
                         GNU tar
                         tar
                    ext2
                         Concepts
                    hard links
                         The Real Nature of | The Real Nature of
                         deleting
                         The Real Nature of
                    listing
                         Example: Mounting a CD-ROM
                    mount points
                         Mounting a Filesystem
                    mounting
                         Mounting a Filesystem | Mounting a Filesystem |
                         Example: Mounting a CD-ROM | Example: Mounting a
                         CD-ROM | Removable Disks (Floppies, Zip
                    proc
                         The proc Filesystem
                    symlinks
                         Symbolic Links
       finding
                    documentation
                         Kinds of Documentation | Kinds of Documentation
                    files
                         Finding Files | Finding Files
                    system information
                         Getting Information from the
       finger information
                    plans
                         creating
                         Managing Your Identity
       FIPS
              Lossless Repartitioning | Lossless Repartitioning
       floppies
                    boot floppies
                         creating
                         Make a Boot Floppy
                    booting from
                         Booting from Floppies
                    disk images
                         writing
                         Creating Floppies from Disk | Creating
                         Floppies from Disk
                    filesystem
                         mounting
                         Removable Disks (Floppies, Zip
                    filesystems
                         Mounting a Filesystem
       Floppy Disks
              no title
       fonts
                    selecting
                         Starting the X Environment
                    xterm
                         increasing size
                         Starting the X Environment
       Free Software
              What Is Free Software?
                    developing
                         What Is Free Software?
                    Social Contract
                         What Is Free Software?
       Free Software Foundation
              What Is Free Software?
       fully-qualified filenames
              Files and Directories
       functionality
              What Is Debian?
       General Public License
              The GNU General Public | The GNU General Public | The GNU General
              Public | The GNU General Public | The GNU General Public | The GNU
              General Public | The GNU General Public | The GNU General Public |
              The GNU General Public | The GNU General Public | The GNU General
              Public | The GNU General Public | The GNU General Public | The GNU
              General Public | The GNU General Public | The GNU General Public |
              The GNU General Public | The GNU General Public | The GNU General
              Public | The GNU General Public | The GNU General Public | The GNU
              General Public | The GNU General Public
       glossary
              Glossary
       GNOME desktop project
              Introduction to X
       GNU documentation viewer
              Using info | Using info
       GNU General Public License
              The GNU General Public | The GNU General Public | The GNU General
              Public | The GNU General Public | The GNU General Public | The GNU
              General Public | The GNU General Public | The GNU General Public |
              The GNU General Public | The GNU General Public | The GNU General
              Public | The GNU General Public | The GNU General Public | The GNU
              General Public | The GNU General Public | The GNU General Public |
              The GNU General Public | The GNU General Public | The GNU General
              Public | The GNU General Public | The GNU General Public | The GNU
              General Public | The GNU General Public
       GNU Midnight Commander
              Using a File Manager
       GNU Project
              What Is Debian?
       GNU tar
              tar
       GNU tar (backup utility
              Backup Tools
       GNU/Linux
                    multiuser environment
                         A Multiuser, Multitasking Operating
       graphical user interfaces
                    see GUIs
                         The X Window System | Introduction to X
       GUIs
                    abstractions
                         Introduction to X
                    icon-based file managers
                         Introduction to X
                    X Window
                         The X Window System | Introduction to X
                    X windows system
                         clients
                         X Clients | X Clients
                         clients, selecting
                         Customizing Your X Startup | Customizing
                         Your X Startup
                         customizing
                         Customizing Your X Startup
                         exiting
                         Leaving the X Environment | Customizing
                         Your X Startup | Customizing Your X
                         Startup
                         mouse operation
                         The Mouse
                         starting
                         Starting the X Environment
                         troubleshooting
                         Troubleshooting | X Problems
                         xdm
                         Starting the X Environment
       gzip
              File Compression with gzip | File Compression with gzip
       Hacker Ethic
              What Is Free Software?
       hackers
              What Is Free Software?
       hard disk
                    Linux partition
                         initializing
                         Initialize a Linux Partition |
                         Initialize a Linux Partition
                    partitioning
                         PC BIOS
                         PC Disk Limitations
                    swap partition
                         initializing
                         Initialize and Activate a | Initialize
                         and Activate a
       hard disks
                    partitioning
                         Lossless Repartitioning | Debian Installation Steps |
                         Partition a Hard Disk | Partition a Hard Disk
                    partitions
                         mounting
                         Initialize a Linux Partition
                    scanning
                         Initialize and Activate a
       hard drive
                    organizing
                         Partitioning Your Hard Drive | Background |
                         Background
                    partition
                         boot partition
                         PC Disk Limitations
                    partitioning
                         Partitioning Your Hard Drive | Background |
                         Background
                         cylinder translation
                         PC Disk Limitations
                         root partition
                         Background
                         swap partition
                         Background
       hard drives
                    filesystems
                         Mounting a Filesystem
                    LILO
                         operating system, booting
                         Booting the System
                    partitioning
                         swap partitions
                         Recommended Partitioning Scheme |
                         Recommended Partitioning Scheme
                    partitions
                         mounting
                         Mount a Previously-Initialized Partition
       hard links
              The Real Nature of | The Real Nature of
                    comparing to symlinks
                         Symbolic Links | Symbolic Links
                    deleting
                         The Real Nature of
                    symlinks
                         Symbolic Links
       hardware
                    abstractions
                         Introduction to X
                    device files
                         Device Files | /dev/null
                    video cards
                         support for
                         Supported Hardware
       Hardware, supported
              no title
       Help file (installation)
                    accessing
                         Select
       help system
                    HOWTOs
                         HOWTOs
       hierarchies
              Concepts
                    filesystems
                         Concepts
                         mount points
                         Mounting a Filesystem
                         mounting
                         Mounting a Filesystem | Mounting a
                         Filesystem | Example: Mounting a CD-ROM
                         | Example: Mounting a CD-ROM | Removable
                         Disks (Floppies, Zip
       History
              see Command Line History
       home directories
              Files Present and Their
       home directory
              Using Files: A Tutorial
       HOWTOs
              HOWTOs
       icon-based file managers
              Introduction to X
       images (disk)
                    writing to floppies
                         Creating Floppies from Disk | Creating Floppies from
                         Disk
       importing
                    variables to environment
                         Environment Variables
       info
              no title | Using info | Using info
       Info help system
              Managing Processes with bash
       initializing
                    Linux partition
                         Initialize a Linux Partition | Initialize a Linux
                         Partition
                    swap partition
                         Initialize and Activate a | Initialize and Activate a
       inodes
              The Real Nature of | The Real Nature of
                    hard links
                         removing
                         The Real Nature of
       Installation
                    backups, performing
                         Before You Start
                    base system
                         Install the Base System | Configure the Base System
                    base system, configuring
                         Debian Installation Steps | Choosing Your
                         Installation Media
                    boot floppies
                         creating
                         Make a Boot Floppy
                    CD-ROM
                         no title
                    device drivers
                         configuring
                         Configure Device Driver Modules
                    disks
                         backing up
                         Last Chance to Back
                    dselect
                         Introduction
                         Access screen
                         Access
                    Floppies
                         no title
                    hard disks
                         partitioning
                         Partition a Hard Disk | Partition a Hard
                         Disk
                    hard drive
                         partitioning
                         Background | Background
                         partitioning
                         Partitioning Your Hard Drive
                    Help file
                         accessing
                         Select
                    kernel
                         Install Operating System Kernel
                    keyboard configuration
                         Configure the Keyboard
                    Linux partition
                         initialization
                         Initialize a Linux Partition |
                         Initialize a Linux Partition
                    main menu
                         Debian GNU/Linux Installation Main
                    master boot record
                         Make Linux Bootable Directly
                    Media
                         no title
                    memory requirements
                         Memory and Disk Space
                    Menu
                         no title
                    monitor display
                         color, selecting
                         Select Color or Monochrome
                    multi-NFS, multi-mount
                         Access
                    multi_cd
                         Access | Access
                    network
                         configuring
                         Configure the Network
                    packages
                         Package Installation with dselect
                    partitioning
                         Partitioning Prior to Installation | Partitioning
                         from DOS or | Lossless Repartitioning | Debian
                         Installation Steps
                    PCMCIA support
                         configuring
                         Configure PCMCIA Support
                    Prerequisites
                         no title
                    profiles
                         Planning Use of the
                         selecting
                         Select and Install Profiles
                    root password
                         setting
                         Set the Root Password
                    smoke test
                         The Moment of Truth
                    swap partition
                         initialization
                         Initialize and Activate a | Initialize
                         and Activate a
                    tasks
                         selecting
                         Select and Install Profiles
                    time zone
                         specifying
                         Configure the Base System
       installations
                    network workstations
                         Information You Will Need
                    operating systems, multiple
                         Before You Start
       installing
                    packages
                         Install | Install
       Internet
                    Debian mailing list
                         Personal Help | Personal Help
                    online manual
                         viewing
                         Environment Variables
       IRC (Internet Relay Chat)
                    Debian mailing list
                         Personal Help | Personal Help
       ISPs
                    PPP
                         PPP | Preparation
       italics
                    typographical conventions
                         Conventions
       job
              Managing Processes with bash
       job numbers
                    assigning to command lines
                         Managing Processes with bash
       jobs
              Managing Processes with bash | Managing Processes with bash
                    listing
                         Managing Processes with bash
                    starting
                         Managing Processes with bash
                    status
                         displaying
                         Managing Processes with bash
                    suspending
                         Managing Processes with bash | Managing Processes
                         with bash
                    terminating
                         Managing Processes with bash | Managing Processes
                         with bash
       kernel
                    boot process
                         troubleshooting
                         Troubleshooting the Boot Process
                    installing
                         Install Operating System Kernel
                    PCMCIA
                         removing
                         Remove PCMCIA
                    virtual consoles
                         Virtual Consoles | Virtual Consoles
       kernel:LILO (Linux Loader)
              Booting the System | Booting the System
       key combinations
                    dselect
                         Select
       keyboard
                    configuring
                         Configure the Keyboard
       killing
                    jobs
                         Managing Processes with bash | Managing Processes
                         with bash
                    X server
                         Leaving the X Environment
       Korn shell
              The Shell
       languages
                    programming
                         Software Development with Debian | Software
                         Development with Debian
       LANs
                    Ethernet
                         configuration
                         Ethernet
       large-scale copying
              Large-Scale Copying | Large-Scale Copying
       legal documentation
                    GNU General Public License
                         The GNU General Public | The GNU General Public | The
                         GNU General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public
       licenses
                    GNU General Public License
                         The GNU General Public | The GNU General Public | The
                         GNU General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public
       LILO
              Make Linux Bootable Directly
       LILO (Linux Loader)
              Booting the System | Booting the System
       limitations
                    partitions
                         PC Disk Limitations
       Linux
                    devices
                         Device Names in Linux | Device Names in Linux |
                         Device Names in Linux
                    GNU General Public License
                         The GNU General Public | The GNU General Public | The
                         GNU General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public | The GNU General Public | The GNU
                         General Public
                    kernel
                         command line
                         Describing the Command Line | Describing
                         the Command Line
                         disk cache
                         Shutting Down
                         virtual console
                         Virtual Consoles | Virtual Consoles
       Linux Documentation Project
              Supported Hardware
                    HOWTOs
                         HOWTOs
       Linux native partition
                    creating
                         Partition a Hard Disk | Partition a Hard Disk
       Linux partition
                    initializing
                         Initialize a Linux Partition | Initialize a Linux
                         Partition
       Linux partitions
                    mounting
                         Initialize a Linux Partition | Initialize a Linux
                         Partition
       Linux swap partition
                    creating
                         Partition a Hard Disk | Partition a Hard Disk
       listing
                    aliases
                         Aliases
                    jobs
                         Managing Processes with bash
                    mounted filesystems
                         Example: Mounting a CD-ROM
                    processes
                         Processes
       locating
                    documentation
                         Kinds of Documentation | Kinds of Documentation
                    files
                         Finding Files | Finding Files
                    system information
                         Getting Information from the
       logging in
              First Steps | First Steps
       logical partitions
              PC Disk Limitations | Device Names in Linux
       long form
                    options
                         The Command Line and
       ls
              Using Files: A Tutorial | no title
       ls command
              Using Files: A Tutorial | Using Files: A Tutorial | Dot Files and
              ls -a
       mailing list
                    Debian
                         Personal Help | Personal Help
       main menu
                    installation
                         Debian GNU/Linux Installation Main
       mainenance
                    packages
                         What a Package Maintenance | What a Package
                         Maintenance
                         deselect
                         dselect
                         dpkg
                         dpkg
       man less command
              Environment Variables
       man pages
              The Command Line and
       managing
                    files
                         Using a File Manager
       manual startup
                    X windows system
                         Starting the X Environment
       master boot record
                    installation
                         Make Linux Bootable Directly
       memory
                    disk cache
                         Shutting Down
                    installation requirements
                         Memory and Disk Space
                    swap partitions
                         Recommended Partitioning Scheme | Recommended
                         Partitioning Scheme
       menus
                    installation
                         Debian GNU/Linux Installation Main
                         Partition a Hard Disk
                         Partition a Hard Disk | Partition a Hard
                         Disk
       messages
                    error
                         standard error
                         stdin, stdout, Pipelines, and
       metacharacters
                    regular expressions
                         Regular Expressions | Regular Expressions | Regular
                         Expressions
       mkdir command
              Using Files: A Tutorial
       mode (files)
              Mode | Mode | Mode
       modifier keys
              Conventions | Conventions
       modifying
                    files
                         hard links
                         The Real Nature of
       modularity
              Introduction to X
       modules
                    device drivers
                         configuring
                         Configure Device Driver Modules
                    installation
                         Install Operating System Kernel
       monitor
                    display color
                         selecting
                         Select Color or Monochrome
       monochrome display
                    selecting
                         Select Color or Monochrome
       more command
              Using Files: A Tutorial
       mount points
              Mounting a Filesystem
       mounting
                    CD-ROM
                         Example: Mounting a CD-ROM | Example: Mounting a
                         CD-ROM
                    filesystems
                         Mounting a Filesystem | Mounting a Filesystem |
                         Example: Mounting a CD-ROM | Example: Mounting a
                         CD-ROM | Removable Disks (Floppies, Zip
                         automatic
                         /etc/fstab: Automating the Mount |
                         /etc/fstab: Automating the Mount
                    floppy disks
                         Removable Disks (Floppies, Zip
                    initialized partitions
                         Mount a Previously-Initialized Partition
                    partitions
                         Initialize a Linux Partition | Initialize a Linux
                         Partition
       mouse operation
                    X windows system
                         The Mouse
       moving
                    files
                         Using Files: A Tutorial
       msdos filesystem
              Concepts
       multi-NFS, multi-mount installation
              Access
       multi_cd installation
              Access | Access
       multiple operating systems
                    booting
                         Make Linux Bootable Directly
       multitasking
              A Multiuser, Multitasking Operating | A Multiuser, Multitasking
              Operating
                    processes
                         Processes
       Multiuser
              A Multiuser, Multitasking Operating
       multiuser environment
                    GNU/Linux
                         A Multiuser, Multitasking Operating
       multiuser environments
                    virtual console
                         Virtual Consoles | Virtual Consoles
       mv command
              Using Files: A Tutorial
       named pipes
              Named Pipes (FIFOs)
       naming
                    devices
                         Device Names in Linux | Device Names in Linux |
                         Device Names in Linux
       naming conventions
                    files
                         troubleshooting
                         Working with Strangely-Named Files
       navigating
                    dbootstrap
                         Step-by-Step Installation
       nedit (text editor
              Text Editors
       netowrks
                    devices
                         output, redirecting
                         stdin, stdout, Pipelines, and | stdin,
                         stdout, Pipelines, and
       network
                    configuring
                         Configure the Network
       Network Configuration
              no title
       network transparency
              Introduction to X
       networking
              Networking
                    Ethernet
                         configuration
                         Ethernet
                    PPP
                         PPP | Preparation
                         configuration
                         The Easy Way: wvdial | The Easy Way:
                         wvdial
                    sockets
                         Sockets
       networks
                    servers
                         partitioning
                         Recommended Partitioning Scheme
                    terminals
                         A Multiuser, Multitasking Operating
                    virtual console
                         Virtual Consoles | Virtual Consoles
                    workstations
                         installation
                         Information You Will Need
                    X servers
                         Introduction to X
       online manual
                    builtin programs
                         Where Commands Reside: The
                    text, paging
                         Environment Variables
                    viewing
                         Environment Variables
       Open Source Software
              What Is Free Software?
       operating system
                    booting
                         LILO (Linux Loader)
                         Booting the System
                    kernel
                         installing
                         Install Operating System Kernel
       operating systems
              What Is Debian?
                    backup tools
                         Backup Tools
                         GNU tar
                         tar
                    boot loaders
                         Before You Start
                    Debian
                         booting
                         Booting Debian
                    functionality
                         What Is Debian?
                    GNU Linux
                         multiuser environment
                         A Multiuser, Multitasking Operating
                    installation
                         partitioning
                         Partitioning Prior to Installation |
                         Partitioning from DOS or | Lossless
                         Repartitioning | Debian Installation
                         Steps
                    LILO
                         Make Linux Bootable Directly
                    modularity
                         Introduction to X
                    multiple installations
                         Before You Start
                    multiple, booting
                         Make Linux Bootable Directly
                    root password
                         setting
                         Set the Root Password
                    swap partitions
                         Background
                    X windows system
                         troubleshooting
                         X Problems
       options (commands)
              The Command Line and
       ordinary user accounts
              Create an Ordinary User | Create an Ordinary User
       organization
                    files
                         Files and Directories | Files and Directories
       organizing
                    files
                         Concepts
                    hard drive
                         Partitioning Your Hard Drive | Background |
                         Background
       ouput
                    redirecting
                         pipelines
                         stdin, stdout, Pipelines, and
       output
                    redirecting
                         stdin, stdout, Pipelines, and | stdin, stdout,
                         Pipelines, and | stdin, stdout, Pipelines, and
                    reversing
                         stdin, stdout, Pipelines, and
       overriding
                    package dependencies
                         Select
       ownership (files)
              File Ownership | File Ownership
       packages
              Glossary
                    canceling selection (dselect)
                         Select
                    compiling
                         Compiling Software
                    configuring
                         Configure
                    Debian base system
                         Debian Installation Steps | Choosing Your
                         Installation Media
                    dependencies
                         Select | Select
                    development
                         Who Creates Debian?
                    installation
                         Package Installation with dselect
                         multi-CD
                         Access | Access
                         multi-NFS, multi-mount
                         Access
                    installing
                         Install | Install
                    maintenance utilities
                         What a Package Maintenance | What a Package
                         Maintenance
                         deselect
                         dselect
                         dpkg
                         dpkg
                    profiles
                         Planning Use of the
                    see also dselect
                         Introduction | Introduction
                    selecting
                         Select and Install Profiles | Select | Select |
                         Select
                    states (dselect)
                         Select | Select
       PAGER environment variable
              Environment Variables
       parameters
              The Command Line and
       parent directories
              Using Files: A Tutorial
       partition
                    boot partition
                         PC Disk Limitations
                    Initialization
                         no title
                         Swap
                         no title
                    Lossless
                         no title
       Partitioning
              no title | Device Names in Linux
                    cylinder translation
                         PC Disk Limitations
                    hard disks
                         Partition a Hard Disk | Partition a Hard Disk
                    hard drive
                         Partitioning Your Hard Drive | Background |
                         Background
                         root partition
                         Background
                         swap partition
                         Background
                    Linux partition
                         initializing
                         Initialize a Linux Partition |
                         Initialize a Linux Partition
                    PC BIOS
                         PC Disk Limitations
                    SCSI drives
                         PC Disk Limitations
                    servers
                         Recommended Partitioning Scheme
                    swap partition
                         initializing
                         Initialize and Activate a | Initialize
                         and Activate a
                    swap partitions
                         Recommended Partitioning Scheme | Recommended
                         Partitioning Scheme
       partitions
                    mounting
                         Initialize a Linux Partition | Initialize a Linux
                         Partition | Mount a Previously-Initialized Partition
                    surface scanning
                         Initialize and Activate a
       passwords
                    logging in
                         First Steps | First Steps
                    root password
                         setting
                         Set the Root Password
                    shadow passwords
                         Shadow Password Support
                    superuser
                         Working as Root
       PATH
              no title
       paths
              Files and Directories
       PC BIOS
              PC Disk Limitations
       PCMCIA
              no title
                    configuring
                         Configure PCMCIA Support
                    removing
                         Remove PCMCIA
       Permissions
              no title | Permissions | Permissions | Security
                    access
                         Mode
                    example session
                         Permissions in Practice | Permissions in Practice |
                         Permissions in Practice
                    file ownership
                         File Ownership | File Ownership
                    hard links
                         The Real Nature of
                    mode
                         Mode | Mode | Mode
       PID
              Processes
       PID (Process Identification Number)
              Processes
       pipe operators
              stdin, stdout, Pipelines, and
       pipeline
              Managing Processes with bash
       pipelines
              stdin, stdout, Pipelines, and
                    output
                         reversing
                         stdin, stdout, Pipelines, and
       pipes
                    named pipes
                         Named Pipes (FIFOs)
       plans
              Managing Your Identity | Managing Your Identity
       PPP
                    configuration
                         PPP | Preparation
                         wvdial
                         The Easy Way: wvdial | The Easy Way:
                         wvdial
       primary partitions
              PC Disk Limitations
       printenv
              Environment Variables | Environment Variables
       Printing
              no title
                    troubleshooting
                         Printing
       proc filesystem
              The proc Filesystem
       process groups
              Managing Processes with bash | Managing Processes with bash
       Process Management
              no title
       Processes
              no title | Processes
                    boot process
                         troubleshooting
                         Troubleshooting the Boot Process
                    comparing to programs
                         Processes
                    controlling
                         The Shell | The Shell
                    daemons
                         Processes
                    environments
                         Environment Variables
                    jobs
                         listing
                         Managing Processes with bash
                         starting
                         Managing Processes with bash
                         suspending
                         Managing Processes with bash | Managing
                         Processes with bash
                         terminating
                         Managing Processes with bash | Managing
                         Processes with bash
                    named pipes
                         Named Pipes (FIFOs)
                    PID (Process Identification Number)
                         Processes
                    redirection operators
                         stdin, stdout, Pipelines, and | stdin, stdout,
                         Pipelines, and
                    standard input
                         stdin, stdout, Pipelines, and
                    standard output
                         stdin, stdout, Pipelines, and
       profiles
              Planning Use of the | Planning Use of the
                    selecting
                         Select and Install Profiles | Select and Install
                         Profiles
       programming
              Software Development with Debian | Software Development with
              Debian
       programs
                    bash
                         aliases
                         Aliases
                    BIOS (Basic Input/Output System)
                         Booting the System
                    built-in
                         Where Commands Reside: The
                    cfdisk
                         Partition a Hard Disk | Partition a Hard Disk
                    comparing to processes
                         Processes
                    dbootstrap
                         Step-by-Step Installation
                         network configuration
                         Configure the Network
                    dselect
                         Select and Install Profiles | Introduction |
                         Introduction
                         Access screen
                         Access
                         multi-CD installation
                         Access
                         multi-NFS, multi-mount installation
                         Access
                         package states
                         Select | Select
                         packages, configuring
                         Configure
                         packages, installing
                         Install | Install
                         Update screen
                         Update | Select | Select | Select |
                         Select
                    executing
                         search path
                         Where Commands Reside: The | Where
                         Commands Reside: The
                    exiting
                         How to Read This
                    file managers
                         Introduction to X
                    functionality
                         What Is Debian?
                    gzip
                         File Compression with gzip | File Compression with
                         gzip
                    multitasking
                         A Multiuser, Multitasking Operating
                    packages
                         maintenance utilities
                         What a Package Maintenance | What a
                         Package Maintenance | dpkg | dselect
                    shell
                         The Shell | The Shell
                    software development
                         Software Development with Debian | Software
                         Development with Debian
                    tasks
                         Select and Install Profiles | Select and Install
                         Profiles
                    text editors
                         Text Editors | Text Editors
                         ae
                         Using ae
                    wvdial
                         PPP configuration
                         The Easy Way: wvdial | The Easy Way:
                         wvdial
                    X clients
                         X Clients | X Clients
       Prompt, Changing
              Environment Variables | Environment Variables
       prompts
                    shell prompts
                         First Steps
       proprietary software
                    comparing to commercial
                         What Is Free Software?
       proxy servers
                    environment variables
                         setting
                         Access
       PS1
              Environment Variables | Environment Variables
       pwd
              Using Files: A Tutorial
       pwd command
              Using Files: A Tutorial | Using Files: A Tutorial
       query process
              Booting the System
       questions
                    technical support
                         Personal Help | Tips for asking questions
       quitting
                    ae (text editor)
                         Using ae
                    X windows system
                         Customizing Your X Startup | Customizing Your X
                         Startup
       RAM
                    disk cache
                         Shutting Down
       RAM (Random Access Memory)
                    installation requirements
                         Memory and Disk Space
       reading
                    device files
                         Device Files
       redirecting
                    output
                         stdin, stdout, Pipelines, and
                         pipelines
                         stdin, stdout, Pipelines, and
       Redirection
              no title
       redirection operators
              stdin, stdout, Pipelines, and
                    hard links
                         The Real Nature of
                    output
                         reversing
                         stdin, stdout, Pipelines, and
       regular expressions
              Regular Expressions | Regular Expressions | Regular Expressions
       reinitializing
                    swap partition
                         Initialize and Activate a
       removable disks
                    mounting filesystem
                         Removable Disks (Floppies, Zip
       removing
                    directories
                         Using Files: A Tutorial
                    hard links
                         The Real Nature of
                    PCMCIA
                         Remove PCMCIA
                    symlinks
                         Symbolic Links | Symbolic Links
       repartitioning
                    from Windows
                         Partitioning from DOS or | Lossless Repartitioning
                    hard drive
                         Partitioning Your Hard Drive | Background |
                         Background
       requirements
                    installation
                         memory
                         Memory and Disk Space
       restrictions
                    partitions
                         PC Disk Limitations
       reversing
                    output
                         stdin, stdout, Pipelines, and
       rm
              Using Files: A Tutorial
       root directory
              Files and Directories | Files and Directories
       root partition
              Background
       root password
                    setting
                         Set the Root Password
       root user
              Working as Root | Working as Root
                    see also superuser
                         Files Present and Their
       saving
                    edited files (ae)
                         Using ae
       scanning
                    hard disk
                         Initialize and Activate a
       screen
                    display color
                         selecting
                         Select Color or Monochrome
       screens
                    ae (text editor)
                         Using ae
                    dselect
                         Select
                         Select | Select | Select | Select |
                         Select
                         Update
                         Update
                    X windows system
                         windows manager
                         Introduction to X
       scrolling
                    commands
                         Command History and Editing
       SCSI drives
                    partitioning
                         PC Disk Limitations
                    partitions
                         Device Names in Linux
       search path
              Where Commands Reside: The | Where Commands Reside: The
       security
                    backups, performing
                         Before You Start
                    passwords
                         logging in
                         First Steps | First Steps
                         shadow passwords
                         Shadow Password Support
                    permissions
                         Permissions | Permissions | Security
                         example session
                         Permissions in Practice | Permissions in
                         Practice | Permissions in Practice
                         file mode
                         Mode | Mode | Mode
                         file ownership
                         File Ownership | File Ownership
                    root password
                         setting
                         Set the Root Password
                    root user
                         Working as Root | Working as Root
       Select screen (dselect)
              Select | Select | Select | Select
       selecting
                    color display
                         Select Color or Monochrome
                    fonts, xterm
                         Starting the X Environment
                    monochrome display
                         Select Color or Monochrome
                    packages
                         Select and Install Profiles | Select | Select |
                         Select
                         see also dselect
                         Introduction | Introduction
                    profiles
                         Select and Install Profiles | Select and Install
                         Profiles
                    X clients
                         Customizing Your X Startup | Customizing Your X
                         Startup
       Server profile
              Planning Use of the
       servers
                    partitioning
                         Recommended Partitioning Scheme
                    proxy servers
                         environment variables, setting
                         Access
                    X server
                         killing
                         Leaving the X Environment
                    X servers
                         Introduction to X
                         clients
                         X Clients | X Clients
                         network transparency
                         Introduction to X
       sh (Bourne shell)
              The Shell
       shadow passwords
              Shadow Password Support
       sharing
                    software
                         What Is Free Software? | What Is Free Software?
       Shell
              no title | The Shell | The Shell | no title
                    built-in programs
                         Where Commands Reside: The
                    filename expansion patterns
                         Filename Expansion
                    output
                         reversing
                         stdin, stdout, Pipelines, and
                    redirection operator
                         stdin, stdout, Pipelines, and | stdin, stdout,
                         Pipelines, and
                    search path
                         Where Commands Reside: The | Where Commands Reside:
                         The
       shell commands
                    typing
                         First Steps
       shell prompt
                    command history
                         Command History and Editing
                    command line
                         Command History and Editing | Command History and
                         Editing
       shells
                    Bourne shell
                         The Shell
                    C shell
                         The Shell
                    command lines
                         job numbers, assigning
                         Managing Processes with bash
                    current working directory
                         Using Files: A Tutorial
                    environments
                         Environment Variables
                    jobs
                         suspending
                         Managing Processes with bash
                    pipelines
                         stdin, stdout, Pipelines, and
                    process groups
                         Managing Processes with bash | Managing Processes
                         with bash
                    redirection operators
                         hard links
                         The Real Nature of
                    variables
                         exporting
                         Environment Variables
                    xterms
                         Starting the X Environment
       shortcut directories
              Using Files: A Tutorial
       shortcuts
                    aliases
                         Aliases
       Shutdown
              no title
       shutting down
              Shutting Down
       sites
                    Web
                         Debian
                         What Is Free Software?
                         Free Software Foundation
                         What Is Free Software?
                         Multi Disk HOWTO
                         Recommended Partitioning Scheme
                         video cards, support for
                         Supported Hardware
       smoke test
              The Moment of Truth
       Social Contract
              What Is Free Software? | What Is Free Software? | What Is Free
              Software?
       sockets
              Sockets
       soft links
              Symbolic Links
       software
                    applications
                         What Is Debian?
                    development
                         Who Creates Debian?
                    free
                         developing
                         What Is Free Software?
                         Social Contract
                         What Is Free Software?
                    Free Software
                         What Is Free Software?
                    Open Source
                         What Is Free Software?
                    packages
                         mainenance utilities
                         What a Package Maintenance | dpkg |
                         dselect
       sofware
                    development
                         Software Development with Debian | Software
                         Development with Debian
       Source code
              Viewing Text Files
                    comparing to binary executables
                         Viewing Text Files
       spaces
                    typographical convention
                         Conventions
       specifying
                    time zone
                         Configure the Base System
       splitting
                    partitions
                         Lossless Repartitioning
       Stallman, Richard M.
                    Why Software Should be Free
                         What Is Free Software?
       standard error
              stdin, stdout, Pipelines, and
       standard input
              stdin, stdout, Pipelines, and
       standard output
              stdin, stdout, Pipelines, and
       starting
                    ae (text editor)
                         Using ae
                    jobs
                         Managing Processes with bash | Managing Processes
                         with bash | Managing Processes with bash
                    X windows system
                         Starting the X Environment
       startup
                    boot process
                         BIOS
                         Booting the System
                         query process
                         Booting the System
                    X windows system
                         customizing
                         Customizing Your X Startup
       states
                    packages (dselect)
                         Select | Select
       status
                    jobs
                         displaying
                         Managing Processes with bash
       stdin
              no title
       stdout
              no title
       structure
                    command line
                         The Command Line and
                    directories
                         Files and Directories
       su command
              Working as Root
       subdirectories
                    filename expansion patterns
                         Filename Expansion | Filename Expansion
       submitting
                    bug reports
                         Troubleshooting the Boot Process
       superuser
              Working as Root | Working as Root
                    home directory
                         Files Present and Their
       superuser account
              Set the Root Password
       surface scanning
                    hard disks
                         Initialize and Activate a
       suspending
                    jobs
                         Managing Processes with bash | Managing Processes
                         with bash
       swap partition
              Background
                    initializing
                         Initialize and Activate a | Initialize and Activate a
       swap partitions
              Recommended Partitioning Scheme | Recommended Partitioning Scheme
                    Linux swap partition
                         creating
                         Partition a Hard Disk | Partition a Hard
                         Disk
       symlinks
              Symbolic Links
                    comparing to hard links
                         Symbolic Links | Symbolic Links
                    removing
                         Symbolic Links
       syntax
                    commands
                         The Command Line and | Describing the Command Line |
                         Describing the Command Line
                    file searches
                         Finding Files
       system binaries
              Files Present and Their
       system clock
                    setting
                         Configure the Base System
       system configuration
              Debian Installation Steps | Choosing Your Installation Media
                    dbootstrap
                         Step-by-Step Installation
       system-wide configuration
              System-Wide Versus User-Specific Configuration
                    /etc directory
                         Files Present and Their
                    automatic filesystem mounting
                         /etc/fstab: Automating the Mount | /etc/fstab:
                         Automating the Mount
                    networking
                         Networking
                         Ethernet
                         Ethernet
                         PPP
                         PPP | Preparation | The Easy Way: wvdial
                         | The Easy Way: wvdial
                    packages
                         selecting
                         Select | Select | Select
                    permissions
                         file mode
                         Mode | Mode | Mode
                         file ownership
                         File Ownership
                    X windows system
                         customizing
                         Customizing Your X Startup
       system-wide configuratoin
              System-Wide Versus User-Specific Configuration
       Taper
              Backup Tools
       taper (backup utility)
              Backup Tools
       tar
              Backup Tools | no title
       tar (tape archiver
              tar
       tasks
              Select and Install Profiles | Select and Install Profiles
       tcsh
              The Shell
       technical support
                    asking questions
                         Personal Help | Tips for asking questions
       temporary files
              Files Present and Their
       Terminal
              A Multiuser, Multitasking Operating
       terminals
              A Multiuser, Multitasking Operating
                    consoles
                         A Multiuser, Multitasking Operating
       terminating
                    jobs
                         Managing Processes with bash | Managing Processes
                         with bash
       testing
                    installation
                         smoke test
                         The Moment of Truth
       text
                    bold face
                         typographical conventions
                         Conventions
                    fonts
                         xterm, selecting
                         Starting the X Environment
                    italicized
                         typographical conventions
                         Conventions
                    online manual
                         paging
                         Environment Variables
                    output
                         reversing
                         stdin, stdout, Pipelines, and
                    regular expressions
                         Regular Expressions | Regular Expressions | Regular
                         Expressions
                    wildcards
                         -
                         Filename Expansion
                         ?
                         Filename Expansion
                         file searches
                         Finding Files
                         filename expansion patterns
                         Filename Expansion
       text editors
              Text Editors
                    ae
                         Using ae
       text files
              Working with Text Files | no title
                    viewing
                         Viewing Text Files
       time zone
                    specifying
                         Configure the Base System
       tools
                    backups
                         Backup Tools
                         GNU tar
                         tar
                    FIPS
                         Lossless Repartitioning | Lossless Repartitioning
       troubleshooting
                    boot process
                         Troubleshooting the Boot Process
                    files
                         naming conventions
                         Working with Strangely-Named Files
                    printing
                         Printing
                    X windows system
                         Troubleshooting | X Problems
       type
              Where Commands Reside: The
       typing
                    Bash commands
                         wildcards
                         Tab Completion
                    command line
                         Command History and Editing | Command History and
                         Editing
                    commands
                         aliases
                         Aliases
                    modifier keys
                         Conventions | Conventions
                    shell commands
                         First Steps
                    wildcards
                         ?
                         Filename Expansion
                         filename expansion pattern
                         Filename Expansion
       typographical conventions
              Conventions | Conventions
                    bold face
                         Conventions
                    italics
                         Conventions
                    modifier keys
                         Conventions | Conventions
                    spaces
                         Conventions
       uncompressing
                    files
                         File Compression with gzip
       unmounting
                    CD-ROMs
                         Example: Mounting a CD-ROM
       Update screen (dselect)
              Update
       user accounts
                    logging in
                         First Steps | First Steps
                    ordinary user
                         Create an Ordinary User | Create an Ordinary User
                    permission
                         Permissions | Permissions
                    permissions
                         example session
                         Permissions in Practice | Permissions in
                         Practice | Permissions in Practice
                         file ownership
                         File Ownership | File Ownership
                         mode
                         Mode | Mode | Mode
                    plans
                         Managing Your Identity | Managing Your Identity
                    root user
                         Working as Root | Working as Root
                    superuser
                         Set the Root Password
       user-specific configuration
              System-Wide Versus User-Specific Configuration | System-Wide
              Versus User-Specific Configuration
                    dotfiles
                         System-Wide Versus User-Specific Configuration
       utilities
                    archiving
                         Backup Tools
                    backup tools
                         Backup Tools
                         GNU tar
                         tar
                    dbootstrap
                         network configuration
                         Configure the Network
                    dselect
                         Select and Install Profiles | Introduction |
                         Introduction
                         Access screen
                         Access
                         multi-CD installation
                         Access
                         multi-NFS, multi-mount installation
                         Access
                         package states
                         Select | Select
                         packages, configuring
                         Configure
                         packages, installing
                         Install | Install
                         Update screen
                         Update | Select | Select | Select |
                         Select
                    file manager
                         Using a File Manager
                    FIPS
                         Lossless Repartitioning | Lossless Repartitioning
                    GNU documentation viewer
                         Using info | Using info
                    gzip
                         File Compression with gzip | File Compression with
                         gzip
                    package maintenance
                         What a Package Maintenance | What a Package
                         Maintenance
                         deselect
                         dselect
                         dpkg
                         dpkg
                    system binaries
                         Files Present and Their
                    tasks
                         Select and Install Profiles | Select and Install
                         Profiles
                    text editors
                         Text Editors | Text Editors
                         ae
                         Using ae
       variables
              Environment Variables
                    exporting
                         Environment Variables
                    shell
                         exporting
                         Environment Variables
       vi (text editor)
              Text Editors | Text Editors
       video cards
                    support for
                         Supported Hardware
       viewing
                    directory contents
                         Files Present and Their | Files Present and Their
                    file contents
                         Using Files: A Tutorial | Determining a File's
                         Contents
                    files
                         filename expansion pattern
                         Filename Expansion
                    Info help system
                         Managing Processes with bash
                    job status
                         Managing Processes with bash
                    mounted filesystems
                         Example: Mounting a CD-ROM
                    online manual
                         Environment Variables
                    text files
                         Viewing Text Files
       Virtual Consoles
              no title | Virtual Consoles | Virtual Consoles
       virtual devices
              Device Files | /dev/null
       web sites
                    Debian
                         What Is Free Software? | Personal Help | Personal
                         Help
                    Free Software Foundation
                         What Is Free Software?
                    Multi Disk HOWTO
                         Recommended Partitioning Scheme
       Web sites:video cards, support for
              Supported Hardware
       whoami command
              Working as Root
       Why Software Should be Free (Stallman, Richard M.)
              What Is Free Software?
       wildcards
              no title | Filename Expansion
                    *
                         Filename Expansion
                    ?
                         Filename Expansion
                    Bash commands
                         Tab Completion
                    file searches
                         Finding Files
                    filename expansion pattens
                         Filename Expansion
                    regular expressions
                         Regular Expressions | Regular Expressions | Regular
                         Expressions
       window managers
              Introduction to X
       Windows
                    partitioning
                         Partitioning from DOS or | Lossless Repartitioning |
                         Debian Installation Steps
       Work profile
              Planning Use of the
       workstations
                    installation
                         Information You Will Need
       write permission
              Mode
       writing
                    disk images to floppies
                         Creating Floppies from Disk | Creating Floppies from
                         Disk
                    to device files
                         Device Files
                    to named pipes
                         Named Pipes (FIFOs)
       wvdial
                    PPP configuration
                         The Easy Way: wvdial | The Easy Way: wvdial
       X clients
              Introduction to X
                    network transparency
                         Introduction to X
                    selecting
                         Customizing Your X Startup | Customizing Your X
                         Startup
       X servers
              Introduction to X
       X Window
              The X Window System | Introduction to X
       X windows system
                    clients
                         X Clients | X Clients
                         selecting
                         Customizing Your X Startup | Customizing
                         Your X Startup
                    customizing
                         Customizing Your X Startup
                    exiting
                         Leaving the X Environment | Customizing Your X
                         Startup | Customizing Your X Startup
                    mouse operation
                         The Mouse
                    network transparency
                         Introduction to X
                    starting
                         Starting the X Environment
                    troubleshooting
                         Troubleshooting | X Problems
                    xdm
                         Starting the X Environment
       X, troubleshooting
              no title
       xcoral (text editor)
              Text Editors
       xdm (X Display Manager)
              Starting the X Environment
       xterm
                    font size, increasing
                         Starting the X Environment
                    fonts
                         selecting
                         Starting the X Environment
       xterms
              Starting the X Environment
       Zip Disks
              no title

    About this document ...

       Debian GNU/Linux: Guide to Installation and Usage

       This document was generated using the LaTeX2HTML translator Version
       2K.1beta (1.48)

       Copyright (c) 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based
       Learning Unit, University of Leeds.
       Copyright (c) 1997, 1998, 1999, Ross Moore, Mathematics Department,
       Macquarie University, Sydney.

       The command line arguments were:
       latex2html -html_version 4.0,table -split 0 -t 'Debian GNU/Linux: Guide to
       Installation and Usage' -toc_stars -local_icons -address 'John Goerzen /
       Ossama Othman' debian-tutorial.tex

       The translation was initiated by John Goerzen on 2002-12-12

         ----------------------------------------------------------------------

    Footnotes

       ... .1.1
              A terminal is just a keyboard and a screen that are connected to
              the computer through the network, over a modem, or directly. Your
              keyboard and monitor form a terminal that is directly attached to
              the computer: This special terminal is often called the console.

       ... Hacker1.2
              Note that the term ``hacker'' should not be confused with the term
              ``cracker.'' In short, a hacker is benevolent, whereas a cracker
              is generally considered malevolent. Movies and other forms of
              media many times incorrectly use the term ``hacker'' instead of
              ``cracker.''

       ... loader2.1
              A boot loader is responsible starting an operating system's boot
              procedure.

       ... drivers2.2
              See your hard drive manual for a description of these features.

       ...-KILL5.1
              Many people use the signal number -9 instead of the signal name
              -KILL. However, it's technically more portable to use the signal
              name.

       ... operator6.1
              Depending on your keyboard, this may either appear as a vertical
              bar or a broken vertical bar, but it can almost always be found
              above the backslash (\).

       ... all6.2
              Actually, files beginning with . are not included in the expansion
              of *.

       ... catch13.1
              Sparse files and hard links are two examples.

         ----------------------------------------------------------------------

        John Goerzen / Ossama Othman