02_754897 ftoc.qxp 12/19/05 8:57 PM Page viii

Contents at a Glance

Acknowledgments ...... xxv Introduction ...... xxvii

Part I: First Steps...... 1 Chapter 1: Starting with Linux...... 3 Chapter 2: Running Commands from the Shell...... 29 Chapter 3: Getting into the Desktop...... 77

Part II: Running the Show ...... 123 Chapter 4: Learning Basic Administration ...... 125 Chapter 5: Getting on the Internet ...... 173 Chapter 6: Securing Linux...... 195

Part III: Choosing and Installing a ...... 241 Chapter 7: Installing Linux ...... 243 Chapter 8: Running Fedora Core and ...... 275 Chapter 9: Running GNU/Linux ...... 299 Chapter 10: Running SUSE Linux...... 325 Chapter 11: Running ...... 341 Chapter 12: Running ...... 363 Chapter 13: Running Linux...... 383 Chapter 14: Running Linux...... 399 Chapter 15: Running ...... 415 Chapter 16: Running Mandriva...... 425 Chapter 17: Running Linux ...... 441 Chapter 18: Running a Linux Firewall/Router...... 459 Chapter 19: RunningCOPYRIGHTED Bootable Linux Distributions MATERIAL ...... 485

Part IV: Running Applications ...... 503 Chapter 20: Playing Music and Video ...... 505 Chapter 21: Working with Words and Images...... 545 Chapter 22: E-Mailing and Web Browsing ...... 585 Chapter 23: Gaming with Linux...... 619 02_754897 ftoc.qxp 12/19/05 8:57 PM Page ix

Part V: Running Servers...... 645 Chapter 24: Running a Linux, Apache, MySQL, and PHP (LAMP) Server . . . . . 647 Chapter 25: Running a Mail Server ...... 673 Chapter 26: Running a Print Server ...... 691 Chapter 27: Running a File Server ...... 715

Part : Programming in Linux...... 751 Chapter 28: Programming Environments and Interfaces ...... 753 Chapter 29: Programming Tools and Utilities...... 785

Appendix A: Media...... 817 Appendix B: Entering the Linux Community ...... 825

Index ...... 831 GNU General Public License ...... 873 02_754897 ftoc.qxp 12/19/05 8:57 PM Page x 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xi

Contents

Acknowledgments ...... xxv Introduction ...... xxvii

Part I: Linux First Steps 1

Chapter 1: Starting with Linux ...... 3 Understanding Linux...... 5 Exploring Linux History ...... 7 From a Free-Flowing Culture at Bell Labs ...... 8 To a Commercialized UNIX ...... 10 To a GNU Free-Flowing (not) UNIX...... 12 BSD Loses Some Steam ...... 13 Linus Builds the Missing Piece ...... 14 What’s So Great About Linux?...... 15 Features in Linux...... 15 OSI Open Source Definition...... 16 Vibrant Communities ...... 18 Major Software Projects ...... 19 Linux Myths, Legends, and FUD...... 20 Can You Stop Worrying About Viruses? ...... 20 Will You Be Sued for Using Linux? ...... 21 Can Linux Really Run on Everything from Handhelds to Supercomputers? ...... 22 Will Linux Crush ?...... 23 Are You on Your Own If You Use Linux?...... 23 Is Linux Only for Geeks?...... 23 How Do Companies Make Money with Linux? ...... 24 How Different Are Linux Distributions from One Another? ...... 25 Is the Linux Mascot Really a Penguin?...... 25 Getting Started with Linux...... 26 Summary ...... 27 Chapter 2: Running Commands from the Shell...... 29 Starting a Shell ...... 30 Using the Shell Prompt ...... 30 Using a Terminal Window ...... 31 Using Virtual Terminals ...... 32 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xii

xii Contents

