It used to be that compiling a custom Linux kernel was almost a necessity. Something you just had to do if you wanted a working system. These days, with loadable kernel modules and better hardware support in the vanilla kernel, I find kernel patching and custom configuration less “necessary” but often still desirable.

I’m curious. Why do Linux users these days configure and compile a kernel? To increase performance or hardware compatibility? To add filesystem support or enable experimental features? Just for the fun of it? An attempt to have absolutely the smallest kernel image possible? An attempt to build a highly portable kernel? My reason usually boils down to getting a new piece of hardware to work fully.

Also, what problems do most people have when compiling a kernel? Migrating to new kernel versions? Patching the kernel? Getting an initrd image to load? My biggest three problems are knowing which options I must enable, finding those options in menuconfig, and knowing the name of module I just compiled.

Please, write a comment and tell me why you find it necessary or desirable to compile a kernel, and the most annoying parts of the process.