The Linux Reading List HOWTO
Eric
Steven
Raymond
Thyrsus Enterprises
esr@thyrsus.com
1.20
2001-06-14
esr
Removed "Practical Unix Security"; it's five years old and
the material is now covered better by other books.
1.19
2001-06-14
esr
Added Ross Anderson's "Security Engineering". Corected ISBNs.
2000
Eric S. Raymond
Copyright
Permission is granted to copy, distribute and/or modify
this document under the terms of the Open Publication License,
version 2.0.
This document lists the books I think are most valuable to a person
trying to learn Unix (especially Linux) top to bottom.
Introduction
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.
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.
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.
Related Resources
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 here.
SAGE, the System Administrator's Guild, maintains an excellent
list of relevant books.
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.)
Basic Linux and Unix bibliography
Books on Culture, History, and Pragmatics
The New Hacker's Dictionary
Third Edition
Eric S.Raymond
1996
ISBN 0-262-68092-0
MIT Press
547pp.
Um, er. A guide to Internet culture. Lots of people like it.
HTML at the Jargon File
Resource Page.
Order here.
A Quarter Century of Unix
Peter H.Salus
1994
ISBN 0-201-54777-5
Addison-Wesley
255pp.
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
Frederic P.Brooks
1995
ISBN 0-201-83595-9
Addison-Wesley
The one book on software engineering 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!"
Order here.
Bell System Technical Journal
AT&T
1978
July-August 1978, Vol. 57, No. 6, part 2
416pp.
Many early papers on Unix,
including Ritchie & Thompson, "The UNIX Time
Sharing System"; Thompson, "UNIX Implementation"; Ritchie, "A
Retrospective"; Bourne, "The UNIX Shell"...
Linux basics
Linux Installation and Getting Started
MattWelsh
1997
Linux Documentation Project
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
LarsWirzenius
1997
Linux Documentation Project
Available on the LDP home page, or
directly at http://linuxdoc.org/LDP/sag/.
An excellent first book on how to maintain and administer a
Linux system.
Linux in a Nutshell
Second Edition
Jessica P.Hekman
1999
ISBN 1-56592-585-8
O'Reilly & Associates
According to O'Reilly, "The Desktop Reference for Linux". For
Linux users this obsoletes their "Unix In a Nutshell" which was
SVr4/Solaris-oriented.
Order here.
Running Linux
Third Edition
MattWelsh
1999
ISBN 1-56592-469-X
O'Reilly & Associates
Everything you need in order to understand, install, and use the
Linux operating system. Excellent beginner's book.
Order here.
Hands-On Linux
Mark G.Sobel
1998
ISBN 0-201-32569-1
Addison-Wesley
1015pp.
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.)
Essential System Administration
Second Edition
AeleenFrisch
1995
ISBN 1-56592-127-5
O'Reilly & Associates
More in-depth coverage of normal system-administration tasks.
Not Linux-specific but contains Linux material.
Order here.
System Security
Security Engineering
A Guide to Building Dependable Distributed Systems
RossAnderson
2001
0-471-38922-6
Wiley
The best book I've ever seen on technological security
measures and general computer security.
The section on "How to Steal a Painting" and physical alarm systems
is worth the price of admission by itself.
Real World Linux Security
Intrusion Prevention, Detection, and Recovery
BobToxen
2000
ISBN 0-13-028187-5
Prentice-Hall
This is excellent work, the standard by which future Linux
security books will be judged. I wrote a foreword for it. Combines
step-by-step practical instructions on hardining a Linux system
with good theory on attack paths, rings of protection, and security
analysis. Describes many counters for specific exploits.
Books on Shell, Script, and Web Programming
Programming Perl
Third Edition
LarryWall
TomChristiansen
JonOrwant
2000
ISBN 0-596-00027-8
O'Reilly & Associates
1104pp.
Shell (as a programming language for more than trivial scripting)
is dead. Perl rules in its place (though it is now being strongly
challenged by Python). This is the third edition of
the definitive Perl book.
Order here.
Emmanuel Pierre keeps a short list of Perl
books.
Programming Python
First Edition
MarkLutz
1997
ISBN 0-56592-197-6
O'Reilly & Associates
880pp.
The next step beyond Perl. Python is beautifully designed,
has better integration with C, and scales up more gracefully to large
projects.
Order here.
HTML & XHTML: The Definitive Guide
Fourth Edition
ChuckMusciano
BillKennedy
2000
ISBN 0-596-00026-X
O'Reilly & Associates
680pp.
The best HTML tutorial/reference I have ever seen, and the only
HTML book you need unless you also want to do CGI. I don't know of
any other book on HTML that comes within miles of this one for
comprehensiveness, depth, and quality of organization.
Order here.
The Unix Programming Environment
BrianKernighan
RobPike
1984
ISBN 0-13-937681-X
Prentice-Hall
A true classic -- possibly the best single-book exposition of the
Unix philosophy. Useful for learning shell programming.
Tex and LaTeX
The LaTeX Companion
MichaelGoossens
FrankMittelbach
AlexanderSamarin
1994
ISBN 0-201-54199-8
Addison-Wesley
530pp.
`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"
Order here.
LaTeX: A Document Preparation System
LeslieLamport
1994
ISBN 0-201-52983-1
Addison-Wesley
256pp.
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."
Order here.
The TeXbook, Volume A of Computers and Typesetting
DonaldKnuth
1986
ISBN 0-201-13448-9
Addison-Wesley
496pp.
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.
Order here.
The METAFONT Book, Volume C of Computers and Typesetting
DonaldKnuth
1986
ISBN 0-201-13444-6
Addison-Wesley
386pp.
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.
Order here.
Good Programming Style
The Practice of Programming
BrianKernighan
RobPike
1999
ISBN 0-201-61586-X
Addison-Wesley
An excellent treatise on writing high-quality programs,
surely destined to become a classic of the field.
Order here.
Programming Pearls
(Second Edition)
JonBentley
2000
ISBN 0-201-65788-0
Addison-Wesley
These are selected essays from Bentley's column in the
Communications of the ACM. He discusses a wide variety of issues in
program improvement, often focusing on program efficiency.
Order here.
Writing Efficient Programs
JonBentley
1982
ISBN 0-13-970251-2 or 0-13-970244-X
Prentice-Hall
This book presents Bentley's methodology and set of rules for
improving program efficiency, and includes a large number of
examples.
C and C++
The C Programming Language
(Second Edition)
BrianKernighan
RobPike
1988
ISBN 0-13-110362-8
Addison-Wesley
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++?
SteveHeller
1996
ISBN 0-12-339097-4
Academic Press
508pp.
The best introductory book on C++ I have seen. Now available
on the Web.
C System Call Interface
POSIX Programmer's Guide: Writing Portable Unix Programs
DonaldLewine
1992
ISBN 0-937175-73-0
O'Reilly & Associates
607pp.
Linux hews very close to the letter of the POSIX standard
(non-conformance is considered a bug and swiftly fixed).
This excellent reference for POSIX is thus also an excellent
reference for the Linux kernel API.
Order here.
Advanced Programming in The Unix Environment
RichardStevens
1992
ISBN 0-201-56317-7
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 0-201-308215
Addison-Wesley
The best single reference to the Linux API. Covers the
features that aren't generic Unix or Posix.
Books on Networking
Unix Network Programming, volume 1 -- Networking APIs: Sockets and XTI
RichardStevens
1998
ISBN 0-13-490012-X
Prentice-Hall
Everything you might want to know about the subject. Generally
regarded as definitive on the basics.
Unix Network Programming, volume 2 -- Interprocess Communication
RichardStevens
1998
ISBN 0-13-081081-9
Prentice-Hall
Ditto...
Linux Network Administrator's Guide
OlafKirch
1995
ISBN 1-56592-087-2
O'Reilly & Associates
Available on the LDP home page, or
directly at
http://www.linuxdoc.org/LDP/nag/nag.html.
An excellent first book on how to maintain and administer a
networked Linux system.
TCP/IP Network Administration
CraigHunt
1992
ISBN 0-937175-82-X
O'Reilly & Associates
472pp.
Less Linux-specific than the Kirch book. Features deeper
coverage of the TCP/IP core, including routing and BGP.
Order here.
DNS and BIND
Second Edition
PaulAlbiz
CricketLiu
1998
ISBN 1-56592-512-2
502pp.
O'Reilly & Associates
In-depth coverage of DNS, useful for people running complicated
multiple-subnet installations. Covers BIND library programming.
Order here.
Sendmail
Second Edition
BryanCostales
EricAllman
1997
ISBN 1-56592-222-0
1050pp.
O'Reilly & Associates
An exhaustive (and exhausting) guide to Linux's and Unix's
default mail-transfer agent.
Order here.
Ancestors of Linux
The Design of the Unix Operating System
Maurice J.Bach
1996
ISBN 0-13-201799-7
470pp.
Prentice-Hall
The book that got Linus started.
Order here.
Operating Systems, Design and Implementation
Andrew S.Tanenbaum
1987
ISBN 0-13-638677-6
940pp.
Prentice-Hall
Alan Cox likes this book. Tanenbaum designed Minix, which is
the system Linus bootstrapped Linux up from.
Order here.
The Linux kernel
The Linux Kernel book
RémyCard
ÈricDumas
FrankMével
1998
ISBN 0-471-98141-9
John Wiley & Sons
(Translated from the French language edition of
"Programmation Linux 2.0"; same authors; 1997; Éditions
Eyrolles; Paris, France.)
A very interesting and informative examination 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.)
The book is current to Linux 2.0.35 and foreshadows 2.1 and 2.2.
Network protocol implementations are not covered.
Linux Kernal Hacker's Guide
Michael K.Johnson
Linux Documentation Project
Available on the LDP home page, or
directly at http://linuxdoc.org/LDP/khg/.
According to the author, this has been superseded by
Alessandro Rubini's book (see below) but it remains a useful
supplement.
Linux Device Drivers
AlessandroRubini
1998
ISBN 1-56592-292-1
O'Reilly & Associates
442pp.
Everything you need to know about writing device drivers
under Linux; kernel APIs, interrupt handling, the module interface.
Includes many examples.
Order here.
LINUX Kernel Internals
(Second Edition)
MichaelBeck
HaroldBohme
MirkoDziadka
UlrichKunitz
1998
ISBN 0-201-33143-8
Addison-Wesley
480pp.
A guide to Linux kernel programming; covers 2.0. Covers the
architecture of the Linux core and network layer as well as driver
construction.
Order here.
Relatives of Linux
The Design and Implementation of the 4.4BSD Unix Operating System
Marshall KirkMcKusick
KeithBostic
Michael J.Karels
John S.Quarterman
1996
ISBN 0-201-54979-4
Addison-Wesley
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.
Order here.
Books on Intel and PC hacking
80386 Programmer's Reference Manual
Intel Corporation
1986
ISBN 1-55512-022-9
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 Corporation
1987
ISBN 1-55512-023-7
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
John H.Crawford
Patrick P.Gelsinger
1987
ISBN 0-89588-381-3
774pp.
This is the book the Jolitzes used when they ported BSD to the
386 architecture.
80386 Hardware Reference Manual
Intel Corporation
1986
ISBN 1-55512-024-5
Pin connections, timing, waveforms, block diagrams, voltages,
all that kind of stuff.
The Indispensable PC Hardware Book
Hans-PeterMessmer
1993
ISBN 0-201-62424-9
1000pp.
Addison-Wesley
JH: "Covers the more recent stuff like EIDE and PCI."
Administrivia
Terms of Use
This document is copyright 1999 by Eric S. Raymond. You may use,
disseminate, and reproduce it freely, provided you:
Do not omit or alter this copyright notice.
Do not omit or alter or omit the version number and date.
Do not omit or alter the document's pointer to the current WWW
version.
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.
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.