Choosing Your Shell ...... 32 Using (and Earlier sh) Shells ...... 33 Using tcsh (and Earlier csh) Shells...... 33 Using ash ...... 34 Using ksh ...... 34 Using zsh ...... 34 Exploring the Shell ...... 34 Checking Your Login Session ...... 35 Checking Directories and Permissions ...... 36 Checking System Activity ...... 37 Exiting the Shell ...... 38 Using the Shell in Linux ...... 39 Locating Commands...... 40 Rerunning Commands...... 42 Connecting and Expanding Commands ...... 48 Creating Your Shell Environment ...... 51 Configuring Your Shell...... 51 Using Shell Environment Variables...... 55 Managing Background and Foreground Processes...... 59 Working with the Linux ...... 61 Creating Files and Directories ...... 63 Moving, Copying, and Deleting Files...... 70 Using the vi Text Editor ...... 70 Starting with vi ...... 71 Moving Around the File ...... 74 Searching for Text ...... 74 Using Numbers with Commands...... 75 Summary ...... 76 Chapter 3: Getting into the Desktop ...... 77 Understanding Your Desktop ...... 77 Starting the Desktop...... 78 K ...... 82 Using the KDE Desktop ...... 82 Managing Files with the Konqueror File Manager ...... 86 Configuring Konqueror Options ...... 92 Managing Windows ...... 95 Configuring the Desktop...... 97 Adding Application Launchers and MIME Types...... 99 The GNOME Desktop ...... 100 Using the Metacity Window Manager ...... 102 Using the GNOME panels ...... 103 Using the Nautilus File Manager ...... 108 Changing GNOME Preferences ...... 110 Exiting GNOME ...... 113 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xiii

Contents xiii

Configuring Your Own Desktop ...... 114 Configuring X ...... 115 Choosing a Window Manager ...... 118 Choosing Your Personal Window Manager ...... 120 Getting More Information...... 121 Summary ...... 121

Part II: Running the Show 123

Chapter 4: Learning Basic Administration ...... 125 Graphical Administration Tools ...... 125 Using Web-Based Administration...... 126 Graphical Administration with Different Distributions...... 127 Using the root Login...... 131 Becoming Root from the Shell (su Command) ...... 132 Allowing Limited Administrative Access...... 133 Exploring Administrative Commands, Configuration Files, and Log Files...... 134 Administrative Commands ...... 134 Administrative Configuration Files ...... 135 Administrative Log Files ...... 139 Using sudo and Other Administrative Logins ...... 140 Administering Your Linux System...... 142 Creating User Accounts...... 143 Adding Users with useradd ...... 143 Setting User Defaults ...... 147 Configuring Hardware...... 149 Managing Removable Hardware ...... 150 Working with Loadable Modules ...... 153 Managing File Systems and Disk Space...... 155 Mounting File Systems ...... 158 Using the mkfs Command to Create a File System ...... 165 Adding a Hard Disk ...... 166 Checking System Space ...... 168 Monitoring System Performance ...... 170 Summary ...... 171 Chapter 5: Getting on the Internet ...... 173 Connecting to the Network...... 173 Connecting via Dial-Up Service ...... 174 Connecting a Single Computer to Broadband ...... 175 Connecting Multiple Computers to Broadband ...... 176 Connecting Servers ...... 177 Connecting Other Equipment ...... 179 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xiv

xiv Contents

Using Ethernet Connections to the Internet ...... 180 Configuring Ethernet During Installation...... 180 Configuring Ethernet from the Desktop ...... 181 Using Network Configuration GUI...... 181 Identifying Other Computers (Hosts and DNS) ...... 183 Understanding Your Internet Connection ...... 185 Using Dial-up Connections to the Internet ...... 187 Getting Information...... 188 Setting Up Dial-Up PPP...... 189 Creating a Dial-Up Connection with the Internet Configuration Wizard...... 189 Launching Your PPP Connection ...... 192 Launching Your PPP Connection on Demand ...... 192 Checking Your PPP Connection...... 193 Summary ...... 194 Chapter 6: Securing Linux ...... 195 Linux Security Checklist ...... 196 Finding Distribution-Specific Security Resources...... 198 Finding General Security Resources ...... 199 Using Linux Securely ...... 199 Using Password Protection ...... 199 Choosing Good Passwords ...... 200 Using a Shadow Password File ...... 201 Using Log Files...... 203 The Role of Syslogd...... 206 Redirecting Logs to a Loghost with syslogd...... 207 Understanding the messages Log File ...... 208 Using Secure Shell Tools ...... 209 Starting the ssh Service ...... 209 Using the ssh, sftp, and scp Commands ...... 210 Using ssh, scp, and sftp Without Passwords ...... 212 Securing Linux Servers ...... 213 Controlling Access to Services with TCP Wrappers ...... 213 Understanding Attack Techniques ...... 216 Protecting Against Denial of Service Attacks ...... 217 Protecting Against Distributed DOS Attacks...... 220 Protecting Against Intrusion Attacks...... 224 Securing Servers with SELinux ...... 227 Protecting Web Servers with Certificates and Encryption ...... 228 Using Security Tools Linux Distributions...... 239 Summary ...... 239 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xv

