From Fedora Project Wiki

Linux kernel vanilla repositories for Fedora Linux

The kernel vanilla repositories allow you to quickly, comfortably, and cleanly install the latest upstream Linux kernels on Fedora Linux. Six 'coprs' offer various ready-to-use kernel packages built from upstream Linux series like ‘mainline’ and ‘stable’. The provided packages are ideal for both quick tests and regular day-to-day use.

To install the latest kernel version deemed for end users, follow the instructions in the first section below. For various other use cases, head over to the second section to choose which of the six coprs provides the Linux kernels you want; then enable the chosen copr and update your system as explained in the third section. The fourth section explains how to remove the kernel vanilla repositories and everything installed from them.

Note, the instructions in those sections are meant for users of Fedora variants like Workstation, Server, or KDE Plasma Desktop. Immutable Fedora variants like Silverblue or Kinoite need different commands described in a fifth section below.

Install the latest Linux version meant for end users

To install the latest Linux kernel meant for regular end users run the following commands:

sudo dnf -y copr enable @kernel-vanilla/stable
sudo dnf upgrade 'kernel*'
mokutil --sb-state

The first two commands enable the ‘stable’ copr, which then is used via DNF to install the latest mainline kernel (say 6.1) or the latest version from a stable series derived from it (e.g. 6.1.1, 6.1.2, …). The third command executed will tell you if UEFI Secure Boot is active on your system; if that's the case you have to either disable it in your system's BIOS Setup or through a process initiated through mokutil --disable-validation; that's needed, as your firmware will otherwise reject booting kernels installed from these repositories.

Linux kernels offered in the six kernel vanilla coprs

The kernel vanilla repositories for Fedora Linux provide six @kernel-vanilla coprs to serve different use-cases. Use the following table to decide which of them you want to use: ‘fedora’, ‘stable’, ‘stable-rc’, ‘mainline-wo-mergew’, ‘mainline’, or ‘next’.

@kernel-vanilla copr description example version sequence target users
fedora The latest kernel version from the stable series the latest Fedora Linux release currently uses. …, 6.0.18,
6.1.6, …
This is mainly meant for users that want to check if a bug that happens with Fedora's kernel also occurs with the latest upstream version from the same kernel series.
stable The latest kernel version meant for regular end users, e.g. either the latest mainline release or the newest version from a stable series derived from it. …, 6.0.15,
6.1.2, …
Anyone who wants the latest and greatest kernel.
stable-rc Pre-releases of the next release from the latest stable series. …, 6.0.15-rc1,
6.1.1, …
Anyone who wants to help testing Linux kernels from the latest stable series about to be released.
mainline-wo-mergew The latest mainline kernel, either built from a proper release, a pre-release (aka "rc kernel"), or a git snapshot – albeit the latter only after -rc1 was released. …, 6.1-rc8-20221211,
6.2-rc1-20221226, …
Anyone who wants the latest mainline kernel except when mainline is in a 'merge window' – that is the phase right after a new mainline release (say 6.1) when the bulk of changes (including all riskier ones!) are merged for the next mainline release; this phase ends when the first pre-release (e.g. "6.2-rc1") is published.
mainline Mainline kernels, either built from a proper release, a pre-release (aka "rc kernel"), or a git snapshot. …, 6.1-rc8-20221211,
6.2-rc0-20221214, …
Anyone who wants to run a kernel built from the latest Linux codebase.
next Linux-next kernels. …,,,, …
Anyone who wants to run linux-next or test if the changes slated for inclusion in the next mainline cycle fix a problem.

Note, only the fedora and next coprs are stand-alone; the other four each include coprs mentioned earlier in the table as a runtime dependency. Users of the ‘stable-rc’ copr thus will receive packages from the ‘stable’ or ‘fedora’ coprs when the latter contain kernel packages which package managers like DNF will considers newer. That way users of stable-rc copr won't be stuck on a -rc release with known problems that were fixed in the final release derived from it.

Another note relevant for users of Fedora versions in development, e.g rawhide and beta releases: be aware that these repositories will not provide kernel versions older than the one the particular Fedora release uses by default, as doing so could lead to problems. Rawhide for example regularly uses the latest mainline snapshots; that’s why rawhide users that have one of these repos enabled will receive vanilla mainline snapshots as well, even if they chose the ‘stable’ or ‘mainline-wo-mergew’ repos. Users of Fedora pre-releases (e.g. a beta version) might see similar effects, but once the Fedora version gets closer to its release date things will start to work as advertised.

How to install a kernel from the vanilla repositories

First enable the kernel vanilla copr you want to use – for example the one shipping a kernel built from the latest mainline code:

sudo dnf -y copr enable @kernel-vanilla/mainline

Now update your system to install the latest package from the copr:

sudo dnf upgrade 'kernel*'

If you’re on a x86-64 (aka AMD64) system execute the following command as well:

mokutil --sb-state

If it tells you ‘SecureBoot enabled’ you will have to turn it off either in your BIOS Setup or through a process initiated with sudo mokutil --disable-validation. That sadly is needed, as your system otherwise will reject booting any kernels from these repositories: it's technically impossible to sign the kernels in copr with a key typical x86-64 systems will trust.

Once you booted your vanilla kernel you have two options:

