ConfigFix: Interactive Configuration Conflict Resolution for the Linux Kernel

Patrick Franz,Thorsten Berger,Ibrahim Fayaz,Sarah Nadi,Evgeny Groshev
DOI: https://doi.org/10.1109/icse-seip52600.2021.00018
2021-05-01
Abstract:Highly configurable systems are highly complex systems. The Linux kernel is arguably one of the most well-known examples. Given its vast configuration space, researchers have used it to conduct many empirical studies as well as to build dedicated methods and tools for analyzing, configuring, testing, optimizing, and maintaining the kernel. However, despite a large body of work, mainly bug fixes that were the result of such research made it back into the kernel's source tree. Unfortunately, Linux users still struggle with kernel configuration and resolving configuration conflicts, since the kernel largely lacks automated support. Additionally, there are technical and community requirements for supporting automated conflict resolution in the kernel, for example, using a pure C-based solution that uses only compatible third-party libraries (if any). With the aim of contributing back to the Linux community, we present ConfigFix, a tooling that we integrated with the Linux kernel configurator, that is purely implemented in C, and that is finally a working solution able to produce fixes for configuration conflicts. We describe our experiences of building upon the large body of research done on the kernel configuration mechanisms as well as how we designed and realized ConfigFix while adhering to the Linux kernel's community requirements and standards. ConfigFix not only helps Linux kernel users obtain their desired configuration, but our implemented semantic abstraction provides the basis for many of the above techniques supporting kernel configuration.
What problem does this paper attempt to address?