Compiling the Linux kernel
Just for the learning experience, I have recompiled the Linux kernel with different options, installed and booted from it. It was both instructive and straightforward. However, I was overwhelmed by the large number of options available.
My questions are:
- Does it make sense to spend time trying to optimize the Linux kernel for my particular laptop? Will it make a significant improvement?
- Are there any tools that can read the configuration of my computer and suggest a config?
In all actuality, the kernel provided by your distro is probably the best one for almost everybody. What pretty much every distro is doing is compiling all options as modules and dynamically loading the modules as they are needed.
It's a good exercise, especially if you're interested in learning about the kernel, but as far as day to day operation goes the performance benefits on a desktop or workstation will be slight to non-existent, even with the best compile time optimizations for your specific CPU.
If you're doing this for education more than for performance then I suggest you try to compile as many different ways as possible. Compile everything as modules, then compile everything static (and watch how huge your kernel gets), then try to compile a minimal kernel yet keeping all of your hardware working. Try some experimental features (probably on a VM though ;-)). Have fun with it.
It can make a significant improvement in boot time, but not necessarily performance.
Small add-on here: A static no modules kernel could be considered a bit more secure if you disable module support altogether.