home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1996 November / PCO96_11.ISO / linux / docs / install / install.txt < prev    next >
Encoding:
Text File  |  1996-09-21  |  97.0 KB  |  1,735 lines

  1.  
  2.  
  3. Author's Note:
  4.  
  5. This is version 2.2.2 of the book, "Linux Installation and Getting
  6. Started", formatted in plain ASCII for those readers without access
  7. to PostScript printers. This document was generated by a set of tools
  8. from LaTeX source, so there may be a number of formatting problems.
  9. This is not the "official" version of the book! Please see
  10.     sunsite.unc.edu:/pub/Linux/docs/LDP/install-guide
  11. for PostScript, DVI, HTML, and other (nicely formatted) versions.
  12. If you have the ability to print the guide or view it on-line,
  13. I suggest you do so. This ASCII version is meant only for previewing 
  14. purposes.
  15.  
  16. This book may be freely distributed under certain conditions, and
  17. you can order a printed and bound copy from a number of publishers.
  18. The README file at the FTP site given above gives all the details.
  19.  
  20.                     -- M. Welsh
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34. Linux Installation and Getting Started
  35. _______________________________________________________________________
  36.                                   Copyright (c) 1992--1994  Matt Welsh
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. Version 2.2.2, 11 February 1995.
  44.  
  45. This  book   is   an  installation   and   new-user  guide   for   the
  46. Linux system,  meant for  UNIX novices  and  gurus alike.    Contained
  47. herein is  information on  how to  obtain Linux,  installation of  the
  48. software, a beginning tutorial for new UNIX users, and an introduction
  49. to system administration.    It is meant  to be  general enough to  be
  50. applicable to any distribution of the Linux software.
  51.  
  52.   This book is freely distributable; you may copy  and redistribute it
  53. under certain conditions.   Please see the copyright and  distribution
  54. statement on page x.
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. Contents
  65.  
  66.  
  67.  
  68.  
  69. Preface                                                             vi
  70.   Audience  . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
  71.   Organization  . . . . . . . . . . . . . . . . . . . . . . . . . . vii
  72.   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . vii
  73.   Credits and Legalese  . . . . . . . . . . . . . . . . . . . . . . viii
  74.   Documentation Conventions . . . . . . . . . . . . . . . . . . . . xi
  75. 1 Introduction to Linux                                              1
  76.   1.1 About This Book . . . . . . . . . . . . . . . . . . . . . . .  1
  77.   1.2 A Brief History of Linux  . . . . . . . . . . . . . . . . . .  3
  78.   1.3 System Features . . . . . . . . . . . . . . . . . . . . . . .  5
  79.   1.4 Software Features . . . . . . . . . . . . . . . . . . . . . .  6
  80.     1.4.1 Basic commands and utilities  . . . . . . . . . . . . . .  7
  81.     1.4.2 Text processing and word processing . . . . . . . . . . .  8
  82.     1.4.3 Programming languages and utilities . . . . . . . . . . . 11
  83.     1.4.4 The X Window System . . . . . . . . . . . . . . . . . . . 12
  84.     1.4.5 Networking  . . . . . . . . . . . . . . . . . . . . . . . 14
  85.     1.4.6 Telecommunications and BBS software . . . . . . . . . . . 15
  86.     1.4.7 Interfacing with MS-DOS . . . . . . . . . . . . . . . . . 16
  87.     1.4.8 Other applications  . . . . . . . . . . . . . . . . . . . 16
  88.   1.5 About Linux's Copyright . . . . . . . . . . . . . . . . . . . 18
  89.   1.6 The Design and Philosophy of Linux  . . . . . . . . . . . . . 19
  90.     1.6.1 Hints for UNIX novices  . . . . . . . . . . . . . . . . . 22
  91.     1.6.2 Hints for UNIX gurus  . . . . . . . . . . . . . . . . . . 22
  92.   1.7 Differences Between Linux and Other Operating Systems . . . . 23
  93.     1.7.1 Why use Linux?  . . . . . . . . . . . . . . . . . . . . . 23
  94.     1.7.2 Linux vs.  MS-DOS . . . . . . . . . . . . . . . . . . . . 24
  95.     1.7.3 Linux vs.  The Other Guys . . . . . . . . . . . . . . . . 25
  96.     1.7.4 Other implementations of UNIX . . . . . . . . . . . . . . 25
  97.   1.8 Hardware Requirements . . . . . . . . . . . . . . . . . . . . 27
  98.     1.8.1 Motherboard and CPU requirements  . . . . . . . . . . . . 28
  99.     1.8.2 Memory requirements . . . . . . . . . . . . . . . . . . . 28
  100.     1.8.3 Hard drive controller requirements  . . . . . . . . . . . 29
  101.     1.8.4 Hard drive space requirements . . . . . . . . . . . . . . 29
  102.     1.8.5 Monitor and video adapator requirements . . . . . . . . . 30
  103.     1.8.6 Miscellaneous hardware  . . . . . . . . . . . . . . . . . 30
  104.     1.8.7 Ethernet cards  . . . . . . . . . . . . . . . . . . . . . 31
  105.   1.9 Sources of Linux Information  . . . . . . . . . . . . . . . . 32
  106.     1.9.1 Online documents  . . . . . . . . . . . . . . . . . . . . 32
  107.  
  108.  
  109.                                   i
  110.  
  111.  
  112.     1.9.2 Linux on the World Wide Web . . . . . . . . . . . . . . . 33
  113.     1.9.3 Books and other published works . . . . . . . . . . . . . 33
  114.     1.9.4 USENET newsgroups . . . . . . . . . . . . . . . . . . . . 34
  115.     1.9.5 Internet mailing lists  . . . . . . . . . . . . . . . . . 36
  116.   1.10 Getting Help . . . . . . . . . . . . . . . . . . . . . . . . 37
  117.  
  118. 2 Obtaining and Installing Linux                                    40
  119.   2.1 Distributions of Linux  . . . . . . . . . . . . . . . . . . . 40
  120.     2.1.1 Getting Linux from the Internet . . . . . . . . . . . . . 41
  121.     2.1.2 Getting Linux from other online sources . . . . . . . . . 42
  122.     2.1.3 Getting Linux via mail order  . . . . . . . . . . . . . . 42
  123.     2.1.4 Getting Slackware . . . . . . . . . . . . . . . . . . . . 43
  124.   2.2 Preparing to Install Linux  . . . . . . . . . . . . . . . . . 50
  125.     2.2.1 Installation overview . . . . . . . . . . . . . . . . . . 50
  126.     2.2.2 Repartitioning concepts . . . . . . . . . . . . . . . . . 52
  127.     2.2.3 Linux partition requirements  . . . . . . . . . . . . . . 52
  128.     2.2.4 Repartitioning your drives  . . . . . . . . . . . . . . . 54
  129.   2.3 Installing the Linux software . . . . . . . . . . . . . . . . 56
  130.     2.3.1 Booting Linux . . . . . . . . . . . . . . . . . . . . . . 56
  131.     2.3.2 Drives and partitions under Linux . . . . . . . . . . . . 58
  132.     2.3.3 Creating Linux partitions . . . . . . . . . . . . . . . . 60
  133.     2.3.4 Creating the swap space . . . . . . . . . . . . . . . . . 63
  134.     2.3.5 Creating the filesystems  . . . . . . . . . . . . . . . . 64
  135.     2.3.6 Installing the software . . . . . . . . . . . . . . . . . 65
  136.     2.3.7 Creating the boot floppy or installing LILO . . . . . . . 69
  137.     2.3.8 Additional installation procedures  . . . . . . . . . . . 70
  138.   2.4 Postinstallation procedures . . . . . . . . . . . . . . . . . 70
  139.   2.5 Running Into Trouble  . . . . . . . . . . . . . . . . . . . . 71
  140.     2.5.1 Problems with booting the installation media  . . . . . . 72
  141.     2.5.2 Hardware problems . . . . . . . . . . . . . . . . . . . . 74
  142.     2.5.3 Problems installing the software  . . . . . . . . . . . . 79
  143.     2.5.4 Problems after installing Linux . . . . . . . . . . . . . 81
  144. 3 Linux Tutorial                                                    85
  145.   3.1 Introduction  . . . . . . . . . . . . . . . . . . . . . . . . 85
  146.   3.2 Basic UNIX Concepts . . . . . . . . . . . . . . . . . . . . . 86
  147.     3.2.1 Creating an account . . . . . . . . . . . . . . . . . . . 86
  148.     3.2.2 Logging in  . . . . . . . . . . . . . . . . . . . . . . . 86
  149.     3.2.3 Virtual consoles  . . . . . . . . . . . . . . . . . . . . 87
  150.     3.2.4 Shells and commands . . . . . . . . . . . . . . . . . . . 87
  151.     3.2.5 Logging out . . . . . . . . . . . . . . . . . . . . . . . 89
  152.     3.2.6 Changing your password  . . . . . . . . . . . . . . . . . 89
  153.     3.2.7 Files and directories . . . . . . . . . . . . . . . . . . 89
  154.     3.2.8 The directory tree  . . . . . . . . . . . . . . . . . . . 90
  155.     3.2.9 The current working directory . . . . . . . . . . . . . . 90
  156.     3.2.1 0Referring to home directories  . . . . . . . . . . . . . 92
  157.   3.3 First Steps into UNIX . . . . . . . . . . . . . . . . . . . . 92
  158.     3.3.1 Moving around . . . . . . . . . . . . . . . . . . . . . . 92
  159.     3.3.2 Looking at the contents of directories  . . . . . . . . . 93
  160.     3.3.3 Creating new directories  . . . . . . . . . . . . . . . . 95
  161.     3.3.4 Copying files . . . . . . . . . . . . . . . . . . . . . . 96
  162.  
  163.  
  164.     3.3.5 Moving files  . . . . . . . . . . . . . . . . . . . . . . 96
  165.     3.3.6 Deleting files and directories  . . . . . . . . . . . . . 96
  166.     3.3.7 Looking at files  . . . . . . . . . . . . . . . . . . . . 97
  167.     3.3.8 Getting online help . . . . . . . . . . . . . . . . . . . 97
  168.   3.4 Summary of Basic Commands . . . . . . . . . . . . . . . . . . 98
  169.   3.5 Exploring the File System  . . . . . . . . . . . . . . . . . 100
  170.   3.6 Types of shells  . . . . . . . . . . . . . . . . . . . . . . 105
  171.   3.7 Wildcards  . . . . . . . . . . . . . . . . . . . . . . . . . 106
  172.   3.8 UNIX Plumbing  . . . . . . . . . . . . . . . . . . . . . . . 108
  173.     3.8.1 Standard input and output  . . . . . . . . . . . . . . . 108
  174.     3.8.2 Redirecting input and output . . . . . . . . . . . . . . 109
  175.     3.8.3 Using pipes  . . . . . . . . . . . . . . . . . . . . . . 110
  176.     3.8.4 Non-destructive redirection  . . . . . . . . . . . . . . 112
  177.   3.9 File Permissions . . . . . . . . . . . . . . . . . . . . . . 112
  178.     3.9.1 Concepts of file permissions . . . . . . . . . . . . . . 112
  179.     3.9.2 Interpreting file permissions  . . . . . . . . . . . . . 113
  180.     3.9.3 Dependencies . . . . . . . . . . . . . . . . . . . . . . 114
  181.     3.9.4 Changing permissions . . . . . . . . . . . . . . . . . . 115
  182.   3.10 Managing file links . . . . . . . . . . . . . . . . . . . . 115
  183.     3.10.1 Hard links  . . . . . . . . . . . . . . . . . . . . . . 115
  184.     3.10.2 Symbolic links  . . . . . . . . . . . . . . . . . . . . 117
  185.   3.11 Job Control . . . . . . . . . . . . . . . . . . . . . . . . 117
  186.     3.11.1 Jobs and processes  . . . . . . . . . . . . . . . . . . 117
  187.     3.11.2 Foreground and background . . . . . . . . . . . . . . . 118
  188.     3.11.3 Backgrounding and killing jobs  . . . . . . . . . . . . 119
  189.     3.11.4 Stopping and restarting jobs  . . . . . . . . . . . . . 121
  190.   3.12 Using the vi Editor . . . . . . . . . . . . . . . . . . . . 123
  191.     3.12.1 Concepts  . . . . . . . . . . . . . . . . . . . . . . . 124
  192.     3.12.2 Starting vi . . . . . . . . . . . . . . . . . . . . . . 124
  193.     3.12.3 Inserting text  . . . . . . . . . . . . . . . . . . . . 125
  194.     3.12.4 Deleting text . . . . . . . . . . . . . . . . . . . . . 126
  195.     3.12.5 Changing text . . . . . . . . . . . . . . . . . . . . . 127
  196.     3.12.6 Moving commands . . . . . . . . . . . . . . . . . . . . 128
  197.     3.12.7 Saving files and quitting vi  . . . . . . . . . . . . . 128
  198.     3.12.8 Editing another file  . . . . . . . . . . . . . . . . . 129
  199.     3.12.9 Including other files . . . . . . . . . . . . . . . . . 129
  200.     3.12.10 Running shell commands . . . . . . . . . . . . . . . . 130
  201.     3.12.11 Getting help . . . . . . . . . . . . . . . . . . . . . 130
  202.   3.13Customizing your Environment . . . . . . . . . . . . . . . . 130
  203.     3.13.1 Shell scripts . . . . . . . . . . . . . . . . . . . . . 131
  204.     3.13.2 Shell variables and the environment . . . . . . . . . . 132
  205.     3.13.3 Shell initialization scripts  . . . . . . . . . . . . . 135
  206.   3.14 So You Want to Strike Out on Your Own?  . . . . . . . . . . 135
  207.  
  208. 4 System Administration                                            137
  209.   4.1  About Root, Hats, and the Feeling of Power  . . . . . . . . 137
  210.     4.1.1 The root account . . . . . . . . . . . . . . . . . . . . 137
  211.     4.1.2 Abusing the system . . . . . . . . . . . . . . . . . . . 139
  212.     4.1.3 Dealing with users . . . . . . . . . . . . . . . . . . . 139
  213.     4.1.4 Setting the rules  . . . . . . . . . . . . . . . . . . . 140
  214.     4.1.5 What it all means  . . . . . . . . . . . . . . . . . . . 140
  215.  
  216.  
  217.   4.2  Booting the System  . . . . . . . . . . . . . . . . . . . . 141
  218.     4.2.1 Using a boot floppy  . . . . . . . . . . . . . . . . . . 141
  219.     4.2.2 Using LILO . . . . . . . . . . . . . . . . . . . . . . . 142
  220.   4.3 Shutting Down  . . . . . . . . . . . . . . . . . . . . . . . 143
  221.   4.4 Managing Users . . . . . . . . . . . . . . . . . . . . . . . 144
  222.     4.4.1 User management concepts . . . . . . . . . . . . . . . . 144
  223.     4.4.2 Adding users . . . . . . . . . . . . . . . . . . . . . . 146
  224.     4.4.3 Deleting users . . . . . . . . . . . . . . . . . . . . . 146
  225.     4.4.4 Setting user attributes  . . . . . . . . . . . . . . . . 146
  226.     4.4.5 Groups . . . . . . . . . . . . . . . . . . . . . . . . . 147
  227.   4.5 Archiving and Compressing Files  . . . . . . . . . . . . . . 147
  228.     4.5.1 Using tar  . . . . . . . . . . . . . . . . . . . . . . . 148
  229.     4.5.2 gzip and compress  . . . . . . . . . . . . . . . . . . . 149
  230.     4.5.3 Putting them together  . . . . . . . . . . . . . . . . . 149
  231.   4.6 Using Floppies and Making Backups  . . . . . . . . . . . . . 151
  232.     4.6.1 Using floppies for backups . . . . . . . . . . . . . . . 151
  233.     4.6.2 Using floppies as filesystems  . . . . . . . . . . . . . 151
  234.   4.7 Upgrading and Installing New Software  . . . . . . . . . . . 152
  235.     4.7.1 Upgrading the kernel . . . . . . . . . . . . . . . . . . 153
  236.     4.7.2 Upgrading the libraries  . . . . . . . . . . . . . . . . 154
  237.     4.7.3 Upgrading gcc  . . . . . . . . . . . . . . . . . . . . . 155
  238.     4.7.4 Upgrading other software . . . . . . . . . . . . . . . . 156
  239.   4.8 Managing Filesystems . . . . . . . . . . . . . . . . . . . . 156
  240.     4.8.1 Mounting filesystems . . . . . . . . . . . . . . . . . . 156
  241.     4.8.2 Checking filesystems . . . . . . . . . . . . . . . . . . 158
  242.   4.9 Using a swap file  . . . . . . . . . . . . . . . . . . . . . 159
  243.   4.10 Miscellaneous Tasks . . . . . . . . . . . . . . . . . . . . 160
  244.     4.10.1 System startup files  . . . . . . . . . . . . . . . . . 160
  245.     4.10.2 Setting the hostname  . . . . . . . . . . . . . . . . . 161
  246.   4.11 What To Do In An Emergency  . . . . . . . . . . . . . . . . 162
  247.     4.11.1 Recovering using a maintenance diskette . . . . . . . . 162
  248.     4.11.2 Fixing the root password  . . . . . . . . . . . . . . . 163
  249.     4.11.3 Fixing trashed filesystems  . . . . . . . . . . . . . . 163
  250.     4.11.4 Recovering lost files . . . . . . . . . . . . . . . . . 164
  251.     4.11.5 Fixing trashed libraries  . . . . . . . . . . . . . . . 164
  252.  
  253. 5 Advanced Features                                                165
  254.   5.1 The X Window System  . . . . . . . . . . . . . . . . . . . . 165
  255.     5.1.1 Hardware requirements  . . . . . . . . . . . . . . . . . 166
  256.     5.1.2 Installing XFree86 . . . . . . . . . . . . . . . . . . . 168
  257.     5.1.3 Configuring XFree86  . . . . . . . . . . . . . . . . . . 170
  258.     5.1.4 Filling in video card information  . . . . . . . . . . . 178
  259.     5.1.5 Running XFree86  . . . . . . . . . . . . . . . . . . . . 182
  260.     5.1.6 Running into trouble . . . . . . . . . . . . . . . . . . 183
  261.   5.2 Accessing MS-DOS Files . . . . . . . . . . . . . . . . . . . 184
  262.   5.3 Networking with TCP/IP . . . . . . . . . . . . . . . . . . . 185
  263.     5.3.1 Hardware Requirements  . . . . . . . . . . . . . . . . . 186
  264.     5.3.2 Configuring TCP/IP on your system  . . . . . . . . . . . 186
  265.     5.3.3 SLIP Configuration . . . . . . . . . . . . . . . . . . . 194
  266.     5.3.4 Using dip  . . . . . . . . . . . . . . . . . . . . . . . 197
  267.   5.4 Networking with UUCP . . . . . . . . . . . . . . . . . . . . 199
  268.                                                                      v
  269. _______________________________________________________________________
  270.  
  271.   5.5 Electronic Mail  . . . . . . . . . . . . . . . . . . . . . . 200
  272.   5.6 News and USENET  . . . . . . . . . . . . . . . . . . . . . . 200
  273.  
  274. A Sources of Linux Information                                     203
  275.   A.1 Online Documents . . . . . . . . . . . . . . . . . . . . . . 203
  276.   A.2 Linux Documentation Project Manuals  . . . . . . . . . . . . 205
  277.   A.3 Books and Other Published Works  . . . . . . . . . . . . . . 206
  278.     A.3.1 Using UNIX . . . . . . . . . . . . . . . . . . . . . . . 207
  279.     A.3.2 Systems Administration . . . . . . . . . . . . . . . . . 207
  280.     A.3.3 The X Window System  . . . . . . . . . . . . . . . . . . 208
  281.     A.3.4 Programming  . . . . . . . . . . . . . . . . . . . . . . 208
  282.     A.3.5 Kernel Hacking . . . . . . . . . . . . . . . . . . . . . 209
  283. B Linux Vendor List                                                211
  284.  
  285. C FTP Tutorial and Site List                                       214
  286.   C.1 Starting ftp . . . . . . . . . . . . . . . . . . . . . . . . 214
  287.   C.2 Logging In . . . . . . . . . . . . . . . . . . . . . . . . . 215
  288.   C.3 Poking Around  . . . . . . . . . . . . . . . . . . . . . . . 215
  289.   C.4 Downloading files  . . . . . . . . . . . . . . . . . . . . . 217
  290.   C.5 Quitting FTP   . . . . . . . . . . . . . . . . . . . . . . . 219
  291.   C.6 Using ftpmail  . . . . . . . . . . . . . . . . . . . . . . . 220
  292.   C.7 Linux FTP Site List  . . . . . . . . . . . . . . . . . . . . 220
  293. D Linux BBS List                                                   222
  294.   D.1 United States  . . . . . . . . . . . . . . . . . . . . . . . 222
  295.   D.2 Outside of the United States . . . . . . . . . . . . . . . . 224
  296.  
  297. E The GNU General Public License                                   227
  298.   E.1 Preamble . . . . . . . . . . . . . . . . . . . . . . . . . . 227
  299.   E.2 Terms  and  Conditions  for  Copying,   Distribution,  and
  300.     Modification  . . . . . . . . . . . . . . . . . . . . . . . .  228
  301.   E.3 Appendix:  How to Apply These Terms to Your New Programs . . 233
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311. Preface
  312.  
  313.  
  314.  
  315. ``You are in a maze of twisty little passages, all alike.''
  316.   Before you looms  one of the  most complex and utterly  intimidating
  317. systems ever written.   Linux,  the free UNIX  clone for the  personal
  318. computer, produced by a mishmash team of UNIX gurus, hackers,  and the
  319. occasional loon.   The system itself  reflects this complex  heritage,
  320. and although the development of Linux may appear to be  a disorganized
  321. volunteer effort, the system  is powerful, fast,  and free.   It is  a
  322. true 32-bit operating system solution.
  323.   My  own experiences  with  Linux began  several  years ago,  when  I
  324. sat down  to  figure out  how  to  install the  only  ``distribution''
  325. available at the time---a couple  of diskettes made available by  H.J.
  326. Lu.   I  downloaded a  slew  of files  and read  pages  upon pages  of
  327. loosely-organized installation notes.   Somehow, I managed to  install
  328. this basic  system and  get everything  working together.    This  was
  329. long before you could buy the Linux software on CD-ROM  from worldwide
  330. distributors; before, in fact, Linux even knew how to  access a CD-ROM
  331. drive.   This  was before  XFree86,  before Emacs,  before  commercial
  332. software support,  and before  Linux became  a true  rival to  MS-DOS,
  333. Microsoft Windows, and OS/2 in the personal computer market.
  334.   You hold in  your very hands the map  and guidebook to the  world of
  335. Linux.  It is my hope that this book will help you to get rolling with
  336. what I consider to be the fastest, most powerful  operating system for
  337. the personal computer.    Setting up your  own Linux  system can be  a
  338. great deal of fun---so grab a cup of coffee, sit back, and read on.
  339.   Grab a cup for  me, too, while you're at  it.  I've been  up hacking
  340. Linux for days.
  341.  
  342.  
  343. Audience
  344.  
  345. This book is for any personal  computer user who wants to  install and
  346. use Linux on their system.   We assume  that you have basic  knowledge
  347. about personal  computers and  operating systems  such  as MS-DOS.  No
  348. previous knowledge about Linux or UNIX is assumed.
  349.   Despite this,  we strongly suggest that  UNIX novices invest in  one
  350. of the many good UNIX books out there.  Several of them  are listed in
  351. Appendix A.
  352.  
  353.  
  354.  
  355.  
  356.                                   vi
  357.                                                                    vii
  358. _______________________________________________________________________
  359.  
  360. Organization
  361.  
  362. This book contains the following chapters.
  363.   Chapter 1,  Introduction to Linux,  gives a general introduction  to
  364. what Linux is, what it can do for you, and what is required  to run it
  365. on your system.  It  also provides helpful hints for getting  help and
  366. reducing overall stress.
  367.   Chapter 2,  Obtaining and Installing Linux,  explains how to  obtain
  368. the Linux software, as well as how to install it---from repartitioning
  369. your drive,  creating filesystems,  and  loading the  software on  the
  370. system.    It  contains  instructions  meant to  be  general  for  any
  371. distribution of Linux,  and relies on  the documentation provided  for
  372. your particular release to fill in any gaps.
  373.   Chapter 3, Linux Tutorial,  is a complete introduction to  using the
  374. Linux system for UNIX novices.  If you have  previous UNIX experience,
  375. most of this material should be familiar.
  376.   Chapter 4, System  Administration, introduces many of  the important
  377. concepts of system  administration under  Linux.   This  will also  be
  378. of interest to UNIX system  administrators who want to know  about the
  379. Linux-specific issues of running a system.
  380.   Chapter 5, Advanced Features,  introduces the reader to a  number of
  381. advanced features supported by Linux, such as the X  Window System and
  382. TCP/IP networking.   A  complete guide to  configuring XFree86-3.1  is
  383. included.
  384.   Appendix A,  Sources of  Linux Information,  is a  listing of  other
  385. sources of  information  about Linux,  including  newsgroups,  mailing
  386. lists, online documents, and books.
  387.   Appendix B,  Linux Vendor List,  provides a  short list of  software
  388. vendors offering Linux software and services.
  389.   Appendix  C,  FTP  Tutorial  and  Site  List,   is  a  tutorial  for
  390. downloading files  from  the Internet  with  FTP. This  appendix  also
  391. includes a listing of FTP archive sites which carry Linux software.
  392.   Appendix D, Linux BBS  List, is a listing of bulletin  board systems
  393. worldwide which carry Linux software.  Because most Linux users are do
  394. not have access to the Internet,  it is important that  information on
  395. BBS systems becomes available.
  396.   Appendix E,  The  GNU General  Public License,  contains  a copy  of
  397. the GNU GPL, the license  agreement under which Linux is  distributed.
  398. It is  very  important  that  Linux users  understand  the  GPL;  many
  399. disagreements over the  terms of the  GPL have  been raised in  recent
  400. months.
  401.  
  402.  
  403. Acknowledgments
  404.  
  405. This book has been long in the making, and many people are responsible
  406. for the  outcome.     In  particular,  I would  like  to  thank  Larry
  407. Greenfield and  Karl Fogel  for their  work on  the  first version  of
  408. Chapter 3, and to Lars  Wirzenius for his work  on Chapter 4.   Thanks
  409. to Michael K. Johnson  for his assistance with  the LDP and the  LaTeX
  410.                                                                   viii
  411. _______________________________________________________________________
  412.  
  413. conventions used in this manual, and to Ed Chi, who sent  me a printed
  414. copy of the book for edition.
  415.   Thanks to Melinda A. McBride at SSC, Inc., who  did an excellent job
  416. completing the index for Chapters 3, 4,  and 5.  I would also  like to
  417. thank Andy Oram, Lar Kaufman, and Bill Hahn at O'Reilly and Associates
  418. for their assistance with the Linux Documentation Project.
  419.   Thanks to  Linux Systems Labs,  Morse Telecommunications,  Yggdrasil
  420. Computing, and  others for their  support of  the Linux  Documentation
  421. Project through sales of this book and other works.
  422.   Much  thanks to  the many  activists,  including (in  no  particular
  423. order) Linus Torvalds, Donald Becker,  Alan Cox, Remy Card,  Ted T'so,
  424. H.J. Lu, Ross Biro, Drew Eckhardt,  Ed Carp, Eric Youngdale,  Fred van
  425. Kempen, Steven Tweedie, and  a score of  others, for devoting so  much
  426. time and energy to  this project, and  without whom there wouldn't  be
  427. anything to write a book about.
  428.   Special thanks to the myriad of readers who  have sent their helpful
  429. comments and corrections.  There are  far too many to list here.   Who
  430. needs a spell checker, when you have an audience?
  431.  
  432.                                                             Matt Welsh
  433.                                                        13 January 1994
  434.  
  435.  
  436. Credits and Legalese
  437.  
  438. The  Linux  Documentation  Project  is   a  loose  team  of   writers,
  439. proofreaders, and editors who are working on a set of definitive Linux
  440. manuals.  The overall coordinator of the project is Matt  Welsh, aided
  441. by Lars Wirzenius and Michael K. Johnson.
  442.   This  manual is  but  one in  a  set  of several  being  distributed
  443. by the Linux  Documentation Project, including  a Linux User's  Guide,
  444. System Administrator's  Guide,  and  Kernel  Hacker's Guide.     These
  445. manuals are  all  available  in  LaTeX source  format  and  Postscript
  446. output for  anonymous  FTP  from  sunsite.unc.edu,  in  the  directory
  447. /pub/Linux/docs/LDP.
  448.   We encourage anyone with  a penchant for writing or editing  to join
  449. us in improving  Linux documentation.    If you  have Internet  e-mail
  450. access, you can  join the DOC channel  of the Linux-Activists  mailing
  451. list by sending mail to
  452.  
  453.     linux-activists-request@niksula.hut.fi
  454.  
  455. with the line
  456.  
  457.     X-Mn-Admin:  join DOC
  458.  
  459. as the first line of the message body.
  460.   Feel free to  get in touch with  the author and coordinator of  this
  461. manual if you have questions, postcards, money, or ideas.   Matt Welsh
  462. can be reached via Internet e-mail at mdw@sunsite.unc.edu, and in real
  463.                                                                     ix
  464. _______________________________________________________________________
  465.  
  466. life at
  467.  
  468.     205 Gray Street
  469.     Wilson, N.C. 27896
  470.     U.S.A.
  471.                                                                      x
  472. _______________________________________________________________________
  473.  
  474. UNIX is a trademark of X/Open.
  475. Linux is not a trademark, and has no connection to UNIXTM or X/Open.
  476. The X Window System is  a trademark of the Massachusetts  Institute of
  477. Technology.
  478. MS-DOS and Microsoft Windows are trademarks of Microsoft, Inc.
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493. Copyright cO1992--1994  Matt Welsh
  494. 205 Gray Street NE, Wilson NC, 27893 USA
  495. mdw@sunsite.unc.edu
  496.  
  497. Linux  Installation  and  Getting   Started  may  be  reproduced   and
  498. distributed, in whole or in part, subject to the following conditions:
  499.  
  500. 0.  The copyright  notice above  and this  permission  notice must  be
  501.     preserved complete on all complete or partial copies.
  502.  
  503. 1.  Any translation  or  derivative  work of  Linux  Installation  and
  504.     Getting Started must be approved  by the author in  writing before
  505.     distribution.
  506.  
  507. 2.  If you distribute Linux Installation and Getting Started  in part,
  508.     instructions for  obtaining the  complete version  of this  manual
  509.     must be included,  and a  means for  obtaining a complete  version
  510.     provided.
  511.  
  512. 3.  Small portions may be  reproduced as illustrations for reviews  or
  513.     quotes in other  works without  this permission  notice if  proper
  514.     citation is given.
  515.  
  516. 4.  The GNU General Public License referenced below may  be reproduced
  517.     under the conditions given within it.
  518.  
  519. 5.  Several  sections  of  this  document  are  held   under  separate
  520.     copyright.    When  these  sections are  covered  by  a  different
  521.     copyright, the separate  copyright is  noted.   If you  distribute
  522.     Linux Installation  and Getting  Started in  part,  and that  part
  523.     is, in  whole,  covered under  a  separate, noted  copyright,  the
  524.     conditions of that copyright apply.
  525.                                                                     xi
  526. _______________________________________________________________________
  527.  
  528.   Exceptions   to   these  rules   may   be   granted   for   academic
  529. purposes:   Write  to Matt  Welsh,  at  the above  address,  or  email
  530. mdw@sunsite.unc.edu, and ask.  These restrictions are here  to protect
  531. us as authors, not to restrict you as educators and learners.
  532.   The author encourages  distributors of Linux software in  any medium
  533. to use the  book as an  installation and new  user guide.   Given  the
  534. copyright above, you are free  to print and distribute copies  of this
  535. book with your software.  You may either distribute this  book free of
  536. charge, or for profit.  If  doing so, you may wish to include  a short
  537. ``installation supplement'' for your release.
  538.   The  author  would  like  to  know  of  any  plans  to  publish  and
  539. distribute this book commercially.   In this  way, we can ensure  that
  540. you are kept up-to-date with new revisions.  And, should a new version
  541. be right around the corner,  you might wish to delay  your publication
  542. of the book until it is available.
  543.   If  you   are  distributing  this   book  commercially,   donations,
  544. royalties,  and/or printed  copies  are  greatly  appreciated  by  the
  545. author.  Contributing in this way shows your support for free software
  546. and the Linux Documentation Project.
  547.  
  548. All source code in  Linux Installation and  Getting Started is  placed
  549. under the GNU General Public  License.  See  Appendix E for a copy  of
  550. the GNU ``GPL.''
  551.  
  552.  
  553. Documentation Conventions
  554.  
  555. These conventions should be obvious,  but we'll include them  here for
  556. the pedantic.
  557.  
  558. Bold       Used  to mark  new concepts,  WARNINGS, and  keywords in  a
  559.            language.
  560.  
  561. italics    Used for  emphasis in text, and occasionally for  quotes or
  562.            introductions at the beginning of a section.   Also used to
  563.            indicate commands for the user to  type when showing screen
  564.            interaction (see below).
  565. <slanted>  Used  to mark  meta-variables in  the text,  especially  in
  566.            representations of the command line.  For example,
  567.  
  568.  
  569.                ls -l <foo>
  570.  
  571.            where  <foo>  would  ``stand  for''  a  filename,  such  as
  572.            /bin/cp.
  573.  
  574. Typewriter Used to represent screen interaction, as in
  575.  
  576.  
  577.                $ ls --l /bin/cp
  578.                -rwxr-xr-
  579.                                                                    xii
  580. _______________________________________________________________________
  581.  
  582.                x  1 root    wheel    12104 Sep 25 15:53 /bin/cp
  583.  
  584.  
  585.            Also used for code examples, whether it  is C code, a shell
  586.            script,  or something else,  and to display general  files,
  587.            such as configuration files.   When necessary for clarity's
  588.            sake,  these examples or figures  will be enclosed in  thin
  589.            boxes.
  590. [Key]      Represents a key  to press.  You will often see it  in this
  591.            form:
  592.  
  593.  
  594.                Press [return] to continue.
  595.  
  596. !          A  diamond in the  margin, like  a black  diamond on a  ski
  597.            hill,  marks ``danger''  or ``caution.''   Read  paragraphs
  598.            marked this way carefully.
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607. Chapter 1
  608.  
  609.  
  610.  
  611.  
  612. Introduction to Linux
  613.  
  614.  
  615.  
  616. Linux is  quite  possibly  the  most  important  achievement  of  free
  617. software since the original Space War,  or, more recently, Emacs.   It
  618. has developed into the operating system for businesses, education, and
  619. personal productivity.  Linux is  no longer just for UNIX  wizards who
  620. sit for hours in front of the glowing console (although  we assure you
  621. that quite a number of users fall into this category).  This book will
  622. help you get the most out of it.
  623.   Linux  (pronounced with  a short  i,  as in  LIH-nucks)  is a  clone
  624. of the  UNIX operating  system  that runs  on  Intel 80386  and  80486
  625. computers.    It  supports a  wide  range  of software,  from  TeX  to
  626. X Windows to the GNU C/C++ compiler to TCP/IP.  It's a versatile, bona
  627. fide implementation of UNIX,  freely distributed by  the terms of  the
  628. GNU General Public License (see Appendix E).
  629.   Linux can  turn any  386 or  486 PC  into a  workstation.   It  will
  630. give you the full power  of UNIX at your  fingertips.  Businesses  are
  631. installing Linux on entire networks  of machines, using the  operating
  632. system to manage  financial and hospital  records, a distributed  user
  633. computing environment,  telecommunications, and  more.    Universities
  634. worldwide are using  Linux for teaching  courses on operating  systems
  635. programming and  design.     And,  of  course,  computing  enthusiasts
  636. everywhere are using Linux at home, for programming, productivity, and
  637. all-around hacking.
  638.   What makes Linux  so different is that  it is a free  implementation
  639. of UNIX.  It was  and still  is developed  by a  group of  volunteers,
  640. primarily on the Internet, exchanging code, reporting bugs, and fixing
  641. problems in an open-ended environment.   Anyone is welcome to  join in
  642. the Linux development effort:  all  it takes is interest in  hacking a
  643. free UNIX clone and some kind of programming know-how.   The book that
  644. you hold in your hands is your tour guide.
  645.  
  646. 1.1 About This Book
  647.  
  648. This book  is  an installation  and  entry-level  guide to  the  Linux
  649. system.   The purpose  is to  get new users  up and  running with  the
  650. system by consolodating  as much important  material as possible  into
  651.  
  652.  
  653.                                   1
  654. 1.1.   About This Book                                               2
  655. _______________________________________________________________________
  656.  
  657. one book.  Instead of covering many of the volatile technical details,
  658. those things which tend to change with rapid development,  we give you
  659. enough background to find out more on your own.
  660.   Linux is  not difficult to install  and use.   However, as with  any
  661. implementation of UNIX, there  is often some  black magic involved  to
  662. get everything working correctly.  We hope that this book will get you
  663. on the Linux tourbus and show you how groovy this operating system can
  664. be.
  665.   In this book, we cover the following topics.
  666.  
  667.  o  What is Linux?  The design and philosophy of this unique operating
  668.     system, and what it can do for you.
  669.  
  670.  o  All of  the details  of what  is needed  to run  Linux,  including
  671.     suggestions on what kind of hardware configuration  is recommended
  672.     for a complete system.
  673.  
  674.  o  How to obtain  and install Linux.    There are many  distributions
  675.     of  the  Linux  software.     We  present  a   general  discussion
  676.     of  Linux  software  distributions,   how  to  obtain  them,   and
  677.     generic instructions for installing the software (which  should be
  678.     applicable to any distribution).
  679.  
  680.     This edition also contains specific instructions for the Slackware
  681.     distribution of Linux.
  682.  
  683.  o  A brief introductory UNIX tutorial, for those users who have never
  684.     had experience with UNIX before.  This tutorial should, hopefully,
  685.     provide enough material for complete novices to have  enough basic
  686.     know-how to find their way around the system.
  687.  
  688.  o  An introduction to systems administration with Linux.  This covers
  689.     the most important tasks  that new Linux administrators will  need
  690.     to be familiar with, such as creating users, managing filesystems,
  691.     and so forth.
  692.  
  693.  o  Information on configuring  more advanced aspects  of Linux,  such
  694.     as the X Window System,  networking with TCP/IP and SLIP,  and the
  695.     setup of electronic mail and news systems.
  696.  
  697.   This book is for  the personal computer user wishing to  get started
  698. with Linux.  We don't  assume previous UNIX experience, but  do expect
  699. novices to  refer  to  other materials  along  the  way.    For  those
  700. unfamiliar with UNIX, a list of useful sources of information is given
  701. in Appendix A.  In general,  this book is meant to be read  along with
  702. another book on basic UNIX concepts.
  703. 1.2.   A Brief History of Linux                                      3
  704. _______________________________________________________________________
  705.  
  706. 1.2 A Brief History of Linux
  707.  
  708. UNIX is one of the most popular operating systems worldwide because of
  709. its large support base and distribution.  It was  originally developed
  710. as a  multitasking  system for  minicomputers  and mainframes  in  the
  711. mid-1970's, but has since grown to become one of the  most widely used
  712. operating systems anywhere, despite its sometimes  confusing interface
  713. and lack of central standardization.
  714.   The real  reason  for UNIX's  popularity?   Many  hackers feel  that
  715. UNIX is the Right Thing---the One  True Operating System.  Hence,  the
  716. development of Linux by an expanding group of UNIX hackers who want to
  717. get their hands dirty with their own system.
  718.   Versions  of UNIX  exist for  many  systems---ranging from  personal
  719. computers to supercomputers such as the  Cray Y-MP.  Most  versions of
  720. UNIX for personal computers  are quite expensive  and cumbersome.   At
  721. the time of this writing, a one-machine version of AT&T's System V for
  722. the 386 runs at about US$1500.
  723.   Linux is a freely distributable version of  UNIX developed primarily
  724. by Linus Torvalds (1) at the University of Helsinki in Finland.  Linux
  725. was developed  with the  help  of many  UNIX programmers  and  wizards
  726. across the Internet, allowing anyone with enough know-how and gumption
  727. the ability  to develop  and  change the  system.    The Linux  kernel
  728. uses no code from  AT&T or any other  proprietary source, and much  of
  729. the software available for  Linux is developed  by the GNU project  at
  730. the Free Software  Foundation in Cambridge,  Massachusetts.   However,
  731. programmers all over the world have contributed to the growing pool of
  732. Linux software.
  733.   Linux  was  originally  developed  as  a  hobby   project  by  Linus
  734. Torvalds.   It was inspired  by Minix, a  small UNIX system  developed
  735. by Andy Tanenbaum,  and   the first  discussions about  Linux were  on
  736. the USENET newsgroup comp.os.minix.  These discussions  were concerned
  737. mostly with the development of a small, academic UNIX system for Minix
  738. users who wanted more.
  739.   The very  early development  of Linux  was mostly  dealing with  the
  740. task-switching features  of the  80386 protected-mode  interface,  all
  741. written in assembly code.  Linus writes,
  742.  
  743.      ``After that it  was plain sailing:  hairy coding still,  but
  744.     I had some devices, and debugging was easier.  I started using
  745.     C at  this stage,  and it  certainly  speeds up  developement.
  746.     This is also when I start to get serious about my megalomaniac
  747.     ideas to make `a better Minix  than Minix'.  I was  hoping I'd
  748.     be able to recompile gcc under Linux some day...
  749.      ``Two months for  basic setup, but then only slightly  longer
  750.     until I had  a disk-driver (seriously  buggy, but it  happened
  751.     to work  on my  machine) and  a small  filesystem.   That  was
  752.     about when I made 0.01 available [around late August of 1991]:
  753.  
  754. ----------------------------
  755.  1. torvalds@kruuna.helsinki.fi.
  756. 1.2.   A Brief History of Linux                                      4
  757. _______________________________________________________________________
  758.  
  759.     it wasn't pretty,  it had  no floppy driver,  and it  couldn't
  760.     do much anything.   I don't  think anybody ever compiled  that
  761.     version.  But by  then I was hooked,  and didn't want to  stop
  762.     until I could chuck out Minix.''
  763.  
  764.   No  announcement  was  ever made  for  Linux  version  0.01.     The
  765. 0.01 sources weren't even  executable:  they  contained only the  bare
  766. rudiments of the kernel source, and  assumed that you had access  to a
  767. Minix machine to compile and play with them.
  768.   On 5  October 1991, Linus  announced the first ``official''  version
  769. of Linux, version 0.02.   At  this point, Linus  was able to run  bash
  770. (the GNU Bourne  Again Shell) and  gcc (the GNU  C compiler), but  not
  771. very much else was working.   Again,  this was intended as a  hacker's
  772. system.  The primary focus was kernel development---none of the issues
  773. of user support, documentation, distribution, and so on had  even been
  774. addressed.   Today, the  Linux community  still seems  to treat  these
  775. ergonomic issues  as secondary  to  the ``real  programming''---kernel
  776. development.
  777.   Linus wrote in comp.os.minix,
  778.  
  779.      ``Do you pine for  the nice days of Minix-1.1, when  men were
  780.     men and wrote  their own device  drivers?   Are you without  a
  781.     nice project and just dying to cut your teeth on a  OS you can
  782.     try to modify for your needs?  Are you finding  it frustrating
  783.     when everything works on Minix?  No more all-nighters to get a
  784.     nifty program working?  Then this post might be just for you.
  785.      ``As  I  mentioned  a  month  ago,  I'm  working  on  a  free
  786.     version of a  Minix-lookalike for  AT-386 computers.   It  has
  787.     finally reached the stage where  it's even usable (though  may
  788.     not be  depending on  what  you want),  and  I am  willing  to
  789.     put out  the sources  for  wider distribution.    It  is  just
  790.     version 0.02...but I've successfully  run bash, gcc, gnu-make,
  791.     gnu-sed, compress, etc.  under it.''
  792.  
  793.   After version 0.03, Linus  bumped the version number up to  0.10, as
  794. more people started  to work  on the  system.   After several  further
  795. revisions, Linus increased the version number to 0.95, to  reflect his
  796. expectation that  the system  was ready  for  an ``official''  release
  797. very soon.   (Generally, software is  not assigned the version  number
  798. 1.0 until it  is theoretically  complete or  bug-free.)   This was  in
  799. March of 1992.   Almost a year and a  half later, in late  December of
  800. 1993, the Linux kernel was still at version 0.99.pl14---asymptotically
  801. approaching 1.0.  As of  the time of this writing, the  current kernel
  802. version is 1.1 patchlevel 52, and 1.2 is right around the corner.
  803.   Today,  Linux  is   a  complete  UNIX  clone,  capable   of  running
  804. X Windows,  TCP/IP, Emacs,  UUCP,  mail and  news software,  you  name
  805. it.  Almost all of  the major free software packages have  been ported
  806. to Linux, and commercial  software is becoming  available.  Much  more
  807. hardware is supported than in original  versions of the kernel.   Many
  808. people have  executed  benchmarks on  80486  Linux systems  and  found
  809. 1.3.   System Features                                               5
  810. _______________________________________________________________________
  811.  
  812. them comparable with mid-range workstations from Sun  Microsystems and
  813. Digital Equipment Corporation.  Who would have ever guessed  that this
  814. ``little'' UNIX clone would have grown up to take on  the entire world
  815. of personal computing?
  816.  
  817.  
  818. 1.3 System Features
  819.  
  820. Linux supports most of the features found in other  implementations of
  821. UNIX, plus quite a few that aren't found elsewhere.  This section is a
  822. nickel tour of the Linux kernel features.
  823.   Linux is a  complete multitasking, multiuser operating  system (just
  824. like all  other versions  of UNIX).  This means  that  many users  can
  825. be logged into  the same  machine at once,  running multiple  programs
  826. simultaneously.
  827.   The  Linux  system  is mostly  compatible  with  a  number  of  UNIX
  828. standards (inasmuch  as  UNIX  has  standards) on  the  source  level,
  829. including IEEE  POSIX.1,  System V,  and  BSD features.        It  was
  830. developed with source portability  in mind:   therefore, you are  most
  831. likely to find commonly-used  features in the  Linux system which  are
  832. shared across multiple  implementations.   A great  deal of free  UNIX
  833. software available on  the Internet  and elsewhere  compiles on  Linux
  834. out of the box.   In addition, all  source code for the Linux  system,
  835. including the kernel,  device drivers, libraries,  user programs,  and
  836. development tools, is freely distributable.
  837.   Other  specific  internal  features  of  Linux   include  POSIX  job
  838. control (used by shells  such as csh  and bash), pseudoterminals  (pty
  839. devices), and  support  for  national or  customized  keyboards  using
  840. dynamically-loadable keyboard drivers.    Linux also supports  virtual
  841. consoles, which allow  you to switch  between multiple login  sessions
  842. from the system console in text mode.  Users of the ``screen'' program
  843. will find the Linux virtual console implementation familiar.
  844.   The kernel is able  to emulate 387-FPU instructions itself,  so that
  845. systems without  a  math coprocessor  can  run programs  that  require
  846. floating-point math instructions.
  847.   Linux supports various filesystem  types for storing data.   Various
  848. filesystems,  such as  the  ext2fs  filesystem,  have  been  developed
  849. specifically for Linux.  Other  filesystem types, such as  the Minix-1
  850. and Xenix filesystems, are also supported.  The  MS-DOS filesystem has
  851. been implemented as well, allowing you to access MS-DOS  files on hard
  852. drive or floppy directly.  The ISO 9660 CD-ROM filesystem  type, which
  853. reads all standard formats of CD-ROMs, is also supported.   We'll talk
  854. more about filesystems in Chapters 2 and 4.
  855.   Linux  provides  a complete  implementation  of  TCP/IP  networking.
  856. This includes device  drivers for  many popular  Ethernet cards,  SLIP
  857. (Serial Line  Internet  Protocol,  allowing  you to  access  a  TCP/IP
  858. network via  a  serial  connection),   PLIP  (Parallel  Line  Internet
  859. Protocol), PPP (Point-to-Point Protocol),  NFS (Network File  System),
  860. and so on.    The complete  range of  TCP/IP clients  and services  is
  861. supported, such as FTP, telnet, NNTP, and SMTP. We'll  talk more about
  862. networking in Chapter 5.
  863. 1.4.   Software Features                                             6
  864. _______________________________________________________________________
  865.  
  866.   The Linux  kernel  is developed  to use  the special  protected-mode
  867. features of the  Intel 80386  and 80486  processors.   In  particular,
  868. Linux  makes  use  of   the  protected-mode  descriptor-based   memory
  869. management paradigm and many of  the other advanced features of  these
  870. processors.   Anyone  familiar with  80386 protected-mode  programming
  871. knows that this chip  was designed for  a multitasking system such  as
  872. UNIX (or, actually, Multics).  Linux exploits this functionality.
  873.   The Linux  kernel supports  demand-paged loaded executables.    That
  874. is, only  those segments  of a  program  which are  actually used  are
  875. read into memory  from disk.    Also, copy-on-write  pages are  shared
  876. among executables, meaning that if several instances of a  program are
  877. running at once, they  will share pages  in physical memory,  reducing
  878. overall memory usage.
  879.   In order  to increase  the amount  of available  memory, Linux  also
  880. implements disk  paging:   that  is,  up to  256 megabytes  of  ``swap
  881. space''(2) can  be  allocated on  disk.    When  the  system  requires
  882. more physical memory, it  will swap out  inactive pages to disk,  thus
  883. allowing you  to run  larger applications  and support  more users  at
  884. once.  However,  swap is no substitute  for physical RAM---it is  much
  885. slower due to drive access latency times.
  886.   The kernel also implements  a unified memory pool for  user programs
  887. and disk cache.  In this way, all free memory is used for caching, and
  888. the cache is reduced when running large programs.
  889.   Executables use  dynamically linked shared  libraries, meaning  that
  890. executables share common library code  in a single library file  found
  891. on disk, not unlike the SunOS  shared library mechanism.   This allows
  892. executable files to occupy much  less space on disk,  especially those
  893. that use many  library functions.   There  are also  statically-linked
  894. libraries for  those who  wish  to use  object debugging  or  maintain
  895. ``complete'' executables without the need  for shared libraries to  be
  896. in place.  Linux shared libraries are dynamically linked  at run-time,
  897. allowing the programmer to replace modules of the libraries with their
  898. own routines.
  899.   To  facilitate debugging,  the  Linux  kernel  does core  dumps  for
  900. post-mortem analysis.  Using a core dump and an executable linked with
  901. debugging support, it is possible  to determine what caused  a program
  902. to crash.
  903.  
  904.  
  905. 1.4 Software Features
  906.  
  907. In this  section,   we'll  introduce  you  to  many  of  the  software
  908. applications available for Linux,  and talk about  a number of  common
  909. computing tasks.  After all, the most important part of  the system is
  910. ----------------------------
  911.  2. Swap space  is inappropriately  named:  entire  processes are  not
  912. swapped, but rather individual pages.  Of course, in many cases entire
  913. processes will be swapped out, but this is not neccessarily always the
  914. case.
  915. 1.4.   Software Features                                             7
  916. _______________________________________________________________________
  917.  
  918. the wide range of software  available for it.   The fact that most  of
  919. this software is freely distributable is even more impressive.
  920.  
  921. 1.4.1 Basic commands and utilities
  922.  
  923. Virtually every  utility that  you would  expect to  find on  standard
  924. implementations of UNIX has been ported to Linux.  This includes basic
  925. commands such as ls,  awk, tr,  sed, bc, more,  and so on.   You  name
  926. it, Linux has  it.   Therefore, you can  expect your familiar  working
  927. environment on other  UNIX systems  to be  duplicated on Linux.    All
  928. of the  standard commands  and utilities  are there.    (Novice  Linux
  929. users should see  Chapter 3 for  an introduction  to these basic  UNIX
  930. commands.)
  931.   Many text editors  are available, including vi,  ex, pico, jove,  as
  932. well as GNU Emacs and variants such as Lucid Emacs (which incorporates
  933. extensions for use  under X Windows)  and joe.   Whatever text  editor
  934. you're accustomed to using has more than likely been ported  to Linux.
  935.  
  936.   The choice of a text editor is an interesting one.   Many UNIX users
  937. still use ``simple''  editors such as  vi (in  fact, the author  wrote
  938. this book using vi  under Linux).   However, vi has many  limitations,
  939. due to  its  age,  and  more  modern (and  complex)  editors  such  as
  940. Emacs are gaining popularity.   Emacs  supports a complete  LISP-based
  941. macro language and interpreter, a  powerful command syntax, and  other
  942. fun-filled extensions.   Emacs macro  packages exist  to allow you  to
  943. read electronic  mail  and news,  edit  the contents  of  directories,
  944. and even engage in  an artificially intelligent psychotherapy  session
  945. (indispensible for stressed-out Linux hackers).
  946.   One  interesting note  is that  most of  the  basic Linux  utilities
  947. are GNU software.   These GNU utilities support advanced  features not
  948. found in the standard  versions from BSD  or AT&T. For example,  GNU's
  949. version of the vi editor, elvis, includes a structured  macro language
  950. which differs from  the original  AT&T implementation.   However,  the
  951. GNU utilities strive to remain compatible with their BSD and  System V
  952. counterparts.  Many people consider the GNU versions of these programs
  953. superior to the originals.
  954.   The  most important  utility  to  many users  is  the  shell.    The
  955. shell is  a  program  which  reads  and  executes  commands  from  the
  956. user.  In addition, many  shells provide features such as  job control
  957. (allowing the user to manage  several running processes at  once---not
  958. as Orwellian  as  it sounds),  input  and output  redirection,  and  a
  959. command language for writing shell scripts.  A shell script  is a file
  960. containing a program  in the  shell command language,  analogous to  a
  961. ``batch file'' under MS-DOS.
  962.   There are  many  types of  shells available  for Linux.    The  most
  963. important difference  between shells  is the  command language.    For
  964. example, the C Shell (csh)  uses a command language somewhat  like the
  965. C programming language.   The  classic Bourne  Shell uses a  different
  966. command language.   One's  choice of  a shell  is often  based on  the
  967. command language that it provides.  The shell that you use defines, to
  968. 1.4.   Software Features                                             8
  969. _______________________________________________________________________
  970.  
  971. some extent, your working environment under Linux.
  972.   No matter what  shell you're accustomed to,  some version of it  has
  973. probably been ported  to Linux.   The  most popular  shell is the  GNU
  974. Bourne Again Shell (bash), a Bourne shell variant which  includes many
  975. advanced features, such as job  control, command history, command  and
  976. filename completion, an Emacs-like  interface for editing the  command
  977. line, and powerful extensions  to the standard Bourne shell  language.
  978. Another popular shell is tcsh, a version of the C  Shell with advanced
  979. functionality similar to  that found in  bash.   Other shells  include
  980. zsh, a small Bourne-like shell;  the Korn shell (ksh); BSD's ash;  and
  981. rc, the Plan 9 shell.
  982.   What's so important  about these basic utilities?   Linux gives  you
  983. the unique opportunity to tailor a  custom system to your needs.   For
  984. example, if  you're the  only person  who uses  your  system, and  you
  985. prefer to  exclusively use  the vi  editor,  and bash  as your  shell,
  986. there's no reason to  install other editors  or shells.   The ``do  it
  987. yourself'' attitude is prevalent among Linux hackers and users.
  988.  
  989. 1.4.2 Text processing and word processing
  990.  
  991. Almost every  computer user  has  a need  for  some kind  of  document
  992. preparation system.   (How many computer  enthusiasts do you know  who
  993. still use pen and paper?   Not many, we'll  wager.)  In the  PC world,
  994. word processing is  the norm:   it involves  editing and  manipulating
  995. text (often  in  a ``What-You-See-Is-What-You-Get''  environment)  and
  996. producing printed copies of the  text, complete with figures,  tables,
  997. and other garnishes.
  998.   In  the UNIX  world,  text processing  is  much more  common,  which
  999. is quite  different than  the classical  concept  of word  processing.
  1000. With a text  processing system, text  is entered  by the author  using
  1001. a ``typesetting language'',  which describes  how the  text should  be
  1002. formatted.    Instead of  entering  the  text within  a  special  word
  1003. processing environment,  the  source may  be  modified with  any  text
  1004. editor such as vi or Emacs.  Once the source text  (in the typesetting
  1005. language) is  complete, the  user  formats the  text  with a  separate
  1006. program, which converts the source to a format suitable  for printing.
  1007. This is somewhat analogous to programming in a language such as C, and
  1008. ``compiling'' the document into a printable form.
  1009.   There are many text processing systems available for Linux.   One is
  1010. groff, the GNU version of the classic nroff text  formatter originally
  1011. developed by Bell Labs and still used on many UNIX  systems worldwide.
  1012. Another modern  text processing  system is  TeX,  developed by  Donald
  1013. Knuth of computer science fame.   Dialects of TeX, such as  LaTeX, are
  1014. also available.
  1015.   Text processors such  as TeX and groff  differ mostly in the  syntax
  1016. of their formatting languages.   The  choice of one formatting  system
  1017. over another  is  also based  upon  what  utilities are  available  to
  1018. satisfy your needs, as well as personal taste.
  1019.   For example, some  people consider the groff formatting  language to
  1020. be a bit obscure, so they  use TeX, which is more readable  by humans.
  1021. 1.4.  Software Features                                              9
  1022. _______________________________________________________________________
  1023.  
  1024. However, groff is capable of producing plain ASCII output, viewable on
  1025. a terminal, while TeX is  intended primarily for output to  a printing
  1026. device.  However, various  programs exist to produce plain  ASCII from
  1027. TeX-formatted documents, or to convert TeX to groff, for example.
  1028.   Another text processing system is texinfo, an extension  to TeX used
  1029. for software documentation by the  Free Software Foundation.   texinfo
  1030. is capable of  producing a  printed document,  or an  online-browsable
  1031. hypertext ``Info'' document from a single source file.  Info files are
  1032. the main format of documentation used by GNU software such as Emacs.
  1033.   Text  processors are  used  widely in  the computing  community  for
  1034. producing papers, theses, magazine articles, and books (in  fact, this
  1035. book was  produced using  LaTeX). The  ability to  process the  source
  1036. language as  a plain  text  file opens  the  door to  many  extensions
  1037. to the  text processor  itself.    Because  source documents  are  not
  1038. stored in  an  obscure format,  readable  only  by a  particular  word
  1039. processor, programmers are able  to write parsers and translators  for
  1040. the formatting language, extending the system.
  1041.   What  does such  a  formatting language  look  like?    In  general,
  1042. the formatting language  source consists  mostly of  the text  itself,
  1043. along with ``control codes'' to  produce a particular effect,  such as
  1044. changing fonts, setting margins, creating lists, and so on.
  1045.   As an example, take the following text:
  1046.  
  1047.     Mr.  Torvalds:
  1048.  
  1049.     We are  very  upset  with  your  current  plans  to  implement
  1050.     post-hypnotic suggestion in  the Linux  terminal driver  code.
  1051.     We feel this way for three reasons:
  1052.  
  1053.  
  1054.     1.  Planting subliminal messages in the terminal driver is not
  1055.         only immoral, it is a waste of time;
  1056.  
  1057.     2.  It has been proven that ``post-hypnotic  suggestions'' are
  1058.         ineffective when used upon unsuspecting UNIX hackers;
  1059.  
  1060.     3.  We have already implemented high-voltage electric  shocks,
  1061.         as a security measure, in the code for login.
  1062.  
  1063.  
  1064.     We hope you will reconsider.
  1065.  
  1066.   This  text would  appear in  the LaTeX  formatting  language as  the
  1067. following:
  1068.  
  1069.     \begin{quote}
  1070.     Mr. Torvalds:
  1071.  
  1072.     We are very upset with your current plans to  implement {\em post-
  1073.     hypnotic
  1074. 1.4.   Software Features                                            10
  1075. _______________________________________________________________________
  1076.  
  1077.     suggestion\/}      in      the       {\bf      Linux}       termi-
  1078.     nal driver code. We feel this
  1079.     way for three reasons:
  1080.     \begin{enumerate}
  1081.     \item    Planting    subliminal     messages    in    the     ker-
  1082.     nel driver is not only
  1083.           immoral, it is a waste of time;
  1084.     \item  It   has   been   proven   that   ``post-hypnotic   sugges-
  1085.     tions'' are ineffective
  1086.           when used upon unsuspecting UNIX hackers;
  1087.     \item   We   have    already   implemented   high-voltage    elec-
  1088.     tric shocks, as a
  1089.           security measure, in the code for {\tt login}.
  1090.     \end{enumerate}
  1091.     We hope you will reconsider.
  1092.     \end{quote}
  1093.  
  1094.   The author enters the  above ``source'' text using any  text editor,
  1095. and generates  the  formatted output  by  processing the  source  with
  1096. LaTeX. At  first glance,  the typesetting  language may  appear to  be
  1097. obscure, but  it's  actually  quite easy  to  learn.    Using  a  text
  1098. processing system enforces typographical standards when writing.   For
  1099. example, all enumerated  lists within a document  will look the  same,
  1100. unless the  author  modifies the  definition  of the  enumerated  list
  1101. ``environment''.    The  primary  goal  is  to  allow  the  author  to
  1102. concentrate on  writing the  actual text,  instead  of worrying  about
  1103. typesetting conventions.
  1104.   WYSIWYG  word  processors are  attractive  for  many  reasons;  they
  1105. provide a  powerful  (and  sometimes  complex)  visual  interface  for
  1106. editing the document.   However, this interface is  inherently limited
  1107. to those aspects of text layout which are accessible to the user.  For
  1108. example, many word  processors provide  a special ``format  language''
  1109. for producing complicated expressions  such as mathematical  formulae.
  1110. This is identical text processing, albeit on a much smaller scale.
  1111.   The subtle benefit of text processing is that  the system allows you
  1112. to specify exactly what you mean.  Also, text processing systems allow
  1113. you to edit the source  text with any text  editor, and the source  is
  1114. easily converted to other formats.  The tradeoff for  this flexibility
  1115. and power is the lack of a WYSIWYG interface.
  1116.   Many  users of  word processors  are used  to  seeing the  formatted
  1117. text as they edit  it.  On  the other hand,  when writing with a  text
  1118. processor, one generally does not worry about how the text will appear
  1119. when formatted.  The writer learns to expect how the  text should look
  1120. from the formatting commands used in the source.
  1121.   There are programs  which allow you  to view the formatted  document
  1122. on a graphics display before printing.  For example,  the xdvi program
  1123. displays a ``device  independent'' file  generated by  the TeX  system
  1124. under the X Windows  environment.   Other software applications,  such
  1125. as xfig,  provide a  WYSIWYG graphics  interface  for drawing  figures
  1126. and diagrams, which are subsequently converted to the  text processing
  1127. 1.4.   Software Features                                            11
  1128. _______________________________________________________________________
  1129.  
  1130. language for inclusion in your document.
  1131.   Admittedly, text  processors such as  nroff were around long  before
  1132. word processing was available.   However, many people still  prefer to
  1133. use text processing, because it  is more versatile and  independent of
  1134. a graphics environment.   In either case,  the idoc word processor  is
  1135. also available for Linux, and before long we expect  to see commercial
  1136. word processors becoming available as  well.  If you  absolutely don't
  1137. want to give up  word processing for  text processing, you can  always
  1138. run MS-DOS, or some other operating system, in addition to Linux.
  1139.   There are  many other  text-processing-related utilities  available.
  1140. The powerful METAFONT  system, used  for designing fonts  for TeX,  is
  1141. included with the Linux  port of TeX.  Other programs include  ispell,
  1142. an interactive  spell  checker  and  corrector;  makeindex,  used  for
  1143. generating indicies in  LaTeX documents;  as  well as  many groff  and
  1144. TeX-based macro packages  for formatting many  types of documents  and
  1145. mathematical texts.  Conversion  programs to translate between TeX  or
  1146. groff source to a myriad of other formats are available.
  1147.  
  1148. 1.4.3 Programming languages and utilities
  1149.  
  1150. Linux provides a complete UNIX programming environment,  including all
  1151. of the standard libraries, programming tools, compilers, and debuggers
  1152. that you would expect to find on other UNIX systems.   Within the UNIX
  1153. software development world,  applications and  systems programming  is
  1154. usually done in C or C++.   The standard C and C++ compiler  for Linux
  1155. is GNU's gcc, which  is an advanced,  modern compiler supporting  many
  1156. options.   It is  also capable  of compiling C++  (including AT&T  3.0
  1157. features) as well as  Objective-C, another object-oriented dialect  of
  1158. C.
  1159.   Besides C and  C++, many other compiled and  interpreted programming
  1160. languages have  been ported  to  Linux,  such as  Smalltalk,  FORTRAN,
  1161. Pascal,  LISP, Scheme,   and Ada  (if  you're  masochistic  enough  to
  1162. program in Ada---we're not going to  stop you).  In addition,  various
  1163. assemblers for writing protected-mode 80386 code are available, as are
  1164. UNIX hacking favorites such  as Perl (the  script language to end  all
  1165. script languages) and Tcl/Tk  (a shell-like command processing  system
  1166. including support for developing simple X Windows applications).
  1167.   The advanced  gdb  debugger has  been ported,  which  allows you  to
  1168.  step through  a program  to find  bugs, or  examine the  cause for  a
  1169. crash using  a core  dump.    gprof, a  profiling utility,  will  give
  1170. you performance statistics  for your program,  letting you know  where
  1171. your program is spending most of  its time executing.  The  Emacs text
  1172. editor provides an interactive editing and compilation environment for
  1173. various programming  languages.    Other tools  include GNU  make  and
  1174. imake, used to manage  compilation of large  applications; and RCS,  a
  1175. system for source locking and revision control.
  1176.   Linux implements  dynamically-linked shared  libraries, which  allow
  1177. binaries to  be much  smaller  as the  subroutine  code is  linked  at
  1178. run-time.  These DLL libraries also allow the  applications programmer
  1179. to override  function definitions with  their own code.   For example,
  1180. 1.4.   Software Features                                            12
  1181. _______________________________________________________________________
  1182.  
  1183. if a  programmer wished  to  write her  own  version of  the  malloc()
  1184. library routine,  the linker would  use the  programmer's new  routine
  1185. instead of the one found in the libraries.
  1186.   Linux is  ideal for  developing UNIX  applications.   It provides  a
  1187. modern programming environment  with all  of the  bells and  whistles.
  1188. Various standards  such as  POSIX.1 are  supported, allowing  software
  1189. written for Linux to be easily ported to other systems.   Professional
  1190. UNIX programmers and  system administrators can  use Linux to  develop
  1191. software at home, and  then transfer the  software to UNIX systems  at
  1192. work.   This not only  can save a  great deal of  time and money,  but
  1193. will also let you work in the  comfort of your own home.(3)   Computer
  1194. Science students  can  use Linux  to  learn  UNIX programming  and  to
  1195. explore other aspects of the system, such as kernel architecture.
  1196.   With Linux,  not only  do you  have access  to the  complete set  of
  1197. libraries and programming  utilities, but you  also have the  complete
  1198. kernel and library source code at your fingertips.
  1199.  
  1200. 1.4.4 The X Window System
  1201.  
  1202. The X  Window  System is  the  standard  graphics interface  for  UNIX
  1203. machines.  It is a powerful environment supporting  many applications.
  1204. Using X Windows, the  user can have  multiple terminal windows on  the
  1205. screen at once,  each one  containing a  different login session.    A
  1206. pointing device such as  a mouse is often  used with the X  interface,
  1207. although it isn't required.
  1208.   Many  X-specific applications  have  been written,  such  as  games,
  1209. graphics utilities, programming  and documentation tools,  and so  on.
  1210. With Linux and X,  your system is  a bona fide  workstation.   Coupled
  1211. with TCP/IP networking,  you can even  display X applications  running
  1212. on other machines  on your Linux  display, as  is possible with  other
  1213. systems running X.
  1214.   The X Window System  was originally developed at MIT, and  is freely
  1215. distributable.    However,  may commercial  vendors  have  distributed
  1216. proprietary enhancements  to the  original X  Windows software.    The
  1217. version of X Windows available for  Linux is known as XFree86,  a port
  1218. of X11R5 made freely distributable  for 80386-based UNIX systems  such
  1219. as Linux.  XFree86 supports a wide range of video  hardware, including
  1220. VGA, Super VGA, and a number  of accelerated video adaptors.   This is
  1221. a complete distribution of  the X Windows  software, containing the  X
  1222. server itself, many applications and utilities, programming libraries,
  1223. and documentation.
  1224.   Standard X applications include xterm (a terminal  emulator used for
  1225. most text-based applications within an  X window); xdm (the  X Session
  1226. Manager, which handles logins); xclock (a simple clock  display); xman
  1227. (an X-based  man page  reader), and  more.   The  many X  applications
  1228.  
  1229. ----------------------------
  1230.  3. The author  uses his Linux  system to develop  and test X  Windows
  1231. applications at home, which  can be directly compiled on  workstations
  1232. elsewhere.
  1233. 1.4.   Software Features                                            13
  1234. _______________________________________________________________________
  1235.  
  1236. available for Linux  are too numerous  to mention  here, but the  base
  1237. XFree86 distribution includes the  ``standard'' applications found  in
  1238. the original MIT release.   Many others are available separately,  and
  1239. theoretically any  application written  for X  Windows should  compile
  1240. cleanly under Linux.
  1241.   The look  and feel  of the X  Windows interface  is controlled to  a
  1242. large extent  by the  window manager.    This friendly  program is  in
  1243. charge of the placement of  windows, the user interface  for resizing,
  1244. iconifying, and moving windows,  the appearance of window frames,  and
  1245. so on.   The standard XFree86  distribution includes twm, the  classic
  1246. MIT window manager, although more advanced window managers such as the
  1247. Open Look Virtual Window Manager (olvwm)  are available as well.   One
  1248. window manager that is  popular among Linux  users is fvwm.   This  is
  1249. a small window manager,  requiring less than  half of the memory  used
  1250. by twm.  It provides a  3-D appearance for windows, as well  a virtual
  1251. desktop---if the user moves the mouse  to the edge of the screen,  the
  1252. entire desktop is shifted as if  the display were much larger  than it
  1253. actually is.  fvwm is  greatly customizable, and allows  all functions
  1254. to be accessed from  the keyboard as  well as the  mouse.  Many  Linux
  1255. distributions use fvwm as the standard window manager.
  1256.   The XFree86 distribution contains programming libraries  and include
  1257. files for those wily programmers  who wish to develop X  applications.
  1258. Various widget  sets,  such  as  Athena,  Open  Look,  and  Xaw3D  are
  1259. supported.    All of  the  standard fonts,  bitmaps,  man  pages,  and
  1260. documentation are  included.   PEX  (a programming  interface for  3-D
  1261. graphics) is also supported.
  1262.   Many X  applications programmers  use the  proprietary Motif  widget
  1263. set for development.   Several vendors  sell single and  multiple-user
  1264. licenses  for  a  binary  version  of  Motif  for  Linux.      Because
  1265. Motif itself is  relatively expensive,  not many Linux  users own  it.
  1266. However, binaries statically linked with Motif routines may  be freely
  1267. distributed.  Therefore, if you  write a program using Motif  and wish
  1268. to distribute  it freely,  you  may  provide a  binary so  that  users
  1269. without Motif can use the program.
  1270.   The only major  caveats with X Windows  are the hardware and  memory
  1271. requirements.  A  386 with 4  megabytes of RAM  is capable of  running
  1272. X, but  8 megabytes  or more  of physical  RAM are  needed  to use  it
  1273. comfortably.  A faster processor  is nice to have as well,  but having
  1274. enough physical RAM is much more  important.  In addition,  to achieve
  1275. really slick video  performance, an  accelerated video  card (such  as
  1276. a local bus  S3-chipset card)  is strongly recommended.    Performance
  1277. ratings in excess  of 140,000  xstones have been  acheived with  Linux
  1278. and XFree86.    With  sufficient hardware,  you'll  find that  running
  1279. X and  Linux is  as fast,  or faster,  than  running X  on other  UNIX
  1280. workstations.
  1281.   In Chapter 5 we'll discuss how to install and use X on your system.
  1282. 1.4.   Software Features                                            14
  1283. _______________________________________________________________________
  1284.  
  1285. 1.4.5 Networking
  1286.  
  1287. Interested in  communicating with  the world?    Yes?    No?    Maybe?
  1288. Linux supports the two primary networking protocols for  UNIX systems:
  1289. TCP/IP  and  UUCP.  TCP/IP  (Transmission   Control  Protocol/Internet
  1290. Protocol, for acronym aficionados) is the set of  networking paradigms
  1291. that allow  systems all  over the  world to  communicate  on a  single
  1292. network known as the Internet.   With Linux, TCP/IP, and  a connection
  1293. to the network, you can communicate with users and machines across the
  1294. Internet via electronic  mail, USENET news,  file transfers with  FTP,
  1295. and more.  There are many Linux systems currently on the Internet.
  1296.   Most  TCP/IP   networks  use  Ethernet   as  the  physical   network
  1297. transport.  Linux supports many popular Ethernet cards  and interfaces
  1298. for personal computers, including  the D-Link pocket Ethernet  adaptor
  1299. for laptops.
  1300.   However, because  not everyone has an  Ethernet drop at home,  Linux
  1301. also supports SLIP (Serial Line Internet Protocol), which allows   you
  1302. to connect to the Internet  via modem.   In order to use SLIP,  you'll
  1303. need to  have access  to a  SLIP server,  a machine  connected to  the
  1304. network which allows dial-in access.  Many businesses and universities
  1305. provide such SLIP  servers.   In  fact, if  your Linux  system has  an
  1306. Ethernet connection as well as a modem, you can configure it as a SLIP
  1307. server for other hosts.
  1308.   NFS (Network  File System)  allows your system  to seamlessly  share
  1309. files with  other  machines  on  the  network.    FTP  (File  Transfer
  1310. Protocol) allows you to transfer files between other machines.   Other
  1311. applications include  sendmail,  a system  for sending  and  receiving
  1312. electronic mail using  the SMTP protocol;  NNTP-based electronic  news
  1313. systems such as C-News and INN;  telnet, rlogin, and rsh,  which allow
  1314. you to login and  execute commands on  other machines on the  network;
  1315. and finger,  which allows  you to  get information  on other  Internet
  1316. users.   There  are literally  tons of  TCP/IP-based applications  and
  1317. protocols out there.
  1318.   The full  range of mail  and news readers  are available for  Linux,
  1319. such as elm, pine, rn, nn, and tin.  Whatever your preference, you can
  1320. configure your Linux system  to send and  receive electronic mail  and
  1321. news from all over the world.
  1322.   If  you have  experience  with  TCP/IP applications  on  other  UNIX
  1323. systems, Linux will be  very familiar to you.   The system provides  a
  1324. standard socket programming interface, so virtually any  program which
  1325. uses TCP/IP can be ported to Linux.  The Linux X  server also supports
  1326. TCP/IP, allowing you to display applications running on  other systems
  1327. on your Linux display.
  1328.   In  Chapter 5  we'll  discuss  configuration and  setup  of  TCP/IP,
  1329. including SLIP, for Linux.
  1330.   UUCP (UNIX-to-UNIX  Copy)  is an  older mechanism  used to  transfer
  1331. files, electronic  mail, and  electronic news  between UNIX  machines.
  1332. Classically, UUCP  machines connected  to each  other  over the  phone
  1333. lines via modem, but UUCP is  able to transport over a  TCP/IP network
  1334. as well.   If you do  not have access  to a TCP/IP  network or a  SLIP
  1335. 1.4.   Software Features                                            15
  1336. _______________________________________________________________________
  1337.  
  1338. server, you can configure  your system to  send and receive files  and
  1339. electronic mail using UUCP. See Chapter 5 for more information.
  1340.  
  1341. 1.4.6 Telecommunications and BBS software
  1342.  
  1343. If you  have a  modem,  you will  be able  to  communicate with  other
  1344. machines using one  of the  telecommunications packages available  for
  1345. Linux.  Many people use telecommunications software to access bulletin
  1346. board systems (BBSs),  as well as commercial  online services such  as
  1347. Prodigy, CompuServe,  and America  On-Line.   Other  people use  their
  1348. modems to  connect to  a UNIX  system  at work  or school.    You  can
  1349. even use your modem and  Linux system to send and  receive facsimiles.
  1350. Telecommunications software under Linux is very similar to  that found
  1351. under MS-DOS or other operating systems.   Anyone who has ever  used a
  1352. telecommunications package will find the Linux equivalent familiar.
  1353.   One  of  the  most popular  communications  packages  for  Linux  is
  1354. Seyon, an X application providing a customizable, ergonomic interface,
  1355. with built-in  support for  various file  transfer  protocols such  as
  1356. Kermit, ZModem, and so on.  Other telecommunications  programs include
  1357. C-Kermit, pcomm,  and minicom.   These  are similar to  communications
  1358. programs found on other operating systems, and are quite easy to use.
  1359.   If  you do  not  have access  to a  SLIP  server (see  the  previous
  1360. section), you can use term to  multiplex your serial line.   term will
  1361. allow you to open  multiple login sessions  over the modem  connection
  1362. to a remote machine.   term will also  allow you to redirect X  client
  1363. connections to your local X server, through the serial  line, allowing
  1364. you to display remote  X applications on your  Linux system.   Another
  1365. software package, KA9Q, implements a similar SLIP-like interface.
  1366.   Running  a bulletin  board system  (BBS) is  a  favorite hobby  (and
  1367. means of income) for many people.  Linux supports a wide  range of BBS
  1368. software, most of which  is more powerful  than what is available  for
  1369. other operating systems.  With a  phone line, a modem, and  Linux, you
  1370. can turn your  system into  a BBS,  providing dial-in  access to  your
  1371. system to users worldwide.   BBS software for Linux includes  XBBS and
  1372. the UniBoard BBS packages.
  1373.   Most BBS  software locks  the user  into a  menu-based system  where
  1374. only certain functions and applications are available.  An alternative
  1375. to BBS access  is full UNIX  access, which would  allow users to  dial
  1376. into your  system and  login as  a regular  user.    While this  would
  1377. require a  fair  amount of  maintenance  on  the part  of  the  system
  1378. administrator, it can be done,  and providing public UNIX  access from
  1379. your Linux  system is  not  difficult to  do.    Along with  a  TCP/IP
  1380. network, you can provide electronic  mail and news access to  users on
  1381. your system.
  1382.   If you do  not have access to a  TCP/IP network or UUCP feed,  Linux
  1383. will also allow  you to  communicate with  a number  of BBS  networks,
  1384. such as FidoNet, with which you can exchange electronic  news and mail
  1385. via the phone line.   More  information on telecommunications and  BBS
  1386. software under Linux can be found in Chapter 5.
  1387. 1.4.   Software Features                                            16
  1388. _______________________________________________________________________
  1389.  
  1390. 1.4.7 Interfacing with MS-DOS
  1391.  
  1392. Various utilities exist  to interface  with the world  of MS-DOS.  The
  1393. most well-known application is the Linux MS-DOS Emulator, which allows
  1394. you to run  many MS-DOS applications  directly from  Linux.   Although
  1395. Linux and MS-DOS are completely different operating systems, the 80386
  1396. protected-mode environment allows certain tasks  to behave as if  they
  1397. were running in 8086-emulation mode, as MS-DOS applications do.
  1398.   The MS-DOS  emulator is  still under development,  yet many  popular
  1399. applications  run  under  it.      Understandably,   however,   MS-DOS
  1400. applications which use bizarre or esoteric features of the  system may
  1401. never be supported,  because it  is only  an emulator.   For  example,
  1402. you wouldn't expect  to be able  to run any  programs which use  80386
  1403. protected-mode features, such  as Microsoft  Windows (in 386  enhanced
  1404. mode, that is).
  1405.   Applications which run successfully under the  Linux MS-DOS Emulator
  1406. include 4DOS (a  command interpreter), Foxpro  2.0, Harvard  Graphics,
  1407. MathCad, Stacker  3.1,  Turbo Assembler,  Turbo C/C++,  Turbo  Pascal,
  1408. Microsoft Windows 3.0 (in real mode),  and WordPerfect 5.1.   Standard
  1409. MS-DOS commands and utilities (such as PKZIP, and so on) work with the
  1410. emulator as well.
  1411.   The MS-DOS Emulator is meant mostly as an ad  hoc solution for those
  1412. people who need MS-DOS only for a few applications, but  use Linux for
  1413. everything else.   It's not meant to  be a complete implementation  of
  1414. MS-DOS. Of course, if the Emulator doesn't satisfy your needs, you can
  1415. always run MS-DOS as well as Linux on the same system.  Using the LILO
  1416. boot loader, you can  specify at boot  time which operating system  to
  1417. start.  Linux can coexist with other operating systems,  such as OS/2,
  1418. as well.
  1419.   Linux provides a  seamless interface for transferring files  between
  1420. Linux and MS-DOS. You  can mount an  MS-DOS partition or floppy  under
  1421. Linux, and directly access MS-DOS files as you would any other.
  1422.   Currently  under  development   is  a  project  known  as   WINE---a
  1423. Microsoft Windows emulator for the X Window System under Linux.   Once
  1424. WINE is complete,  users will be able  to run MS-Windows  applications
  1425. directly from Linux.  This is similar to the  proprietary WABI Windows
  1426. emulator from Sun Microsystems.  At the time of this  writing, WINE is
  1427. still in the early stages of development, but the outlook is good.
  1428.   In  Chapter 5  we'll  talk  about  the MS-DOS  tools  available  for
  1429. Linux.
  1430.  
  1431. 1.4.8 Other applications
  1432.  
  1433. A host  of miscellany  is available  for Linux,  as  one would  expect
  1434. from such  a  hodgepodge operating  system.    Linux's  primary  focus
  1435. is currently  for  personal  UNIX  computing,   but  this  is  rapidly
  1436. changing.    Business  and  scientific  software  is  expanding,   and
  1437. commercial software vendors are beginning to contribute to the growing
  1438. pool of applications.
  1439.   Several  relational databases  are  available for  Linux,  including
  1440. 1.4.   Software Features                                            17
  1441. _______________________________________________________________________
  1442.  
  1443. Postgres, Ingres, and  Mbase.   These are full-featured,  professional
  1444. client/server database applications  similar to  those found on  other
  1445. UNIX platforms.  /rdb,  a commercial database system, is  available as
  1446. well.
  1447.   Scientific computing  applications  include FELT  (a finite  element
  1448. analysis tool); gnuplot  (a plotting  and data analysis  application);
  1449. Octave (a symbolic mathematics package, similar to MATLAB); xspread (a
  1450. spreadsheet calculator);  xfractint, an  X-based port  of the  popular
  1451. Fractint fractal  generator;  xlispstat  (a statistics  package),  and
  1452. more.  Other applications include Spice (a circuit design and analysis
  1453. tool) and Khoros (an image/digital signal processing and visualization
  1454. system).
  1455.   Of course,  there are many more  such applications which have  been,
  1456. and can be,  ported to  run on Linux.   Whatever  your field,  porting
  1457. UNIX-based applications  to  Linux should  be  quite  straightforward.
  1458. Linux provides a  complete UNIX programming  interface, sufficient  to
  1459. serve as the base for any scientific application.
  1460.   As with any operating system,  Linux has its share of games.   These
  1461. include classic text-based  dungeon games such  as Nethack and  Moria;
  1462. MUDs (multi-user dungeons,  which allow  many users to  interact in  a
  1463. text-based adventure) such as DikuMUD  and TinyMUD; as well as  a slew
  1464. of X games  such as xtetris,  netrek, and Xboard  (the X11 version  of
  1465. gnuchess).  The  popular shoot-em-up arcade-style  Doom has also  been
  1466. ported to Linux.
  1467.   For  audiophiles, Linux  has  support for  various sound  cards  and
  1468. related software,  such as  CDplayer (a  program which  can control  a
  1469. CD-ROM drive as a conventional  CD player, surprisingly enough),  MIDI
  1470. sequencers and editors  (allowing you  to compose  music for  playback
  1471. through a synthesizer or other MIDI-controlled instrument),  and sound
  1472. editors for digitized sounds.
  1473.   Can't find the application  you're looking for?  The  Linux Software
  1474. Map, described  in  Appendix  A,  contains  a list  of  many  software
  1475. packages which have been written and ported to Linux.  While this list
  1476. is far from complete, it contains  a great deal of software.   Another
  1477. way to find Linux applications is to look at the INDEX  files found on
  1478. Linux FTP sites, if you have  Internet access.  Just by  poking around
  1479. you'll find a great deal of software just waiting to be played with.
  1480.   If you absolutely can't  find what you need, you can  always attempt
  1481. to port the application from another  platform to Linux.   Most freely
  1482. distributable UNIX-based  software  will  compile on  Linux  with  few
  1483. problems.   Or,  if  all else  fails, you  can  write the  application
  1484. yourself.    If it's  a  commercial  application you're  looking  for,
  1485. there may  be a  free ``clone''  available.    Or,  you can  encourage
  1486. the software company  to consider  releasing a  Linux binary  version.
  1487. Several individuals have contacted software companies, asking  them to
  1488. port their applications to Linux, and have met with various degrees of
  1489. success.
  1490. 1.5.   About Linux's Copyright                                      18
  1491. _______________________________________________________________________
  1492.  
  1493. 1.5 About Linux's Copyright
  1494.  
  1495. Linux is covered by what is  known as the GNU General  Public License,
  1496. or GPL. The GPL was developed for the GNU project by the Free Software
  1497. Foundataion.   It makes a  number of  provisions for the  distribution
  1498. and modification of ``free software''.  ``Free'' in this  sense refers
  1499. to freedom,  not  just cost.    The  GPL has  always been  subject  to
  1500. misinterpretation, and  we hope  that this  summary will  help you  to
  1501. understand the extent and goals of the GPL and its effect on Linux.  A
  1502. complete copy of the GPL is included in Appendix E.
  1503.   Originally,  Linus  Torvalds released  Linux  under a  license  more
  1504. restrictive than  the GPL,  which allowed  the software  to be  freely
  1505. distributed and modified, but  prevented any money changing hands  for
  1506. its distribution and use.  On the other hand, the GPL allows people to
  1507. sell and make profit  from free software, but  does not allow them  to
  1508. restrict the right for others to distribute the software in any way.
  1509.   First, it should be explained that ``free software''  covered by the
  1510. GPL is not in the public  domain.  Public domain software  is software
  1511. which is  not  copyrighted, and  is  literally  owned by  the  public.
  1512. Software covered by  the GPL,  on the  other hand,  is copyrighted  to
  1513. the author or  authors.   This  means that the  software is  protected
  1514. by standard international copyright laws,  and that the author  of the
  1515. software is legally defined.  Just because the software  may be freely
  1516. distributed does not mean that it is in the public domain.
  1517.   GPL-licensed  software  is  also  not  ``shareware''.     Generally,
  1518. ``shareware'' software is owned and copyrighted by the author, but the
  1519. author requires users to send in money for its use after distribution.
  1520. On the other hand, software covered by the GPL may  be distributed and
  1521. used free of charge.
  1522.   The GPL  also allows people  to take and  modify free software,  and
  1523. distribute their own versions of the  software.  However,  any derived
  1524. works from GPL  software must  also be  covered by the  GPL. In  other
  1525. words, a company could  not take Linux, modify  it, and sell it  under
  1526. a restrictive license.   If any software  is derived from Linux,  that
  1527. software must be covered by the GPL as well.
  1528.   The  GPL allows  free  software  to  be distributed  and  used  free
  1529. of charge.    However,  it also  allows a  person  or organization  to
  1530. distribute GPL software  for a  fee, and  even to make  a profit  from
  1531. its sale and  distribution.   However,  in selling  GPL software,  the
  1532. distributor cannot take those rights away from the purchaser; that is,
  1533. if you purchase GPL software from some source, you  may distribute the
  1534. software for free, or sell it yourself as well.
  1535.   This might sound like  a contradiction at first.  Why  sell software
  1536. for profit when  the GPL  allows anyone  to obtain it  for free?    As
  1537. an example,  let's say that  some company  decided to  bundle a  large
  1538. amount of free software on a  CD-ROM and distribute it.   That company
  1539. would need to charge  for the overhead  of producing and  distributing
  1540. the CD-ROM, and the  company may even decide  to make profit from  the
  1541. sales of software.  This is allowed by the GPL.
  1542.   Organizations  which   sell  free   software  must  follow   certain
  1543. 1.6.   The Design and Philosophy of Linux                           19
  1544. _______________________________________________________________________
  1545.  
  1546. restrictions set forth  in the  GPL. First, they  cannot restrict  the
  1547. rights of users who  purchase the software.   This  means that if  you
  1548. buy a CD-ROM of GPL software, you can copy and  distribute that CD-ROM
  1549. free of charge, or  resell it yourself.   Secondly, distributors  must
  1550. make it  obvious to  users  that the  software  is indeed  covered  by
  1551. the GPL.  Thirdly,  distributors must  provide,  free of  charge,  the
  1552. complete source code for  the software being  distributed.  This  will
  1553. allow anyone who purchases GPL software to make modifications  of that
  1554. software.
  1555.   Allowing a company  to distribute and sell  free software is a  very
  1556. good thing.    Not everyone  has access  to the  Internet to  download
  1557. software, such  as Linux,  for  free.   The  GPL  allows companies  to
  1558. sell and distribute  software to  those people  who do  not have  free
  1559. (cost-wise) access to the software.   For example,  many organizations
  1560. sell Linux  on diskette,  tape, or  CD-ROM via  mail  order, and  make
  1561. profit from these sales.   The developers of  Linux may never see  any
  1562. of this profit; that is the understanding that is  reached between the
  1563. developer and the distributor  when software is  licensed by the  GPL.
  1564. In other words, Linus knew that companies may wish to  sell Linux, and
  1565. that he may not see a penny of the profits from those sales.
  1566.   In the free software world,  the important issue is not money.   The
  1567. goal of free software  is always to  develop and distribute  fantastic
  1568. software and  to allow  anyone to  obtain and  use it.    In the  next
  1569. section, we'll discuss how this applies to the development of Linux.
  1570.  
  1571.  
  1572. 1.6 The Design and Philosophy of Linux
  1573.  
  1574. When new users encounter Linux,  they often have a  few misconceptions
  1575. and false expectations  of the system.   Linux  is a unique  operating
  1576. system, and it is important to understand its philosophy and design in
  1577. order to use it effectively.  Time enough for a soapbox.   Even if you
  1578. are an aged UNIX guru, what follows is probably of interest to you.
  1579.   In  commercial  UNIX  development  houses,   the  entire  system  is
  1580. developed with  a rigorous  policy of  quality assurance,  source  and
  1581. revision  control  systems,  documentation,  and   bug  reporting  and
  1582. resolution.  Developers are not  allowed to add features or  to change
  1583. key sections of code on  a whim:  they  must validate the change as  a
  1584. response to a bug report and consequently ``check in'' all  changes to
  1585. the source control system,  so that the changes  can be backed out  if
  1586. necessary.  Each developer is assigned one or more parts of the system
  1587. code, and only  that developer may  alter those  sections of the  code
  1588. while it is ``checked out''.
  1589.   Internally,   the  quality   assurance   department  runs   rigorous
  1590. regression test suites on each new  pass of the operating system,  and
  1591. reports any bugs.  It  is the responsibility of the developers  to fix
  1592. these bugs as reported.  A complicated system of  statistical analysis
  1593. is employed to  ensure that  a certain  percentage of  bugs are  fixed
  1594. before the next  release, and  that the  operating system  as a  whole
  1595. passes certain release criteria.
  1596.   In all, the process  used by commercial UNIX developers  to maintain
  1597. 1.6.   The Design and Philosophy of Linux                           20
  1598. _______________________________________________________________________
  1599.  
  1600. and support their code is  very complicated, and quite  reasonably so.
  1601. The company must  have quantitative  proof that the  next revision  of
  1602. the operating system  is ready  to be  shipped;  hence, the  gathering
  1603. and analysis of statistics  about the operating system's  performance.
  1604. It is  a big  job to  develop a  commercial UNIX  system, often  large
  1605. enough to employ hundreds (if not thousands) of  programmers, testers,
  1606. documentors,  and  administrative  personel.     Of  course,   no  two
  1607. commercial UNIX vendors are alike, but you get the general picture.
  1608.   With  Linux, you  can  throw out  the  entire concept  of  organized
  1609. development, source  control  systems,  structured bug  reporting,  or
  1610. statistical analysis.  Linux is, and more than likely  always will be,
  1611. a hacker's operating system.(4)
  1612.   Linux is primarily developed as a group effort  by volunteers on the
  1613. Internet from all  over the world.   Across  the Internet and  beyond,
  1614. anyone with enough know-how has  the opportunity to aid in  developing
  1615. and debugging the kernel, porting new software, writing documentation,
  1616. or helping new  users.   There is  no single organization  responsible
  1617. for developing the  system.   For the most  part, the Linux  community
  1618. communicates via  various mailing  lists  and USENET  newsgroups.    A
  1619. number of conventions  have sprung up  around the development  effort:
  1620. for example,  anyone  wishing  to  have  their code  included  in  the
  1621. ``official'' kernel should mail  it to Linus  Torvalds, which he  will
  1622. test and include in the kernel (as long as it doesn't  break things or
  1623. go against the overall design of the system, he will  more than likely
  1624. include it).
  1625.   The  system itself  is designed  with  a very  open-ended,  feature-
  1626. minded approach.    While  recently the  number  of new  features  and
  1627. critical changes to the  system have diminished,  the general rule  is
  1628. that a new  version of  the kernel  will be released  about every  few
  1629. months (sometimes even more frequently than this).  Of course, this is
  1630. a very rough figure:   it depends on  a several factors including  the
  1631. number of bugs to be fixed, the amount of feedback  from users testing
  1632. pre-release versions of the code,  and the amount of sleep  that Linus
  1633. has had this week.
  1634.   Let it  suffice to  say that not  every single  bug has been  fixed,
  1635. and not every problem  ironed out between  releases.   As long as  the
  1636. system appears to be free of  critical or oft-manifesting bugs,  it is
  1637. considered ``stable'' and new revisions will be released.   The thrust
  1638. behind Linux development is not an effort to release perfect, bug-free
  1639. code:  it is to  develop a free implementation  of UNIX. Linux is  for
  1640. the developers, more than anyone else.
  1641.   Anyone who has a  new feature or software application to add  to the
  1642. system generally makes it available in an ``alpha''   stage---that is,
  1643. a stage for testing by  those brave or unwary  users who want to  bash
  1644.  
  1645. ----------------------------
  1646.  4. What I mean by ``hacker'' is a feverishly dedicated  programmer, a
  1647. person who enjoys exploiting computers and generally doing interesting
  1648. things with them.   This is  in contrast to  the common denotation  of
  1649. ``hacker'' as a computer wrongdoer or outlaw.
  1650. 1.6.   The Design and Philosophy of Linux                           21
  1651. _______________________________________________________________________
  1652.  
  1653. out problems with the  initial code.   Because the Linux community  is
  1654. largely based on the Internet,  alpha software is usually  uploaded to
  1655. one or more  of the  various Linux FTP  sites (see  Appendix C) and  a
  1656. message posted to one of the Linux USENET newsgroups about  how to get
  1657. and test the code.   Users  who download and  test alpha software  can
  1658. then mail results, bug fixes, or questions to the author.
  1659.   After the initial  problems in the alpha  code have been fixed,  the
  1660. code enters  a ``beta''  stage,   in  which it  is usually  considered
  1661. stable but  not complete  (that  is,  it works,  but  not all  of  the
  1662. features may  be  present).    Otherwise,  it  may go  directly  to  a
  1663. ``final'' stage  in  which the  software  is considered  complete  and
  1664. usable.  For kernel  code, once it  is complete the developer may  ask
  1665. Linus to include it in the  standard kernel, or as an  optional add-on
  1666. feature to the kernel.
  1667.   Keep in  mind that  these are  only conventions---not rules.    Some
  1668. people feel so confident with  their software that they don't  need to
  1669. release an alpha or test version.  It is always up to the developer to
  1670. make these decisions.
  1671.   You might be amazed that such a nonstructured  system of volunteers,
  1672. programming and debugging a complete  UNIX system, could get  anything
  1673. done at all.   As it turns  out, it is one  of the most efficient  and
  1674. motivated development efforts ever employed.  The entire  Linux kernel
  1675. was written from scratch, without employing any code  from proprietary
  1676. sources.  A great deal of work was put forth by volunteers to port all
  1677. of the free software  under the sun  to the Linux  system.   Libraries
  1678. were written and ported,  filesystems developed, and hardware  drivers
  1679. written for many popular devices.
  1680.   The Linux software is  generally released as a distribution,   which
  1681. is a set  of pre-packaged  software making up  an entire  system.   It
  1682. would be quite  difficult for most  users to  build a complete  system
  1683. from the ground up,  starting with the  kernel, adding utilities,  and
  1684. installing all of  the necessary  software by  hand.   Instead,  there
  1685. are a number of software  distributions including everything that  you
  1686. need to  install and  run  a complete  system.    Again, there  is  no
  1687. standard distribution---there are many, each with their own advantages
  1688. and disadvantages.  We'll talk more about the various  available Linux
  1689. distributions in Section 2.1.
  1690.   Despite the completeness of the Linux software, you  will still need
  1691. a bit of  UNIX know-how  to install  and run a  complete system.    No
  1692. distribution of Linux is completely  bug-free, so you may  be required
  1693. to fix small  problems by  hand after  installation.   Running a  UNIX
  1694. system is not an easy task, not even for commercial  versions of UNIX.
  1695. If you're  serious about  Linux,  bear in  mind that  it  will take  a
  1696. considerable amount of effort and  attention on your part to  keep the
  1697. system running and  take care  of things:   this is  true of any  UNIX
  1698. system, and Linux is  no exception.   Because of the diversity of  the
  1699. Linux community and the many needs which the software is attempting to
  1700. meet, not eveything can be taken care of for you all of the time.
  1701. 1.6.   The Design and Philosophy of Linux                           22
  1702. _______________________________________________________________________
  1703.  
  1704. 1.6.1 Hints for UNIX novices
  1705.  
  1706. Installing and using your  own Linux system  does not require a  great
  1707. deal of background in  UNIX. In fact,  many UNIX novices  successfully
  1708. install Linux  on  their systems.     This is  a  worthwhile  learning
  1709. experience, but keep in mind that it can be very  frustrating to some.
  1710. If you're lucky,  you will  be able  to install and  start using  your
  1711. Linux system without any UNIX background.  However, once you are ready
  1712. to delve into  the more  complex tasks  of running  Linux---installing
  1713. new software, recompiling the kernel, and so forth---having background
  1714. knowledge in UNIX is going to be a necessity.
  1715.   Fortunately,  by   running  your  own  Linux  system  you   will  be
  1716. able to  learn  the essentials  of  UNIX  necessary for  these  tasks.
  1717. This book  contains  a  good  deal  of information  to  help  you  get
  1718. started---Chapter 3 is a tutorial covering UNIX basics, and  Chapter 4
  1719. contains information on Linux system administration.  You may  wish to
  1720. read these chapters before you  attempt to install Linux at  all---the
  1721. information contained therein will prove  to be invaluable should  you
  1722. run into problems.
  1723.   Nobody can expect  to go from being a  UNIX novice to a  UNIX system
  1724. administrator overnight.  No implementation of UNIX is expected to run
  1725. trouble- and maintenance-free.   You  must be  aptly prepared for  the
  1726. journey which lies ahead.   Otherwise, if you're new to UNIX,  you may
  1727. very well become overly frustrated with the system.
  1728.  
  1729. 1.6.2 Hints for UNIX gurus
  1730.  
  1731. Even  those  people  with  years  of  UNIX  programming   and  systems
  1732. administration experience may need assistance before they are  able to
  1733. pick up and install Linux.  There are still aspects of the system that
  1734. UNIX wizards will need to be familiar with before diving in.   For one
  1735. thing, Linux