Longtime Linux kernel developer Ingo Molnar sent out a patch series this morning to enable additional kernel features by default for the Linux default configuration “defconfig” on x86-based kernels. The defconfig improvements aim to reflect modern Linux x86 kernel use with various features commonly being enabled by distribution vendor kernels and related improvements.
Ingo Molnar explained with today’s 15 patch series:
“Historically the x86 defconfigs aimed to be distro kernel work-alikes with fewer drivers and a substantially shorter build time. We regularly ask our contributors to test their changes on x86 defconfigs, and we frequently analyze code generation on such kernels as well.
In practice, over the past couple of years this goal has diverged from what actual modern Linux distributions do these days, and this series aims to correct that divergence.
Perform a thorough modernization of the x86 defconfigs, and apply some cleanups to the x86 build system as well:
– Enable various kernel features that the most popular Linux distributions have enabled in their generic kernels these days: KVM host, BPF support, UBSAN, various MM options, debugging options, various scheduler and cgroups options, support for a number of guest OS platforms, and other options.
– More specifically, these changes enable a rough superset of the kernel features enabled by Ubuntu, Fedora/RHEL kernels.
– Clean up the organization of the defconfig files as well.
– Add the ARCH=x86_32 build target
– Synchronize the x86_32 defconfig to the x86_64 defconfig: this file is really just a random set of options configured many years ago with no relevance to anything people are using today anymore. Just follow the 64-bit options to the extent possible, to have at least one modern frame of reference.
– Clean up a number of kbuild details”
Among the changes are enabling KVM virtualization on x86_64 as part of the default configuration, enabling BPF by default on x86_64, enabling a variety of other common/popular memory management options like Zswap and transparent hugepage support, and enabling various other cggroups / scheduler / namespaces options. It’s enabling a lot more functionality by default particularly for Linux x86_64 but better aligns with what’s used by Linux distribution vendor kernels already and will yield a more useful kernel for those doing a “make defconfig” during testing or similar.
The patches are now under review for possible inclusion in a future version of the Linux kernel.