Chapter 7. Kernel Development

Developing software for Linux systems occasionally requires a more intimate knowledge of the internal design of the operating system kernel itself. This is especially true if you need to write a Linux device driver, but there are other reasons that you may end up delving a little deeper. People who port the Linux kernel to new hardware platforms, fix bugs, add new functionality, work out performance bottlenecks, or improve scalability to huge (or tiny) systems are among those who have legitimate reasons to be hacking away at the core algorithms that make Linux (literally) tick.

Sometimes, it's not about changing the kernel in any way at all. The Linux kernel is a very unusual example of a program that follows few of the norms you may be used to in writing application code. When writing kernel code, you need to handle all memory allocations explicitly—nobody is going to free up memory on your behalf—and you need to worry about very real programming errors or dead/live locks that can bring the entire system crashing down around you. Consequently, many are simply morbidly curious to know more about how the kernel that they rely on is put together.

Whatever your interest in the internal design of the Linux kernel, this chapter will lay the groundwork. In this chapter, you'll learn how working with the kernel differs from writing regular user applications. You'll learn how to build the Linux kernel from the latest development releases, how to track the public ...

Get Professional Linux® Programming 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.