O'Reilly logo

Linux Device Drivers, 3rd Edition by Greg Kroah-Hartman, Alessandro Rubini, Jonathan Corbet

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 19. Bibliography

Most of the information in this book has been extracted from the kernel sources, which are the best documentation about the Linux kernel.

Kernel sources can be retrieved from hundreds of FTP sites around the world, so we won't list them here.

Version dependencies are best checked by looking at the patches, which are available from the same places where you get the whole source. The program called repatch might help you in checking how a single file has been modified throughout the different kernel patches; it is available in the source files provided on the O'Reilly FTP site.


While the bookstores are full of technical books, there are surprisingly few that are directly relevant to Linux kernel programming. Here is a selection of books found on our shelves.

Linux Kernel

Bovet, Daniel P. and Marco Cesate. Understanding the Linux Kernel, Second Edition. Sebastopol, CA: O'Reilly & Associates, Inc. 2003.

This book covers the design and implementation of the Linux kernel in great detail. It is more oriented toward providing an understanding of the algorithms used than documenting the kernel API. This book covers the 2.4 kernel but still contains a great deal of useful information.

Gorman, Mel. Understanding the Linux Virtual Memory Manager. Upper Saddle River, NJ: Prentice Hall PTR, 2004.

Developers wanting to know more about the Linux virtual memory subsystem may wish to have a look at this book. It is centered around the 2.4 kernel but contains 2.6 information as well.

Love, Robert. Linux Kernel Development. Indianapolis: Sams Publishing, 2004.

This book covers Linux kernel programming with a broad scope. It is a reference that should be on every Linux hacker's bookshelf.

Yaghmour, Karim. Building Embedded Systems. Sebastopol, CA: O'Reilly & Associates, Inc. 2003.

This book will be useful to those writing Linux code for embedded systems.

Unix Design and Internals

Bach, Maurice. The Design of the Unix Operating System. Upper Saddle River, NJ: Prentice Hall, 1987.

Though quite old, this book covers all the issues related to Unix implementations. It was the main source of inspiration for Linus in the first Linux version.

Stevens, Richard. Advanced Programming in the UNIX Environment. Boston: Addison-Wesley, 1992.

Every detail of Unix system calls is described herein, which is a good companion when implementing advanced features in the device methods.

Stevens, Richard. Unix Network Programming. Upper Saddle River, NJ: Prentice Hall PTR, 1990.

Perhaps the definitive book on the Unix network programming API.

Web Sites

In the fast-moving world of Linux kernel development, the most current information is often found online. The following is our selection of the best web sites as of this writing:


This site is the home of Linux kernel development. You'll find the latest kernel release and related information. Note that the FTP site is mirrored throughout the world, so you'll most likely find a mirror near you.


This site hosts the source repositories used by a number of prominent kernel developers. In particular, the project called "linus" contains the mainline kernel as maintained by Linus Torvalds. If you are curious about the very latest patches which have been applied to the kernel, this is the place to look.


The Linux Documentation Project carries a lot of interesting documents called "HOWTOs"; some of them are pretty technical and cover kernel-related topics.


This page contains many kernel-oriented magazine articles written by Alessandro Rubini. Some of them date back a few years, but they usually still apply; some of them are in Italian, but usually an English translation is available as well.


At the risk of seeming self-serving, we point out this news site that, among other things, offers regular kernel development coverage and API change information.


Kernel Traffic is a popular site that provides weekly summaries of discussions on the Linux kernel development mailing list.


This site picks up occasional interesting developments in the Linux and BSD kernel communities.


This site is oriented toward new kernel developers. There is beginning information, a FAQ, and an associated IRC channel for those looking for immediate assistance.


The Linux Kernel Janitor project is the place where new kernel programmers can learn how to join in the development effort. A wide range of small, generally simple tasks that need to be done all over the kernel are described here. There is a mailing list that helps new developers get these changes into the main kernel tree. This is a great place for anyone wanting to start doing Linux kernel development but not knowing where to begin.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required