Contents xv

Part III: Choosing and Installing a Linux Distribution 241

Chapter 7: Installing Linux ...... 243 Choosing a Linux Distribution...... 244 Linux at Work ...... 244 Other Distributions...... 245 Getting Your Own Linux Distribution ...... 245 Finding Another Linux Distribution...... 246 Understanding What You Need ...... 246 Downloading the Distribution...... 247 Burning the Distribution to CD ...... 248 Exploring Common Installation Topics ...... 249 Knowing Your Computer Hardware...... 249 Upgrading or Installing from Scratch...... 250 Dual Booting with Windows or Just Linux? ...... 251 Using Installation Boot Options...... 252 Partitioning Hard Drives...... 253 Using LILO or GRUB Boot Loaders ...... 262 Configuring Networking ...... 271 Configuring Other Administrative Features ...... 272 Installing from the Linux Bible CD or DVD ...... 273 Summary ...... 273 Chapter 8: Running Fedora Core and Red Hat Enterprise Linux . . . 275 Digging into Features ...... 277 Red Hat Installer (Anaconda) ...... 277 RPM Package Management ...... 278 Kudzu Hardware Detection ...... 278 Red Hat Desktop Look-and-Feel...... 279 System Configuration Tools ...... 279 Going Forward with Fedora Core ...... 279 Growing Community Support for Fedora ...... 280 Fedora Extras ...... 280 Fedora Legacy Project ...... 281 Forums and Mailing Lists ...... 282 Listening to the People at Red Hat ...... 282 Listening to the Red Hat Community ...... 283 Installing Fedora Core...... 285 Choosing Computer Hardware ...... 285 Choosing an Installation Method ...... 287 Choosing to Install or Upgrade ...... 288 Beginning the Installation ...... 289 Running Fedora Setup Agent ...... 296 Summary ...... 297 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xvi

xvi Contents

Chapter 9: Running Debian GNU/Linux ...... 299 Inside Debian GNU/Linux...... 300 Debian Packages ...... 300 Debian Package Management Tools ...... 301 Debian Releases...... 303 Getting Help with Debian...... 303 Installing Debian GNU/Linux...... 304 Hardware Requirements and Installation Planning...... 304 Running the Installer ...... 306 Managing Your Debian System...... 311 Configuring Network Connections ...... 311 Package Management Using APT ...... 314 Package Management Using dpkg...... 318 Installing Package Sets (Tasks) with Tasksel ...... 320 Alternatives, Diversions, and Stat Overrides ...... 320 Managing Package Configuration with debconf...... 322 Summary ...... 323 Chapter 10: Running SUSE Linux ...... 325 Understanding SUSE...... 326 What’s in SUSE...... 327 Installation and Configuration with YaST ...... 327 RPM Package Management ...... 330 Automated Software Updates ...... 331 Getting Support for SUSE...... 332 Installing OpenSUSE...... 332 Before You Begin ...... 333 Starting Installation...... 334 Starting with SUSE...... 338 Summary ...... 339 Chapter 11: Running KNOPPIX...... 341 KNOPPIX News...... 341 KNOPPIX Features ...... 342 Understanding KNOPPIX ...... 342 Looking Inside KNOPPIX...... 342 What’s Cool About KNOPPIX ...... 344 Examining Challenges with KNOPPIX ...... 346 Seeing Where KNOPPIX Comes From...... 347 Exploring Uses for KNOPPIX...... 347 Starting KNOPPIX ...... 349 Getting a Computer...... 349 Booting KNOPPIX...... 350 Correcting Boot Problems ...... 350 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xvii

Contents xvii

