Not to be “old person on main,” but 25 years ago, it was possible to build my own Linux kernel and run it on my hardware. As usual in development, it would take a few times to get one that would boot nicely, but the process itself didn’t feel difficult. It was pretty easy to select IDE, VIA chipset support, and the like, and receive a fairly streamlined kernel.
Fast forward to the 2020s, and the opposite has happened. I’m reliant on distro kernels because trying to configure and build a modern Linux kernel is a huge, interconnected maze of options, with no visibility into why it doesn’t boot. Options in section 3 may not be visible if required options in section 5 haven’t been selected yet, which make it a nonlinear meta-adventure. I have repeatedly failed to build a kernel for a VirtualBox guest, something where the hardware should be well known in advance.
However, if I had been able to build my own kernels successfully, Copy Fail 2 and Dirty Frag wouldn’t have been issues. IPSec is pretty much dead to me, and I had never heard of RxRPC until now, so these things would have naturally been configured out of my own kernel build.
There’s a distinct conflict here between convenience and security: if we autoload the kitchen sink, then
nobody needs to build enable-feature ipsec and a GUI for it. Nobody needs to recompile their kernel for it.
On the other hand, if there’s a bug anywhere in the autoload surface, it can be reachable by any user.
And honestly, the whole reason I fell out of building kernels—other than the journeys into FreeBSD and Windows—is that it was terrible to try to keep up with the influx of kernel updates. Maybe userspace had a compatibility guarantee, but config did not. I was soon unwilling to spend so much energy (mine and my PC’s) on rebuilding a kernel so frequently. Most of the commits would be irrelevant, but trying to filter and judge them all was an even worse proposition.
I know my distro doesn’t want to maintain dozens of packages like linux-modules-ipsec for people (a logical
equivalent of enable-feature ipsec) but it’s also difficult to rebuild a distro kernel according to my own
config. Leaving aside the problems with choosing/generating a config, the distro kernel has a lot of
features, which makes it take a while to compile. The cycle to even try a new kernel build is much, much
longer than it was when I was building my own, and I think it crosses the threshold between “tolerable” and
“too much to bear.”