Build Linux Kernel with Docker Compose.
$ docker compose up ubuntu
Each service is one distribution's image with that distribution's toolchain.
On start the container fetches a single pinned stable kernel tag
(LINUX_VERSION in entrypoint.sh; override with
docker compose run -e LINUX_VERSION=v7.2.8 ubuntu), builds it with an
alldefconfig-based config plus modules, runs bindeb-pkg / binrpm-pkg
where the image has the tools, and serves the results from
/build-kernel/artifacts on port 8000 (see the port mapping in
docker-compose.yml). A tag that cannot be fetched fails the build.
archlinux and manjarolinux build Arch's official linux PKGBUILD
instead, cachyos builds CachyOS's linux-cachyos PKGBUILD (clang and
ThinLTO, _processor_opt=generic), and azurelinux and cbl-mariner
build Microsoft's kernel tree at its newest rolling-lts/mariner-3 tag.
Every push, plus a schedule on Monday and Thursday 00:00 UTC, builds all 43
distributions. Each job uploads artifacts/ (the packages and the kernel
config) as a workflow artifact. The longest jobs are the three that
build their distro's full kernel config, archlinux, manjarolinux and
cachyos, at two to three hours each; they run in parallel with the rest,
so a whole run takes about as long as the slowest of them.
CI builds the kernel on these 43 distributions and variants:
almalinux, almalinux-kitten, alpine, alpine-edge, altlinux, amazonlinux, anolisos, archlinux, artixlinux, azurelinux, cachyos, cbl-mariner, centos, centos8, chimeralinux, debian, debian-sid, fedora, fedora-rawhide, gentoo, gentoo-llvm, gentoo-musl, gentoo-musl-llvm, kalilinux, linux-mint, mageia, manjarolinux, miraclelinux, opencloudos, openeuler, opensuse, opensuse-leap, oraclelinux, parrot, photon, rockylinux, slackware, solus, termux, ubuntu, void-linux, void-linux-musl, wolfi
The -rawhide, -sid, -edge and -kitten jobs build on development
branches to catch toolchain changes before they reach a release;
gentoo-musl and void-linux-musl build those distributions on musl,
and gentoo-llvm and gentoo-musl-llvm on Gentoo's LLVM stage3s, where
the kernel is built with clang (LLVM=1).
centos is CentOS Stream 10; centos8 is CentOS Linux 8.5.2111, the
last CentOS release before Stream, from vault.centos.org. Likewise
azurelinux is Azure Linux 3.0 and cbl-mariner stays on CBL-Mariner
2.0, its end-of-life predecessor.
Defined in Docker Compose but not built in CI:
- redhat: the public UBI repositories ship no bison/flex/dwarves, so the kernel cannot be built without a RHEL subscription
- Gentoo Wiki - Kernel
- Gentoo Wiki - Kernel/Building from userspace
- Gentoo Wiki - eclean
- Gentoo Packages - app-portage/flaggie
- gentoo/gentoo-docker-images
- gg7/gentoo-kernel/guide
- jeekkd/gentoo-kernel-build
- Linux Mint
- Linux Mint Installation Guide
- Upgrades
- Upgrade Mint from command line? - Linux Mint Forums