Using KNOPPIX ...... 354 Using the KDE Desktop in KNOPPIX ...... 355 Getting on the Network ...... 356 Installing Software in KNOPPIX ...... 357 Saving Files in KNOPPIX ...... 357 Keeping Your KNOPPIX Configuration ...... 360 Restarting KNOPPIX ...... 361 Summary ...... 362 Chapter 12: Running Yellow Dog Linux...... 363 Understanding Yellow Dog Linux ...... 363 Going Forward with Yellow Dog ...... 365 Digging into Yellow Dog...... 366 Installing Yellow Dog Linux...... 367 Hardware Support ...... 368 Planning Your Installation ...... 369 Beginning the Installation ...... 371 Rebooting Your Linux Mac ...... 378 Updating Yellow Dog Linux...... 378 Running Mac Applications with Mac-on-Linux...... 379 Support Options...... 380 Summary ...... 381 Chapter 13: Running ...... 383 Understanding Gentoo ...... 383 Gentoo’s Open Source Spirit...... 384 The Gentoo Community ...... 385 Building, Tuning, and Tweaking Linux ...... 385 Where Gentoo Is Used ...... 386 What’s in Gentoo ...... 387 Managing Software with ...... 388 Finding Software Packages...... 389 Installing Gentoo...... 390 Getting Gentoo ...... 390 Starting Gentoo Installation ...... 391 Summary ...... 398 Chapter 14: Running Slackware Linux ...... 399 Getting into Slackware ...... 399 Characterizing the Slackware Community ...... 401 The Slackware Creator ...... 401 Slackware Users...... 403 Slackware Internet Sites ...... 403 Challenges of Using Slackware ...... 404 Using Slackware as a Development Platform...... 405 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xviii

xviii Contents

Installing Slackware ...... 405 Getting Slackware ...... 406 New Features in Slackware 10.2...... 406 Hardware Requirements ...... 407 Starting Installation...... 407 Starting with Slackware ...... 412 Summary ...... 414 Chapter 15: Running Linspire ...... 415 Overview of Linspire ...... 415 Getting Into Linspire ...... 417 Installing Software with Click-N-Run ...... 417 Other Installation Options...... 419 Linspire Support and Software...... 419 Linspire Forums and Information...... 420 Audio Assistant ...... 420 Installing Linspire Five-0 ...... 420 Linspire Hardware Requirements ...... 421 Installing Linspire ...... 421 Summary ...... 423 Chapter 16: Running Mandriva ...... 425 Mandriva Features...... 426 Exploring Mandriva ...... 427 Mandriva Installer (DrakX) ...... 428 RPM Package Management with RPMDrake...... 429 Mandriva Control Center...... 429 The Mandriva Community ...... 430 RPM Repository on Mandrivaclub ...... 430 Mandriva Forums...... 431 Installing Mandriva Limited Edition ...... 431 The Right Hardware for Mandriva ...... 432 Begin the DrakX Installation...... 433 Summary ...... 438 Chapter 17: Running Ubuntu Linux ...... 441 Overview of Ubuntu...... 441 Ubuntu Releases ...... 442 Ubuntu Installer...... 442 Ubuntu as a Desktop ...... 443 Ubuntu as a Server ...... 445 Ubuntu Spin-Offs ...... 445 Challenges Facing Ubuntu...... 446 Installing Ubuntu ...... 447 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xix

Contents xix

Starting with Ubuntu ...... 451 Trying Out the Desktop ...... 452 Adding More Software ...... 453 Getting More Information About Ubuntu...... 456 Summary ...... 457 Chapter 18: Running a Linux Firewall/Router ...... 459 Understanding Firewalls ...... 460 Protecting Desktops with Firewalls ...... 461 Starting Your Firewall in ...... 461 Configuring a Firewall in Mandriva ...... 463 Using Firewalls with iptables...... 464 Starting with iptables...... 465 Using iptables to Do SNAT or IP Masquerading...... 470 Adding Modules with iptables...... 471 Using iptables as a Transparent Proxy ...... 472 Using iptables for Port Forwarding ...... 473 Making a Coyote Linux Bootable Floppy Firewall ...... 474 Creating a Coyote Linux Firewall ...... 474 Building the Coyote Linux Floppy ...... 475 Running the Coyote Linux Floppy Firewall ...... 481 Managing the Coyote Linux Floppy Firewall...... 482 Using Other Firewall Distributions ...... 483 Summary ...... 484 Chapter 19: Running Bootable Linux Distributions ...... 485 Overview of Bootable Linux Distributions ...... 485 Choosing a Bootable Linux...... 486 Security and Rescue Bootables ...... 487 Multimedia Bootables ...... 492 Tiny Desktops...... 494 ...... 495 Special Purpose Bootables...... 498 Customizing a Bootable Linux ...... 499 Summary ...... 501

Part IV: Running Applications 503

Chapter 20: Playing Music and Video...... 505 Playing Digital Media and Obeying the Law ...... 505 Copyright Protection Issues...... 506 Exploring Codecs ...... 508 Playing Music ...... 510 Setting Up Audio Cards...... 510 Choosing an Audio CD Player...... 512 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xx

