In this chapter, we covered the basics of Linux kernel architecture and the LKM framework. You learned what a kernel module is and why it's useful. We then wrote a simple yet complete kernel module, a very basic Hello, world. The material then delved further into how it works, along with how to load it, see the module listing, and unload it. Kernel logging with printk was covered in some detail, along with rate limiting printk, generating kernel messages from the user space, standardizing it's output format, and understanding the basics of the kernel module Makefile.
That ends this chapter; I urge you to work on the sample code (via the book's GitHub repository), work on the Questions/assignments, and then proceed on to the next chapter, continuing our coverage of writing a Linux kernel module.