The development phase of Linux 2.5 brought substantial changes to the kernel configuration process, the actual kernel build and, in particular, implementation and building of loadable modules.
The first part of this paper will give an overview of the user-visible changes which occured in Linux 2.5, on the one hand for users which build kernels themselves, on the other hand for developers which maintain drivers or other parts of the kernel, in order to help porting to Linux 2.5/2.6.
The second part of the paper deals with the actual design and implementation of the current kbuild, showing how GNU make is actually flexible enough to allow for nice condensed Makefile fragments which per subdirectory describe which objects to build into the kernel or as loadable modules. The paper ends with an outlook showing possible approaches for implementing additional features.
The paper also explains the improvements in handling loadable kernel modules, including symbol versioning, and the necessary build system changes.