Linux Kernel Development — Episode 3: Kernel Modules and Build Configuration
In this episode, I started actually interacting with the Linux kernel source code.
Following the tutorial on Linux kernel build configuration and modules, the main goal was to understand how the kernel is organized in terms of features and how we can extend it by creating our own modules.
One of the first important concepts here is that not everything in the kernel needs to be compiled directly into it. Instead, many features can be built as modules, which can be loaded and unloaded dynamically. This makes development much faster and safer, since you don’t need to rebuild and reboot the entire system every time you make a small change.
I created a very simple kernel module just to understand the workflow:
- writing the module code
- creating a Makefile
- compiling it against the kernel
- inserting and removing it from the system
Even though the example was simple, it helped clarify how the kernel build system works, especially with tools like make and configuration files.
Another key takeaway was how kernel configuration works. Instead of editing everything manually, the kernel provides configuration interfaces that let you choose which features should be built-in, modularized, or ignored.
At this point, things started to feel more concrete. Instead of just setting up environments and compiling kernels, I was finally modifying behavior and seeing how the system reacts.
This tutorial builds directly on the previous one, since having a working kernel build environment is essential to compile and test modules.