Dec 13, 2008

A UNIX bi(bli)ography... and then some (subtitled: what did I do with my life???)

Here's something I've been meaning to do for a while and today is the day. Blame it on dark winter boredom, on accidentally stumbling on that dusty cardboard box in the cellar or on mid-life crisis.

Whatever. Some of you out there will get it and I salute you.

My interest in UNIX started in early 1992 while studying for my Computer Science engineering degree. Rémy Card was teaching the UNIX class, so I got a Linux system running from day 1 :) The first release I installed was 0.13, which then became 0.95 in March '92 (the first release with X Window support). I still remember downloading the floppy images from René Cougnenc's BBS (RIP friend).

Shortly after, Rémy et René et myself co-wrote what it possibly the first magazine article ever published on France on Linux (available here).

There wasn't a lot of Linux documentation at that time... and none in French. So I started writing my own guide, called "Le Guide du Rootard pour Linux (GRL)". I also translated the Linux info sheet with some help from René. For a while, these two documents were the only Linux documentation in French (here's a later post from May '94 in fr.comp.os.linux).

During that time, I got to meet Linus Torvalds a few times. I also attended the 1st Linux Conference in Heidelberg in '94 and met Richard Stallman there.

By then, I had started to work - which meant that I had less time - and I was also growing increasingly annoyed by the business circus surrounding Linux. In May '95, I decided to stop maintaining the GRL: here's the farewell thread in fr.comp.os.linux, with Rémy saying that I "massively contributed to Linux usage in France". That was 13 years ago. Man!

In late '96, I somehow found the time to work on a French translation of Kirk McKusick's 4.4BSD book (see below)... and I swore I would never do it again. This book consumed all my evenings (and many nights) for months. I guess having the privilege to exchange some e-mails with Kirk was worth it all!

And then life went on. I'm too young and too alive for a proper eulogy, so this is where I stop :)

Without further ado, here's my UNIX bi(bli)ography, with a couple of other OS books thrown in for good measure. I added links to Amazon to help you buy them (no, I'm not making any money in the process).

1. Lions' commentary on UNIX 6th Edition, by John Lions (written 1977, published 1996)

This book is a commented printout of the Unix V6 kernel code. Obviously influential... if you had a copy at the time. Still a great read, showing the simplicity and purity or early UNIX. And definitely nice to have for historical purposes.

2. The Design of the UNIX Operating System, by M.J. Bach (published 1986)
The first proper book on the UNIX kernel (mostly System V Release 2), covering all major topics: process management, file system, I/O, etc. Hardly any code, but lots of detailed explanations, figures and algorithms.

A very good book that helped me a lot in the early days. If you were working on System V UNIX in the early nineties, this was the one to have.

3. The Design and Implementation of the 4.3BSD UNIX Operating System, by S. Leffler, K. McKusick, M. Karels & J. Quaterman (published 1989)

What can I say? To UNIX geeks, this is the Ancient Testament. The story has been told many times, but the importance of Berkeley UNIces (4.2, 4.3 & 4.4) cannot be stressed enough, both on a technical and a "philosophical" point of view.

Open Source as we know it would not exist were it not for a bunch of crazies at the University of Berkeley.

4. The Basic Kernel - Source Code Secrets, by W. Jolitz and L. Jolitz (written in 1991, published 1996)

386BSD, the OS that never really was... Unfortunately, this book is not a printout of the "Porting UNIX to the 386" series published in Dr Dobbs magazine in 1991. It's mostly a commentary of low-level kernel code (mostly dealing with process management), which I must say I did not find particularly fascinating.

Although this is volume 1, no additional volume was ever published. I think I know why...

5. Advanced Programming in the UNIX Environment, by R. Stevens (published 1992)

The best UNIX programming book I read, which covers UNIX concepts, system calls, the ANSI C library, etc. Tons of real-life code is also provided.

The late R. Stevens also wrote several other fantastic books on TCP/IP and network programming. He truly was a great technical author.

6. The Design of OS/2, by H Deitel and M. Kogan (published 1992)

Not UNIX but still a very good OS, so superior to Windows at the time (remember Windows 3.0???). A dry but very serious book on designing a true multitasking OS for the i386.

I learned a lot from this one, especially with OS/2 running on my triple-boot i486. DOS, OS/2, Linux : yeah baby, those were the days :)

7. Programming under Mach, by K. Boykin, D. Kirschen, A. Langerman & S. LoVerso (published 1993)

Still not UNIX, but getting closer. Microkernels helped redefine the architecture of traditional operating systems and Mach is probably the most widespread: a number of proper UNIces have been built over the Mach microkernel, from OSF/1 to MacOS X!

Beyond Mach programming, this is a good book to understand what the fuss is all about. I used it in '94-'96 when I was working on the MASIX project, publishing several papers with Franck Mevel in the process:

- "Overview of the Masix Distributed Operating System", SIPAR Workshop on Parallel and Distributed Systems, Biel-Bienne, Switzerland, 1995
- "Distributed communication services in the Masix system", Proceedings of the 15th International Conference on Computers and Communications, IEEE, Phoenix, pp 172-178, 1996.
- "Secure Communication Services in the Masix Distributed Operating System", Proceedings of the IASTED, NETWORKS, Orlando, pp 5-9, 1996.

8. UNIX Power Tools, by J. Peek, T. O'Reilly & M. Loukides (published 1993)

Over 1000 pages of UNIX tips, tricks and wizardry. Command line tools, scripting, etc: this book has it all. I have the 1st edition, but the book has been revised several times and a lot of it still applies.

