This document lists what I consider to be the essential book-length references for learning Unix (especially Linux) and how to program under it.
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.
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.
For on-line HOWTOs, magazines, and other non-book material, see the Linux Documentation Project home page.
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.
SAGE, the System Administrator's Guild, maintains an excellent list of relevant books at http://www.usenix.org/sage/sysadmins/books/booklist.html.
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.)
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.
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.
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!"
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"...
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.
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.
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.
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.
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.
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.)
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."
Cheswick, William R. & Bellovin, Steven M.; Addison-Wesley;
1994; ISBN 0-201-63357-4; 320pp.
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.
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.
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.
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.
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"
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."
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.
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.
The following are classics on how to develop efficient programs:
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.
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.
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.
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!
Heller, Steve; Academic Press; 1996; ISBN 0-12-339097; 508pp.
The best introductory book on C++ I have seen. Now available on the Web
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.
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."
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.
Michael K. Johnson, Erik W. Troan; 1998; ISBN 0201308215; Addison-Wesley.
The best reference to the C API of Linux.
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.
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.
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.
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.
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.
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
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.
Rémy Card, Èric Dumas, Franck Mével; 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.
Johnson, Michael K.
Accessible on the Web at the Linux Documentation Project page, or directly at http://www.redhat.com/mirrors/LDP/LDP/khg/HyperNews/get/khg.html.
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.
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.
Dr. Dobb's Journal; Jan 1991-July 1992.
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.
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.
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.
Intel Corp.; 1993; ISBN 1-55512-195-0;
Pretty much the Pentium version of the 80386 Programmer's manual listed above.
Note: these books are four or five years old and possibly out of date. I don't really grok hardware...
Intel Corp.; 1986; ISBN 1-55512-024-5;
Pin connections, timing, waveforms, block diagrams, voltages, all that kind of stuff.
Messmer, Hans-Peter; Addison-Wesley; 1993; ISBN 0-201-62424-9; 1000 pp.
JH: "Covers the more recent stuff like EIDE and PCI."
This document is copyright 1999 by Eric S. Raymond. You may use, disseminate, and reproduce it freely, provided you:
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.
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.