Chapter 16. Physical Layout of the Kernel Source

So far, we’ve talked about the Linux kernel from the perspective of writing device drivers. Once you begin playing with the kernel, however, you may find that you want to ``understand it all.'' In fact, you may find yourself passing whole days navigating through the source code and grepping your way through the source tree to uncover the relationships among the different parts of the kernel.

This kind of ``heavy grepping'' is one of the tasks my home computer has been set up to specialize in, and it is an efficient way to retrieve information from the source code. However, acquiring a little knowledge-base before sitting down in front of your preferred shell prompt can be helpful. This chapter presents a quick overview of the Linux kernel source files, based on version 2.0.x. The file layout hasn’t changed much from version to version, although I can’t guarantee that it won’t change in the future. So the following information should be useful, even if not authoritative, for browsing other versions of the kernel.

In this chapter, every pathname is given relative to the source root (usually /usr/src/linux), while filenames with no directory component are assumed to reside in the ``current'' directory--the one being discussed. Header files (when named with angle brackets--< and >) are given relative to the include directory of the source tree. I won’t introduce the Documentation directory, as its role should be clear.

Booting the Kernel ...

Get Linux Device Drivers now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.