This book saved me many times (Ubuntu forums and Google didn't exist, remember?) and on more quiet occasions, it just looked nicely geeky on my coffee table ;)

9. Distributed Systems - Concepts and Design, by G. Coulouris, J. Dollimore & T. Kindberg (published 1994)

Lots of books have been written on distributed systems and this is simply the BEST (I have the 2nd edition, but a 4th edition has been published in 2005). It has the most complete and clearest descriptions of many complex distributed algorithms (clocks, transactions, etc).

It also covers three microkernels used for UNIX-like distributed systems (Mach, Chorus & Amoeba).

10. The Magic Garden Explained - The Internals of UNIX System V Release 4, by B. Goodheart & J. Cox (published 1994)

There was before and after this book, a true landmark in UNIX history. For the first time, this book revealed kernel-level information on SVR4, which was at the core of many commercial UNIces.

With accurate, up-to-date and crystal-clear descriptions of kernel data structures, algorithms and principles, this is maybe the best and most usable UNIX kernel book ever written.

11. A Quarter Century of UNIX, by P. Salus (published 1994)

This isn't a technical book, but a detailed account of the early days told by the people who lived them. If you want to learn how it all started (and sometimes how it all went wrong), this is the book to read.

And you also get to see pictures of all the Great Ancients, including Biff the Dog.

12. UNIX Internals - The New Frontiers, by U. Vahalia (published 1996)

Another very good kernel-level book, which covers all key areas (process management, IPC, filesystems, etc) as well some more exotic topics like distributed UNIX, NFS or kernel memory allocation (superb section!).

The particular interest of this book is that all concepts are with several real-life examples taken from all major UNIces : 4.4BSD, SVR4, Solaris, etc. As far as I know, this was the first book to compare different UNIX versions in such detail.

13. The Design and Implementation of the 4.4BSD Operating System, by K. McKusick, K. Bostic, M. Karels & J. Quaterman (published 1996)

The New Testament, revised and updated for what is the last UNIX version released by the University of Berkeley. The book is quite verbose and sometimes obscure, but it is invaluable.

A lot of 4.4BSD code ended up in many UNIces, especially in Open Source versions like NetBSD, FreeBSD, OpenBSD and Linux.

Conception et Implémentation du Système 4.4BSD, by K. McKusick, K. Bostic, M. Karels & J. Quaterman (published 1997).

I loved that 4.4BSD book so much that I worked on the French translation... and I lived to regret it :) I think my English is quite good and my technical skills aren't too bad either, but try the section "explaining" virtual memory management on the VAX: this one alone almost made me quit!

14. UNIX Internals - A Practical Approach, by S. Pate (published 1996)

A slightly misleading title, as this book solely talks about SCO UNIX System 5 Release 3.2 for i386 architectures. A good kernel book, if you work(ed) on SCO UNIX or if you want(ed) to learn about a given UNIX implementation for the Intel architecture.

For my purposes, I found the scope a bit narrow and liked the "Magic Garden" book much better. And no, the "SCO vs the world" soap opera has nothing to do with it!

15. Solaris Internals - Core Kernel Architecture, by J. Mauro & R. McDougall (published 2001)

The first book on the Solaris kernel (2.5 to 2.7). I was working for Sun Microsystems at the time, so I particularly enjoyed it. Sun is good at writing documentation and although the content is highly technical, this book is an easy read, presenting complex kernel features in great detail.

The same authors have since then written a Solaris 10 / OpenSolaris book which I have yet to read.

16. Red Hat Certified Engineer Linux Study Guide, by M. Jang (published 2007)

I use this book as a quick reference for common System Administration tasks on Red Hat Linux (RHEL, Fedora & CentOS). What I like about it is that it's well organized, theory-free and goes straight to the point, which is exactly what I was looking for. I don't think I need another vanilla UNIX book :)

Who knows, maybe I'll actually go and try to pass the certification...

All these books would have been of little use without actual code to work on. A little more exploration in The Vault revealed a cool series of vintage CDs, from a time where broadband didn't exist and even universities had slow Internet access. I'm sure these will bring back some memories :)

From top to bottom and from left to right:

- 4.4BSD Lite (1 CD, June '94): complete 4.4BSD Lite source distribution, with all AT&T files removed. This is where NetBSD, FreeBSD & OpenBSD come from.

- BSDisc (1 CD, November '94): complete source & binaries for NetBSD 1.0 and FreeBSD 2.0. As far as I know, this was the first CD release for both OSes.

- FreeBSD 2.0.5 (2 CDs, July '95): full distribution (sources & binaries) plus a live CD.

- FreeBSD 2.2.5 (4 CDs, November '97): full distribution (sources & binaries), plus a live CD and a copy of the CVS repository.

- FreeBSD Toolkit (6 CDs, May '99): FreeBSD 2.2, 3.1 & 4.0, plus a ton of packages. It was really time for the DVD-ROM to be invented :)

- GNU - Free Software for UNIX (1 CD, February '96): 83 source packages, with pre-compiled binaries for SunOS 4.1.4 and Solaris 2.4. Emacs, gcc, g++, gdb, perl 4 & 5. Says the backcover: "With this disc, you can bring any barebones system up to a professional working environment" :)

Wow, this has turned into a monster post... and I still have a few more books somewhere: where on Earth is that great book on Windows NT internals? Did I burn it?

Anyway, that's it for today. Thank you very much for reading this far: if you enjoyed this post, please leave a comment and let's share some UNIX love :)

1 comment:

  1. Not that I'm a big Unix lover (not at all in fact :) ), but this thread reveives some good ol' memories here!! Dude, I remember the incredible energy you put in your translations!!!

    Nevermind, if one day I decide to check on the linux side, I definitely use your link for a start.