  The Linux Reading List HOWTO
  by Eric S. Raymond
  1.10, 14 November 1999

  This document lists the book I think are most valuable to a person
  trying to learn Unix (especially Linux) top to bottom.
  ______________________________________________________________________

  Table of Contents


  1. Introduction

     1.1 Purpose of this document
     1.2 New versions of this document
     1.3 Feedback and Corrections
     1.4 Related Resources
     1.5 Conventions Used In This Document

  2. Books on Culture, History, and Pragmatics

  3. Books on General Unix/Linux

     3.1 Linux Installation and Administration
     3.2 Using Unix & Linux
     3.3 System Security

  4. Books on Shell, Script, and Web Programming

  5. Books on Text Formatting

     5.1 Tex and LaTeX

  6. Good Programming Style

  7. Books on C and C++ Programming

     7.1 C and C++
     7.2 C System Call Interface

  8. Books on Networking

  9. Books on Unix Kernel Implementation

     9.1 Ancestors of Linux
     9.2 Linux
     9.3 Relatives of Linux

  10. Books on Intel processor architecture and programming

  11. Books on PC-Class Hardware

  12. Administrivia

     12.1 Terms of Use
     12.2 History


  ______________________________________________________________________

  1.  Introduction





  1.1.  Purpose of this document

  This document lists what I consider to be the essential book-length
  references for learning Unix (especially Linux) and how to program
  under it.


  1.2.  New versions of this document

  New versions of the Linux Reading List HOWTO will be periodically
  posted to comp.os.linux.answers.  They will also be uploaded to
  various Linux WWW and FTP sites, including the LDP home page.

  You can also view the latest version of this on the World Wide Web via
  the URL <http://sunsite.unc.edu/LDP/HOWTO/Reading-List-HOWTO.html>.


  1.3.  Feedback and Corrections

  If you have questions or comments about this document (or just want to
  suggest a book that you think should be on it), please feel free to
  mail Eric S. Raymond, at esr@thyrsus.com. I welcome any suggestions or
  criticisms.


  1.4.  Related Resources

  For on-line HOWTOs, magazines, and other non-book material, see the
  Linux Documentation Project home page
  <http://sunsite.unc.edu/LDP/HOWTO>.

  Some years ago I wrote a less Linux-focused Unix bibliography that may
  still be of some interest and retains a certain amusement value.  You
  can find the Loginataka at
  <http://www.tuxedo.org/~esr/faqs/loginataka.html>.


  1.5.  Conventions Used In This Document

  Comments not in quotes below are either mine, or I have seen no reason
  to change them from those of Jim Haynes (previous maintainer of this
  document).  Comments sent in by others are in quotes, and have the
  name of the commentator before them (JH is Jim Haynes).

  "See" URLs attached to publishing information point directly into the
  publisher's web catalog and typically take you to a page containing a
  cover shot, blurbs, and ordering information.  Books that don't have
  these lack them because the publisher is using frames and the catalog
  pages can't be bookmarked.

  Topic listings go roughly from the outside in (culture to user-land
  programming to kernel programming to hardware).  Within sections I
  have tried to list the most useful books first insofar as I am
  familiar with them.  It's just an embarrassing coincidence that this
  lists one of my books first, honest! (Suggestions for a better
  organization cheerfully accepted.)


  2.  Books on Culture, History, and Pragmatics


     The New Hacker's Dictionary (Third Edition)
        Raymond, Eric S.; MIT Press; 1996; ISBN 0-262-68092-0; 547pp.
        See  <http://www-mitpress.mit.edu/book-
        home.tcl?isbn=0262680920>.

        Um, er.  A guide to Internet culture. Lots of people like it.
        HTML at the Jargon File Resource  Page <http://www.tuxedo.org>.


     A Quarter Century of Unix
        Salus, Peter H.; Addison-Wesley; 1994; ISBN 0-201-54777-5;
        256pp.
        See  <http://www.awl-he.com/titles/13683.html>

        Linux is part of the Unix tradition.  This book is an oral
        history of Unix -- how it originated, how it evolved, how it
        spread -- by the people who were there.


     The Mythical Man Month (Anniversary Edition)
        Brooks, Frederick P.; Addison-Wesley 1995 (ISBN 0-201-83595-9).
        See  <http://www.awl-he.com/titles/14147.html>.

        The one book on software engineering that everyone should read.

        Alan Cox: "This I'd recommend not for its technical value but
        for its application of common sense and reality to computing
        projects." JH: "Ah, yes.  What if Linus had been given 200
        programmers and had been told to produce Linux in 3 months!"


     Bell System Technical Journal, July-August 1978, Vol. 57, No. 6,
        part 2
        AT&T; 416 pp.

        Many early papers on Unix, including Ritchie & Thompson, "The
        UNIX Time Sharing System"; Thompson, "UNIX Implementation";
        Ritchie, "A Retrospective"; Bourne, "The UNIX Shell"...


  3.  Books on General Unix/Linux



  3.1.  Linux Installation and Administration


     Linux Installation and Getting Started
        Welsh, Matt; LDP; 1997.  Available on the LDP home page, or
        directly at  <http://linuxdoc.org/LDP/gs/>.

        How to bring up Linux.  Explains a lot of Linux basics.  Covers
        basic system administration.


     Linux System Administrator's Guide
        Wirzenius, Lars; LDP; 1997.  Available on the LDP home page, or
        directly at  <http://www.linuxdoc.org/LDP/sag/>.

        An excellent first book on how to maintain and administer a
        Linux system.


     Essential System Administration (Second Edition)
        Frisch, Aeleen; O'Reilly; 1995; ISBN 1-56592-127-5; $34.95.
        See  <http://www.ora.com/catalog/esa2/noframes.html>.

        More in-depth coverage of normal system-administration tasks.
        Not Linux-specific but contains Linux material.


  3.2.  Using Unix & Linux


     Linux in a Nutshell (2nd edition)
        Hekman, Jessica P. et al.; O'Reilly; ISBN 1-56592-585-8,; 1999;
        628 pp. $29.95.
        See  <http://www.oreilly.com/catalog/linuxnut2/>.

        According to O'Reilly, "The Desktop Reference for Linux".  For
        Linux users this obsoletes their "Unix In a Nutshell" which was
        SVr4/Solaris-oriented.


     Running Linux (3rd Edition)
        Welsh, Matt, & Matthias Kallw Dalheimer & Kaufman, Lar;
        O'Reilly; ISBN 1-56592-469-X; 1999; 650pp; $34.95.
        See  <http://www.oreilly.com/catalog/runux3/>.

        Everything you need in order to understand, install, and use the
        Linux operating system.  Excellent beginner's book.


     Hands-on-Linux
        Sobell, Mark G.; Addison-Wesley; ISBN ISBN 0-201-32569-1; 1998;
        1015 pp.

        Just what the title says -- practical tutorials in basic Unix,
        shells, editors, mail programs, networking, Web tools, and
        utilities.  Covers some system administration fundamentals.
        (This appears to be a repackaging of 1997's ``A Practical Guide
        to Linux'' from the same author, without Caldera OpenLinux Lite
        included.)


  3.3.  System Security


     Practical Unix and Internet Security (2nd Edition)
        Garfinkel, Simpson, and Spafford, Gene; O'Reilly Associates;
        ISBN 0-56592-148-8; 1004pp; 1996; $39.95.
        See  <http://www.ora.com/catalog/puis/noframes.html>.

        Ronald P. Miller: "Some overlap with Essential System Admin.,
        but all in all a solid book on security, especially for those
        aspiring to allow multiple-user, dial-up/net access to their
        Linux boxes."


     Firewalls & Internet Security
        Cheswick, William R. & Bellovin, Steven M.; Addison-Wesley;
        1994; ISBN 0-201-63357-4; 320pp.


  4.  Books on Shell, Script, and Web Programming


     Programming Perl (Second Edition)
        Wall, Larry & Christiansen, Tom & Schwartz, Randal; O'Reilly;
        1997; ISBN 0-56592-149-6; 644pp.
        See  <http://www.ora.com/catalog/pperl2/noframes.html>.

        Shell (as a programming language for more than trivial
        scripting) is dead.  Perl rules in its place.  This is the
        second edition of the definitive Perl book -- vastly better
        organized than the first, and it covers Perl 5.

        Emmanuel Pierre keeps a short list of Perl books <www.e-
        nef.com/perl/listeperl.html>.


     Programming Python
        Lutz, Mark; O'Reilly; 1997; ISBN 0-56592-197-6; 880pp.
        See  <http://www.ora.com/catalog/python/noframes.html>.

        The next step beyond Perl.  Python is beautifully designed, has
        better integration with C, and scales up better to large
        projects.


     HTML: The Definitive Guide (3rd Edition)
        Musciano, Chuck & Kennedy. Bill; O'Reilly; 1998; ISBN
        1-56592-492-4; 576pp.
        See  <http://www.oreilly.com/catalog/html3/>.

        The best HTML tutorial/reference I have ever seen, and the only
        HTML book you need unless you also want to do CGI.


     The Unix Programming Environment
        Kernighan, Brian, and Pike, Rob; Prentice-Hall; 1984; ISBN
        0-13-937681-X; 1984.

        A true classic -- possibly the best single-book exposition of
        the Unix philosophy.


  5.  Books on Text Formatting


  5.1.  Tex and LaTeX



     The LaTeX Companion
        Goossens, Michael & Mittlebach, Frank, & Samarin, Alexander;
        Addison-Wesley; 1994; ISBN 0-201-54199-8; 530pp.
        See  <http://www.awl-he.com/titles/13661.html>.

        `If you are one of those users who would like to know how LaTeX
        can be extended to create the nicest documents possible without
        becoming a (La)TeX guru, then this book is for you' --- from the
        Preface.  Bruce Thompson adds: "A very nice book providing a lot
        of information about the new extensions to LaTeX, provides a
        large number of examples showing precisely how your document's
        layout can be manipulated"


     LaTeX: A Document Preparation System (Second Edition)
        Lamport, Leslie; Addison-Wesley; 1994; ISBN 0-201-52983-1;
        256pp.
        See  <http://www.awl-he.com/titles/13632.html>.

        Bruce Thompson: "The ultimate reference on LaTeX 2.09 by its
        author.  A new edition covering LaTeX2e (the version included in
        the current TeX/LaTeX distribution) is in preparation.  LaTeX
        2.09 is fully supported by LaTeX2e.  A must for anyone wanting
        to use LaTeX.  Provides a gentle introduction to document
        preparation and the various tools that LaTeX provides for
        producing professional quality documents.  Lots of examples."



     The TeXbook, Volume A of Computers and Typesetting; Knuth, Donald
        A.
        Addison-Wesley; 1986, ISBN 0-201-13448; 496pp.  See
        <http://www.awl.com/cp/TeXbook.html>

        Bruce Thompson: "The definitive user's guide and complete
        reference manual for TeX.  Probably not needed for casual LaTeX
        use, but a fascinating book nonetheless."  I'll strengthen that
        by adding that this book is not for the faint of heart.


     The METAFONT book, Volume C of Computers and Typesetting
        Knuth, Donald A.; Addison-Wesley; 1986; 0-201-13444-6, 1986;
        384pp.
        See  <http://www.awl.com/cp/METAFONTbook.html>

        Bruce Thompson: "The definitive user's guide and reference
        manual for METAFONT, the companion program to TeX for designing
        fonts.  An excellent work if you're planning to design your own
        fonts for use in TeX and LaTeX.  METAFONT is included with the
        normal TeX/LaTeX distribution."  This book is definitely not for
        the faint of heart.


  6.  Good Programming Style

  The following are classics on how to develop efficient programs:


     The Practice of Programming
        Kernighan, Brian W. & Pike. Rob; 1999; Addison-Wesley; ISBN
        0-201-61586-X.  See  <http://cm.bell-labs.com/cm/cs/tpop/>

        An excellent treatise on writing high-quality programs, surely
        destined to become a classic of the field.


     Programming Pearls (2nd Edition)
        Bentley, Jon; 2000; Addison-Wesley; ISBN ISBN 0-201-65788-0.
        See  <http://www.programmingpearls.com/>

        These are selected essays from Bentley's column in the
        Communications of the ACM. He discusses a wide variety of issues
        in program improvement, include a large number on efficiency.


     Writing Efficient Programs.
        Bentley, Jon Louis; 1982; Prentice-Hall, Inc.; ISBN
        0-13-970251-2 or 0-13-970244-X.

        This book presents Bentley's methodology and set of rules for
        improving program efficiency, and includes a large number of
        examples.


     7.  Books on C and C++ Programming


     7.1.  C and C++


        The C Programming Language (Second Edition)
           Kernighan, Brian W.; Ritchie, Dennis M; Prentice-Hall; 1988;
           ISBN 0-13-110362-8, 272pp.

           The improved second edition, covering ANSI C, of the original
           classic C book coauthored by C's designer, "K&R".  Still the
           best!


        Who's Afraid of C++?
           Heller, Steve; Academic Press; 1996; ISBN 0-12-339097; 508pp.

           The best introductory book on C++ I have seen.


     7.2.  C System Call Interface


        POSIX Programmer's Guide: Writing Portable Unix Programs
           Lewine, Donald; O'Reilly; 1992; ISBN 0-937175-73-0; 607pp.
           See  <http://www.ora.com/catalog/posix/noframes.html>.

           An excellent programmer's reference on the POSIX.1 standard.
           I like this one better than JH's choice.


        The Posix.1 Standard: A Programmer's Guide
           Zlotnick, Fred; Benjamin, Cummings; 1991; ISBN 0-8053-9605-5;
           379pp.; $35.95 (USA).

           JH: "When I complained about the lack of Section 2 man pages
           in Linux, somebody told me just to get a POSIX book, because
           that's what Linux does.  I like this book because I'm not a
           professional programmer and the author gives copious
           explanations and examples."


        Advanced Programming in The Unix Environment
           Stevens, Richard; 1992; ISBN 0-201-56317; Addison-Wesley

           A book on general Unix programming that is every bit as good
           as Stevens's classic on network programming.


        Linux Application Development
           Michael K. Johnson, Erik W. Troan; 1998; ISBN 0201308215;
           Addison-Wesley.

           The best reference to the C API of Linux.



     8.  Books on Networking



        Unix Network Programming
           Volume 1, Networking APIs: Sockets and XTI W. Richard
           Stevens, PTR Prentice-Hall, 1998 ISBN 0-13-490012-X

           UNIX Network Programming 2nd Edition, Volume 2, Interprocess
           Communications W. Richard Stevens PTR Prentice-Hall, 1998
           ISBN 0-13-081081-9

           Everything you might want to know about the subject.
           Generally regarded as definitive on the basics.


        Linux Network Administrator's Guide
           Kirch, Olaf; O'Reilly; 1995; ISBN 1-56592-087-2; 335pp.
           See  <http://www.ora.com/catalog/linag/noframes.html>.
           A practical guide to Linux's TCP/IP and related services.
           Accessible on the Web at the Linux Documentation Project
           page, or directly at
           <http://sunsite.unc.edu/LDP/LDP/nag/nag.html>.


        TCP/IP Network Adminstration
           Hunt, Craig; O'Reilly Associates, ISBN 0-937175-82-X; 1992;
           472pp.
           See  <http://www.ora.com/catalog/tcp2/noframes.html>.

           Less Linux-specific than the Kirch book.  Features deeper
           coverage of the TCP/IP core, including routing and BGP.


        DNS and BIND (Second Edition)
           Albitz, Paul, and Liu, Cricket; O'Reilly; 1998; ISBN
           1-56592-512-2; 502pp; $32.95.
           See  <http://www.ora.com/catalog/dns2/noframes.html>.

           In-depth coverage of DNS, useful for people running
           complicated multiple-subnet installations. Covers BIND
           library programming.


        Sendmail (Second Edition)
           Costales, Bryan & Allman, Eric; O'Reilly; ISBN 1-56592-222-0;
           1997; 1050 pp; $32.95
           See  <http://www.ora.com/catalog/sendmail2/noframes.html>.

           An exhaustive (and exhausting) guide to Linux's and Unix's
           default mail-transfer agent.


     9.  Books on Unix Kernel Implementation


     9.1.  Ancestors of Linux


        The Design of the Unix Operating System
           Bach, Maurice J.; Prentice-Hall; ISBN 0-13-201799-7; 470pp.;
           $60 (USA).

           The book that got Linus started.  See
           <http://www.prenhall.com/books/ptr_0132017997.html>


        Operating Systems, Design and Implementation;
           Tanenbaum, Andrew S.; Prentice-Hall; 1987.

           See  <http://www.prenhall.com/books/esm_0136386776.html>.
           Alan Cox (one of the core kernel people) likes this book.
           Tanenbaum designed Minix, which is the system Linus
           bootstrapped Linux up from.


     9.2.  Linux


        The Linux Kernel book
           Rmy Card, Eric Dumas, Franck Mevel; John Wiley and Sons;
           1998; ISBN 0-471-98141-9.  $100 (AUS).

           (Translated from the French language edition of
           "Programmation Linux 2.0"; same authors; 1997; ditions
           Eyrolles; Paris, France.)

           A very interesting and informative description of the
           operation of the kernel that fills in the gap between the
           POSIX interface and "The Design of the Unix Operating System"
           and the Linux source code.  A good understanding of the
           design and operation of a Unix OS is a pre-requisite, but
           this book is an excellent help to going beyond that general
           understanding into actual work.

           The primary author is one of the core developers for the ext2
           filesystem, and the Linux Kernel book shows a firm grasp of
           the matter and clear explanations and structure.  It's
           surprisingly readable for something working at such a low
           level.  The book does seem to have suffered a little in the
           translation to English -- there are a few typos and
           grammatical mistakes, but it's quite readable.  (The code
           example files are charmingly still named in French.)

           Network protocol implementations are not covered.

           The book's current to Linux 2.0.35 and foreshadows 2.1 and
           2.2.



        Linux Kernel Hackers' Guide
           Johnson, Michael K.

           Accessible on the Web at the Linux Documentation Project
           page, or directly at .


        LINUX Kernel Internals (Second Edition)
           Beck, Michael & Bohme, Harold & Mirko, Dziadzka & Kunitz,
           Ulrich & Magnus, Robert & Verworner, Dick; Addison Wesley;
           1998; ISBN:0-201-33143-8; 480.
           See  <http://www.awl-he.com/titles/11653.html>.

           A guide to Linux kernel programming; covers 2.0.



     9.3.  Relatives of Linux


        The Design and Implementation of the 4.4BSD Unix Operating Sys-
           tem
           McKusick, Marshall Kirk, Bostic, Keith, Karels, Michael J.,
           and Quarterman, John S.; Addison-Wesley; 1996; ISBN
           0-201-54979-4; 608pp.
           See  <http://www.awl-he.com/titles/13693.html>.

           The successor to a classic book on the implementation of the
           4.3 BSD kernel, which influenced Linux's design (especially
           near sockets and networking).  This book covers the 4.4BSD
           base of BSD/OS, FreeBSD, and NetBSD.


        Porting Unix to the 386; Jolitz, William F., and Jolitz, Lynne
           G.
           Dr. Dobb's Journal; Jan 1991-July 1992.




     10.  Books on Intel processor architecture and programming


        80386 Programmer's Reference Manual
           Intel Corp.; ISBN 1-55512-022-9; 1986;

           Part I. Applications Programming, data types, memory model,
           instruction set.  Part II. Systems Programming, architecture,
           memory management, protection, multitasking, I/O, exceptions
           and interrupts, initialization, coprocessing and
           multiprocessing. Part III.  Compatibility (with earlier x86
           machines).  Part IV. Instruction Set.


        80386 System Software Writer's Guide
           Intel Corp.; ISBN 1-55512-023-7; 1987.

           This explains the 386 features for operating system writers.
           It includes a chapter on Unix implementation.  A lot of the
           80386 architecture seems to have been designed with Multics
           in mind; the features are not used by DOS or by Unix.


        Programming the 80386
           Crawford, John H & Gelsinger, Patrick P.; Sybex; ISBN
           0-89588-381-3; 774pp.; $26.95 (USA).

           This is the book the Jolitzes used when they ported BSD to
           the 386 architecture.


        Pentium Processor User's Manual: Volume 3, Architecture and Pro-
           gramming
           Manual" Intel Corp.; 1993; ISBN 1-55512-195-0;

           Pretty much the Pentium version of the 80386 Programmer's
           manual listed above.


     11.  Books on PC-Class Hardware

     Note: these books are four or five years old and possibly out of
     date.  I don't really grok hardware...


        80386 Hardware Reference Manual
           Intel Corp.; 1986; ISBN 1-55512-024-5;

           Pin connections, timing, waveforms, block diagrams, voltages,
           all that kind of stuff.


        The Indispensable PC Hardware Book
           Messmer, Hans-Peter; Addison-Wesley; 1993; ISBN
           0-201-62424-9; 1000 pp.

           JH: "Covers the more recent stuff like EIDE and PCI."


     12.  Administrivia


     12.1.  Terms of Use

     This document is copyright 1999 by Eric S. Raymond. You may use,
     disseminate, and reproduce it freely, provided you:
     o  Do not omit or alter this copyright notice.

     o  Do not omit or alter or omit the version number and date.

     o  Do not omit or alter the document's pointer to the current WWW
        version.

     o  Clearly mark any condensed, altered or versions as such.

        These restrictions are intended to protect potential readers
        from stale or mangled versions.  If you think you have a good
        case for an exception, ask me.


     12.2.  History

     This was originally a mini-HOWTO maintained by Jim Haynes.  I have
     changed the emphasis somewhat, trying to make it more a standalone
     document and less reliant on the various USENET bibliographic
     postings.  The unattributed mini-reviews are mine rather than his.














