xx Contents

Using MIDI Audio Players ...... 521 Performing Audio File Conversion and Compression ...... 521 Recording and Ripping Music ...... 525 Creating an Audio CD with cdrecord ...... 525 Ripping CDs with Grip ...... 526 Creating CD Labels with cdlabelgen ...... 528 Working with TV, Video, and Digital Imaging...... 529 Watching TV with Tvtime ...... 530 Video Conferencing with GnomeMeeting ...... 531 Watching Movies and Video ...... 534 Watching Video with xine ...... 534 Using Helix Player and RealPlayer 10...... 538 Using a Digital Camera with Gtkam and gPhoto2 ...... 538 Downloading Digital Photos with Gtkam...... 541 Using Your Camera as a Storage Device ...... 542 Summary ...... 543 Chapter 21: Working with Words and Images...... 545 Using OpenOffice.org ...... 546 Other Word Processors ...... 548 Using StarOffice ...... 548 Using AbiWord...... 549 Using KOffice ...... 550 Getting Away from Windows...... 551 Using Traditional Linux Publishing Tools ...... 552 Creating Documents in Groff or LaTeX ...... 553 Text Processing with Groff...... 555 Text Processing with TeX/LaTeX ...... 565 Converting Documents...... 569 Building Structured Documents...... 571 Printing Documents in Linux...... 575 Printing to the Default Printer...... 575 Printing from the Shell ...... 575 Checking the Print Queues ...... 576 Removing Print Jobs ...... 577 Checking Printer Status ...... 577 Displaying Documents with ghostscript and Acrobat ...... 578 Using the ghostscript and gv Commands ...... 578 Using Adobe Acrobat Reader ...... 578 Working with Graphics ...... 580 Manipulating Images with The GIMP...... 580 Acquiring Screen Captures ...... 581 Modifying Images with KPaint...... 582 Using Scanners Driven by SANE...... 583 Summary ...... 583 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xxi

Contents xxi

Chapter 22: E-Mailing and Web Browsing...... 585 Using E-Mail ...... 585 Choosing an E-Mail Client ...... 585 Getting Here from Windows ...... 587 Getting Started with E-Mail ...... 588 Tuning Up E-Mail ...... 589 Reading E-Mail with Mail ...... 590 Managing E-Mail in Evolution ...... 595 Getting Thunderbird ...... 598 Working with Text-Based E-Mail Readers ...... 598 Choosing a ...... 601 Web Browsing with Mozilla ...... 602 Using Mozilla’s Other Components...... 602 Using Text-Based Web Browsers ...... 612 Running the Web Browser ...... 613 Summary ...... 618 Chapter 23: Gaming with Linux ...... 619 Overview of Linux Gaming ...... 619 Basic Linux Gaming Information...... 620 Where to Get Information About Linux Gaming...... 620 Choosing a Video Card for Gaming...... 622 Basic X Window Games...... 624 GNOME Games ...... 624 KDE Games...... 626 Chess Games ...... 627 Freeciv ...... 629 PlanetPenguin Racer (TuxRacer) ...... 634 Commercial Linux Games...... 635 Playing Commercial Linux Games ...... 636 id Software Games ...... 637 Playing TransGaming and Games ...... 638 Loki Software Game Demos ...... 640 Summary ...... 644

Part V: Running Servers 645

Chapter 24: Running a Linux, Apache, MySQL, and PHP (LAMP) Server...... 647 Components of a LAMP Server ...... 648 Apache ...... 648 MySQL ...... 648 PHP ...... 649 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xxii

xxii Contents

