Tracking Linux Kernel Sources of Distributions
Posted February 1, 2020 ‐ 2 min read
TL;DR: I provide easily browsable CentOS kernel sources on GitHub.
When developing Linux-based back-end systems, on some situations it is often quite viable to look at Linux kernel sources in order to understand problems. This is true for my clients who design high performance and critical systems, often with kernel code added.
However, the source browsing provided by Elixir, though an indispensable and easily accessible resource, does not cover the heavily patched kernels that enterprise Linux users sometimes use. The clients that need to do kernel development usually don't take upstream kernels as a base for a good reason - the enterprise-patched kernels are more field-driven and heavily patched with fixes and backported features.
For example, the kernels being maintained by Red Hat, contain a large number of backports and changes. Due to internal decisions, the sources of these kernels only come as source packages, as the GPL does not enforce any kind of source control usage on released code.
Because companies such as Red Hat are reluctant to look into issues in customized and patched kernels, organization that need to use such kernels sometimes choose to use the equivalent CentOS kernels with the downside of supporting these kernels themselves, outside of Red Hat, where exact Git histories of such kernels is not available.
In an ideal world, it would have been possible to browse the source of all the Linux kernels of distributions in one place. However, the Linux kernel is maintained in distribution forks, and the maintainship is fragmented. So to compensate, and in order to ease my work, a few years ago I have decided to artificially create Git trees that track these kernels release by release.
This semi-automated work is reachable in GitHub. In the future, I may add more information to each commit, for example, source RPM change-log entries. For now, it allows to perform diffs between various minor and major kernels versions of the distribution kernel, compare the distribution with the upstream kernel, and other actions.