- Series: In a Nutshell (O'Reilly)
- Paperback: 202 pages
- Publisher: O'Reilly Media; 1 edition (December 24, 2006)
- Language: English
- ISBN-10: 0596100795
- ISBN-13: 978-0596100797
- Product Dimensions: 6 x 0.4 x 9 inches
- Shipping Weight: 6.4 ounces (View shipping rates and policies)
- Average Customer Review: 11 customer reviews
- Amazon Best Sellers Rank: #1,026,210 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Linux Kernel in a Nutshell: A Desktop Quick Reference (In a Nutshell (O'Reilly)) 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
"Children of Blood and Bone"
Tomi Adeyemi conjures a stunning world of dark magic and danger in her West African-inspired fantasy debut. Pre-order today
Frequently bought together
Customers who bought this item also bought
Customers who viewed this item also viewed
"you can't go wrong with adding Linux Kernel in a Nutshell to your library." - James Pyles, Linux Magazine, March 2007
About the Author
Greg Kroah-Hartman has been building the Linux kernel since 1996 and started writing Linux kernel drivers in 1999. He is currently the maintainer of the USB, PCI, driver core and sysfs subsystems in the kernel source tree and is also one half of the -stable kernel release team. He created the udev program and maintains the Linux hotplug userspace project. He is a Gentoo Linux developer as well as the co-author of the third edition of the "Linux Device Drivers" book and a contributing editor to Linux Journal. He also created and maintains the Linux Device Driver Kit. He currently works for SuSE Labs/Novell, doing various Linux kernel related tasks.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
It's first and foremost a reference, and I am already pulling it out with some frequency. But it's also good for filling in some gaps in my knowledge of the Linux kernel as I'm far from an expert but also not a beginner, and this book has also helped me build some intuition into Linux and the kernel. Especially helpful is part II, showing how to determine the correct module and some of the kernel configuration recipes, as these would be helpful for a newbie and can help bring someone past the newbie level up to another level.
For anyone dealing with the Linux kernel in their work, this book definitely belongs in their collection.
This book is on a very short list of books that I keep two copies of (one for work and one for home). I recommend it for anyone involved with the linux kernel, from superusers to kernel hackers, to students.
The author is great at explaining what you will need and how to approch this massive project and knows when to introduce the topics you will need next to develop. They explain all programs, devices, mods, setups, and configs that are built into linux and help to build your overall view of the subject.
This book is amazing!
The author does a reasonably good job of explaining and listing the major data structures of every critical subsystem. He gives small code excerpts in order to illustrate the pertinent algorithms of the kernel, and for the most part he spares the reader from multiple page-long listings that you might find in other publications. This is classic O'Reilly style and the reader will appreciate this format when approaching such a large monolithic codebase.
Now the drawbacks. The book is written primarily from a descriptive standpoint, and a good 40%-50% of the text in every chapter is really just the author's paraphrasing of key algorithms into English. This often boils down to a long point-form list of the author's notes and comments that he made "inline" in the source while deciphering the code itself -- without the code. This gives the book an airy feel to it. I'm not sure who would benefit exactly from this style of exposition. I think that most readers will actually have the intent of doing something practical that involves the subsystem in question (writing a kernel module, injecting code into a process, trapping kernel calls, etc.) Those that do want a comprehensive view of a subsystem (perhaps for teaching) will benefit from the overviews and conceptual explanations but not likely from the algorithm translations -- they're better off looking directly at source code for that. If you rely on this book's code paraphrase, you are also locking yourself to its publication date of 2006 -- now a bit dated.
There are also quite a few syntactical and referential annoyances. These are frequent enough to merit at least one star of demerit. I can understand that with so many cross-dependencies between the components of a subsystem, it is difficult to present them all in a straightforward linear order with each section building only on previous material. However, it is still frustrating to encounter the phrase "(abcxyz, discussed later in this chapter)" in nearly every section. Although these can't be avoided entirely, they can be ameliorated by providing a broader overview at the beginning of each section in order to lessen the load of forward references throughout the chapter. There are also relatively minor spelling mistakes, and a number of places where variables undergo subtle name changes across code fragments. These aren't terribly frequent but do detract from the feeling of a polished product. Finally, the book is overly biased toward Intel x86 and toward 32-bit architecture. Although additional clauses and sections are often appended to deal with 64-bit architecture, it is clear that this was not the default in 2006 as perhaps it is today in 2015.
If the author is reading this and is planning another edition, I would offer the following feedback: please trim down the use of point-form paraphrase of the code in favour of conceptual illustrations and pointers to resources for the how-to audience. If any of us need to know the precise details of a list item allocation or deallocation, we can probably figure that part out ourselves or consult the source code. Conceptual discourse is also less susceptible to source code evolution and might produce a more lasting product. Also, providing more pointers into the source code modules themselves and to other stable resources on the internet would really help readers approach practical aspects of kernel development.
All said, the explanations given are for the most part quite good and I would recommend this book to anyone wanting a comprehensive understanding of the kernel's subsystems as of 2006, but be prepared to skim or skip the translations of algorithms to English in favour of reading source code where you need to. It is also less valuable but not worthless as a primer for practical work on the kernel. If you have a practical project in mind involving kernel modification, I would supplement this book with some Google searching for similar projects and some tutorials so that you have some ideas about workflow, toolchain, and work environment and other considerations since this book does not touch upon practical development at all.