Setting Up Your LAMP Server ...... 650 Installing Apache ...... 650 Installing PHP ...... 651 Installing MySQL ...... 652 Operating Your LAMP Server ...... 654 Editing Your Apache Configuration Files...... 654 Adding a Virtual Host to Apache ...... 657 User Content and the UserDir Setting ...... 658 Installing a Web Application: Coppermine Photo Gallery ...... 659 Troubleshooting ...... 663 Configuration Errors ...... 663 Access Forbidden and Server Internal Errors ...... 665 Securing Your Web Traffic with SSL/TLS ...... 666 Generating Your Keys ...... 668 Configuring Apache to Support SSL/TLS...... 670 Summary ...... 671 Chapter 25: Running a Mail Server ...... 673 Internet E-Mail’s Inner Workings...... 673 About the System and the Software Used ...... 675 Preparing Your System ...... 676 Configuring DNS for Direct Delivery ...... 676 Configuring for Retrieval from a Mail Host ...... 678 Installing and Configuring the Mail Server Software ...... 678 Installing Exim and Courier ...... 678 Installing ClamAV and SpamAssassin...... 680 Testing and Troubleshooting...... 682 Checking Logs...... 683 Common Errors (and How to Fix Them)...... 684 Configuring Mail Clients ...... 687 Configuring Fetchmail ...... 687 Configuring Web-Based Mail...... 688 Securing Communications with SSL/TLS ...... 688 Summary ...... 690 Chapter 26: Running a Print Server ...... 691 Common UNIX Printing Service ...... 692 Setting Up Printers ...... 693 Using Web-Based CUPS Administration ...... 693 Using the Red Hat Printer Configuration Window ...... 696 Working with CUPS Printing ...... 705 Configuring the CUPS Server (cupsd.conf) ...... 705 Starting the CUPS Server...... 706 Configuring CUPS Printer Options Manually ...... 707 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xxiii

Contents xxiii

Using Printing Commands ...... 708 Printing with lpr...... 708 Listing Status with lpc ...... 709 Removing Print Jobs with lprm ...... 709 Configuring Print Servers...... 710 Configuring a Shared CUPS Printer...... 710 Configuring a Shared Printer ...... 712 Summary ...... 714 Chapter 27: Running a File Server...... 715 Setting Up an NFS File Server ...... 716 Getting NFS ...... 718 Sharing NFS File Systems...... 718 Using NFS File Systems...... 723 Unmounting NFS File Systems...... 729 Other Cool Things to Do with NFS ...... 729 Setting Up a Samba File Server...... 730 Getting and Installing Samba ...... 731 Configuring Samba with SWAT ...... 732 Working with Samba Files and Commands ...... 742 Using Samba Shared Directories ...... 745 Troubleshooting Your Samba Server ...... 746 Summary ...... 749

Part VI: Programming in Linux 751

Chapter 28: Programming Environments and Interfaces ...... 753 Understanding Programming Environments ...... 754 Using Linux Programming Environments...... 754 The Linux Development Environment ...... 755 Graphical Programming Environments ...... 764 The Command-Line Programming Environment ...... 768 Linux Programming Interfaces...... 770 Creating Command-Line Interfaces...... 770 Creating Graphical Interfaces ...... 776 Application Programming Interfaces...... 778 Summary ...... 782 Chapter 29: Programming Tools and Utilities ...... 785 The Well-Stocked Toolkit ...... 785 Using the GCC Compiler ...... 787 Compiling Multiple Source Code Files ...... 788 GCC Command-Line Options ...... 791 Automating Builds with make ...... 792 02_754897 ftoc.qxp 12/19/05 8:57 PM Page xxiv

xxiv Contents

Library Utilities ...... 795 The nm Command ...... 796 The ar Command ...... 797 The ldd Command ...... 798 The ldconfig Command ...... 799 Environment Variables and Configuration Files...... 799 Source Code Control ...... 800 Source Code Control Using RCS...... 800 Source Code Control with CVS ...... 803 Debugging with GNU Debugger ...... 807 Starting GDB...... 808 Inspecting Code in the Debugger ...... 810 Examining Data ...... 811 Setting Breakpoints ...... 813 Working with Source Code...... 814 Summary ...... 815 Appendix A: Media...... 817 Finding Linux Distributions on the DVD ...... 817 Fedora Core 4 Linux ...... 818 SUSE Linux...... 818 KNOPPIX Linux ...... 818 Slackware 10.1...... 818 Ubuntu 5.1...... 819 Finding Linux Distributions on the CD ...... 819 Debian GNU/Linux ...... 819 Gentoo Linux ...... 819 Damn Small Linux...... 820 Inside Security Rescue Toolkit ...... 820 System Rescue CD ...... 820 Coyote Linux...... 820 ...... 821 Linux Distributions Not on the DVD or CD...... 821 Creating Linux CDs ...... 821 Appendix B: Entering the Linux Community...... 825 General Linux Sites ...... 825 Linux Distributions ...... 827 Companies and Groups Supporting Linux ...... 828 Major Linux Projects ...... 829 Linux User Groups...... 829

Index ...... 831 GNU General Public License...... 873