(1) In case you want to use the chosen copr regularly, be aware that for frequently updated kernel vanilla coprs like mainline there is quite a risk that DNF misses the latest kernels and installs obsolete ones. Hence it's adviced to make dnf check the kernel vanilla repositories more often than usual by using a command like this one:

sudo sed -i 's!baseurl=\(mainline\|stable-rc\|next\).*!&\nmetadata_expire=1h!g; s!baseurl=\(stable\|fedora\)/.*!&\nmetadata_expire=3h!g;' /etc/yum.repos.d/*.repo

(2) In case you installed a vanilla kernel just for a quick test, consider removing the just configured copr immediately; once you finish your tests you furthermore want to uninstall the vanilla kernel to ensure you retrieve newly released kernel packages from Fedora again. The next section explains both tasks in more detail

How to remove the kernel vanilla repositories and uninstall kernels installed from them

Disable any kernel vanilla copr you enabled:

dnf copr list | grep 'group_kernel-vanilla' | xargs -r sudo dnf copr remove

Now ensure you have the latest official kernel installed Fedora offers

sudo dnf --refresh distrosync kernel

At this step it is highly recommended to boot into the latest official Fedora kernel; to do so, reboot and choose the top-most one from the boot menu that does not have 'vanilla' in the name.

Now remove all kernels installed from the kernel vanilla coprs:

rpm -qa 'kernel*' | grep '.vanilla' | xargs -r sudo dnf remove

If you disabled UEFI Secure Boot, you might want to turn it on again using the path you took to disable it, e.g. either through your BIOS Setup or a a process initiated with sudo mokutil --enable-validation.

From now on your system will behave like one that never had these repositories enabled or kernels installed from it.

Instructions for immutable Fedora-variants like Silverblue or Kinoite

Important note: the following instructions only work as intended for the @kernel-vanilla coprs 'fedora' and 'next', as those are the only ones that are stand alone. The instructions most of the time will do the right thing on mainline-wo-mergew as well; but with the @kernel-vanilla coprs 'stable', 'stable-rc', and 'mainline' they will often install an obsolete kernel and remain on it. That's because the latest versions suitable for users of those coprs in about 50 to 80 percent of the time is distributed through a higher level copr the repo files for those coprs enable as coprdep. The note under the table above explains this scheme in more detail. It works well with DNF, but to our knowledge is unsupported by 'rpm-ostree overlay', as it will ignore the coprdep repos.

Use the following commands to install the latest kernel from the 'mainline-wo-mergew' copr on Fedora variants based on rpm-ostree:

curl -s "${copr}/repo/fedora-rawhide/group_kernel-vanilla-${copr}-fedora-rawhide.repo" | sudo tee "/etc/yum.repos.d/${copr}.repo"
sudo rpm-ostree override replace --experimental --from repo="${copr}" kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra

To later remove the kernel vanilla packages and the repository configuration, run the following commands:

sudo rpm-ostree override reset kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra 
sudo rm "/etc/yum.repos.d/"*

How vanilla kernels compare to Fedora’s

Most of the time kernels from the kernel vanilla coprs will work roundabout as well and secure as Fedora’s. Sometimes though the kernels from these repositories will work better, as they contain drivers or security fixes that haven’t reached the kernel used by Fedora Linux yet; other times it's the other way around, as Fedora sometimes includes fixes that upstream hasn't picked up yet. Those differences rarely matter much.

Empty or apparently coprs are normal

Please be aware that at least one and up to three out of the six kernel vanilla coprs will always look empty or outdated when you check copr’s web interface or look straight at the package repositories. That is totally normal, as it will look like that when the most recent build suitable for users of that copr is found in one of the other copr included as a runtime dependency. See the note under above table for a more detailed explanation.

Linux kernel versions currently offered

A repostatus file shows what the repositories currently provide. Alternatively, execute the following script to query the latest packages locally:

dists=(37 38 39 rawhide)
dnf clean all > /dev/null
for repo in fedora stable{,-rc} mainline{-wo-mergew,} next; do
	[[ ${repo} =~ (fedora|next) ]] && unset repostring
	repostring="${repostring} --repofrompath=kvr-${repo},${repo}/fedora-\${distro}-x86_64/"
	for distro in ${dists[*]} ; do
  	  queryresult="$(eval dnf repoquery ${repostring} --disablerepo=* --enablerepo=kvr-* --latest-limit=1 -q kernel --arch x86_64 --qf '%{version}-%{release}')"
		  printf '%-20s %-10s %s\n' "${repo}" "${distro}" "${queryresult:-lookup failed}"

Developers behind the effort and point of contact

The Linux kernel vanilla repositories for Fedora are maintained by Thorsten Leemhuis (aka "knurd") since late 2012. The packages they provide are build using a RPM spec file that is nearly identical to the one used to build Fedora’s kernel. Note though that none of the maintainers of the the official Fedora Linux kernel are involved in the maintenance of these repositories.

For any feedback or questions regarding the kernel vanilla repositories contact Thorsten Leemhuis (aka "knurd").

What’s the goal of these repositories? And are these kernels as good as Fedora’s?

These and many other questions are answered in the FAQ about the Linux kernel vanilla repositories for Fedora Linux.