Linux Kernel in a Nutshell (1st ed.)
- ISBN: 0-596-10079-5
- Publisher: O'Reilly
- Publication Date: December 2006
- Pages: 198
- Price: £24.99
"Linux Kernel in a Nutshell" is an exception to the rule about books on the Linux kernel - it's actually quite short. Written by a well-known kernel developer, its aim isn't to give an overview of the kernel's code or functionality, but instead to introduce users to the task of building and configuring their own kernel and the tools used in kernel development. The idea is to help users over the tools-learning stage of becoming a kernel developer, and therefore start producing useful code sooner.
It seems surprising that the book is needed at all. After all, many users attempt to run a newer or customized kernel, there is a lot of information on it already published, and many distributions offer their own ways of building kernels and their own supported kernels. However, on reading, one quickly realizes that its has considerably more depth than the HOWTOs on the Internet. In fact, the author also assumed that the information was out there as well, and was surprised when it wasn't easy to find and was quite spread out. His other goal was to consolidate all the infomation together in one text.
The book starts off with some simple material - tools used, GCC, binutils and the like, and fetching the kernel source. It also covers why a user would want to build his own kernel. It then moves on to discussing the methods used to configure the kernel. Rather than pick his preferred method and just use that, the author has discussed all the different ways currently possible. For building, rather than just give the command make, he discusses parallel building, cross compiling and other build options. For installing, he both covers the automatic ways of the install, and how to do it manually. However, he doesn't introduce any new material or insight than one would find online for this section. However, in the next section he discusses upgrading from a older kernel configuration, and, combined with information on getting your distribution's kernel configuration, this proves to be a quick and simple way to keep up to date on the latest kernel release.
His final non-reference material is on the different configuration options in the kernel. He provides a careful guide to locating the drivers needed, and provides recipes for standard configuration options - considerably better than most documentation.
He also provides a detailed reference on kernel boot, build and other configuration options. This may well be useful for folk attempting to perform more complex boot options. He does suggest how to change these options at runtime, and what effect they have. The suggestion is that budding kernel developers may want to play around with these options. I didn't have need to fiddle with most of these options - and many of them can have adverse effects, so this section is less well covered.
The book includes two appendices, one of which discusses other books to read, the other of which discusses tools. It also suggests tools thoughout the book. The tools section starts with discussing two standard tools - patch and diff - and moves on to discuss tools used by the kernel development community: quilt, git and ketchup. While these are all nicely introduced, there isn't a lot of information on working with git in particular - a odd omission, considering the steadily increasing use of git in the kernel process. However, his coverage of tools - both the in text and the tools appendix, is otherwise good.
The author has reached his goal of having all the infomation in one place, and has produced one of the better references to the process of working with the Linux kernel, though not its internals or APIs. It's better than online documentation owning to its coverage and the fact that the information in the book is also spread over many websites. However, like all books, it may age. Already the kernel is 4 minor versions ahead of the version shown in the screen shots and at some point there may be major changes which obsolete the book. However, it's a very useful, clearly written piece of documentation right now, and I'll recommend it. It's also available online under a Creative Commons License.