From Fedora Project Wiki

m (small improvements)
 
(148 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Package repository with Linux vanilla kernels for Fedora =  
= Linux kernel vanilla repositories for Fedora Linux =


The [http://repos.fedorapeople.org/repos/thl/ Fedora kernel vanilla repositories] offer various RPM packages that contain vanilla builds of different Linux kernel version lines. These packages are meant for Fedora users that want to access the latest stable or pre-releases of Linux quickly and comfortably. In addition, one of the repositories is meant for users who want to check if problems they face are specific to the Fedora kernel or present in the upstream kernel as well.
The kernel vanilla repositories allow you to quickly, comfortably, and cleanly install the latest upstream Linux kernel versions on Fedora Linux. [https://copr.fedorainfracloud.org/groups/g/kernel-vanilla/coprs/ Six 'coprs' offer various ready-to-use kernel packages] built from upstream Linux series like ‘mainline’ and ‘stable’; the provided RPMs are ideal for both quick tests and regular day-to-day use.


= How to use these repos =
To simply install the latest kernel version deemed for end users, follow the instructions in the next section; for development kernels and more detailed instructions, head over to the second section. Note, both sections are meant for users of Fedora variants like Workstation, Server, or KDE Plasma Desktop; in case you are using a Fedora Atomic Desktop like Silverblue or Kinoite, head over to the section below dedicated to them.


== How to use, the TLDR version ==
== Install the latest Linux version meant for end users (TLDR) ==
 
To install the latest Linux kernel meant for regular end users run the following commands:


Download the definitions for the Kernel vanilla repositories:
<pre>
<pre>
curl -s https://repos.fedorapeople.org/repos/thl/kernel-vanilla.repo | sudo tee /etc/yum.repos.d/kernel-vanilla.repo
sudo dnf -y copr enable @kernel-vanilla/stable
sudo dnf upgrade kernel
mokutil --sb-state
</pre>
</pre>


Run this to install the latest mainline (aka pre-release) kernel:
The first two commands enable the ‘stable’ copr, which then is used via DNF to install the latest proper mainline kernel release (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 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 <code>mokutil --disable-validation</code>; that's required, as your firmware will otherwise reject booting kernels installed from these repositories.
<pre>
 
sudo dnf --enablerepo=kernel-vanilla-mainline update
== Installing and uninstalling Linux kernels from a kernel vanilla repositories (detailed) ==
</pre>
 
The next two sub-sections describe how to chose an copr for your use case, before describing how to install and boot into kernels from one of them. They are accompanied by a sub-section then describes how to use the coprs continuously or how to remove them and its kernels again later.
 
=== Choosing the kernel vanilla coprs appropriate for your needs ===


Run this if you want the latest stable kernel instead:
Use the following table to decide which of the six @kernel-vanilla coprs provides the kernel version or series you want to use:  ‘[https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/fedora/ fedora]’, ‘[https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/stable/ stable]’, ‘[https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/stable-rc/ stable-rc]’, ‘[https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/mainline-wo-mergew/ mainline-wo-mergew]’, ‘[https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/mainline/ mainline]’, or ‘[https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/next/ next]’.
<pre>
sudo dnf --enablerepo=kernel-vanilla-stable update
</pre>


Run this if you want the a vanilla build of the latest Fedora kernel:
{| class="wikitable"
<pre>
!style="width: 17%;"|@kernel-vanilla copr
sudo dnf --enablerepo=kernel-vanilla-fedora update
!style="width: 30%;"|provides
</pre>
!style="width: 13%;"|example version sequence
!style="width: 40%;"|target users
|- style="vertical-align:top;"
| '''fedora'''
| The latest kernel version from the stable series the latest Fedora Linux release currently uses.
| …, 6.0.18,<br>6.0.19,<br>6.1.5,<br>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.
|- style="vertical-align:top;"
| '''stable'''
| The latest kernel version meant for regular end users; usually this is the newest version from the latest stable series, occasionally the latest mainline release.
| …, 6.0.15,<br>6.1,<br>6.1.1,<br>6.1.2, …
| Anyone who wants the latest and greatest kernel.
|- style="vertical-align:top;"
| '''stable-rc'''
| Pre-releases of the next release from the latest stable series.
| …, 6.0.15-rc1,<br>6.0.15,<br>6.1,<br>6.1.1-rc1,<br>6.1.1, …
| Anyone who wants to help testing Linux kernels from the latest stable series about to be released.
|- style="vertical-align:top;"
| '''mainline-wo-mergew'''
| The latest mainline kernel, either built from a pre-release (aka "rc kernel") or a Git snapshot of the day – albeit the latter only after -rc1 was released.
| …, 6.1-rc8-20221211,<br>6.1,<br>6.1.1-rc1,<br>6.1.1,<br>6.2-rc1,<br>6.2-rc1-20221226, …
| Anyone who wants to run a kernel built from the latest Linux codebase, 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 version; this phase ends after two weeks with the publication of the next mainline kernel's first pre-release (e.g. 6.2-rc1).
|- style="vertical-align:top;"
| '''mainline'''
| The latest mainline kernel build from a Git snapshot of the day.
| …, 6.1-rc8-20221211,<br>6.1,<br>6.2-rc0-20221213,<br>6.2-rc0-20221214, …
| Anyone who wants to run kernels built from the latest Linux codebase.
|- style="vertical-align:top;"
| '''next'''
| Linux-next kernels.
| …, 6.1-0.0.next.20221209,<br>6.2-0.0.next.20221212, <br>6.2-0.0.next.20221213, …
| Anyone who wants to run linux-next or test if the changes slated for inclusion in the next mainline cycle fix a problem.
|}


Reboot. That's it – at least often, as sometimes additional steps are necessary:
'''Note''', only the coprs ‘fedora’ and ‘next’ 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 kernels 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 fixed between the -rc and the final release; users of the 'mainline' repo will also receive daily snapshots from 'mainline-wo-mergew' repo once the merge window ended. The 'example version sequence' column takes these effects into account.


* Is UEFI Secure Boot active on your system (<code>mokutil --sb-state</code> will tell you)? In that case you have to disable it in your BIOS Setup or via <code>mokutil --disable-validation</code>. This is required to run kernels from these repositories, as they are not signed with a key that a typical systems trust.
Another note relevant for users of Fedora versions in development, e.g rawhide and beta releases: be aware that these coprs 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. beta versions) might see similar effects, but once the Fedora version gets closer to its release things will start to work as advertised.


* The newly installed kernel will normally get started by default. If that's not the case there likely is something fishy with your boot configuration. For example, if you start Fedora using a boot manger from a different Linux install you'll have to boot into the latter and update its boot loader configuration; in Ubuntu you for example do that by running <code>update-grub</code>.
=== Install a kernel from the chosen copr ===


* The "dnf update"-command doesn't offer anything to install? Then the version of the latest kernel package installed on your machine is higher than the version of the latest kernel packagers offered in the chosen kernel-vanilla repository. Then the maintainers of the latter might are lagging behind (they sometimes are on holiday, too), hence it might be the best to stick to the kernel your have.
Now enable the kernel vanilla copr you decided to use – for example the one shipping a kernel built from the latest mainline code:


If you just want to use kernels from the vanilla repositories for a short test make sure you boot into the stock Fedora kernel again once you finished your tests. After that you can uninstall the vanilla kernel packages with a comment like <code>sudo dnf remove $(rpm -qa 'kernel*' | grep '.vanilla.knurd' )</code> and everything will be as before.
<pre>
sudo dnf -y copr enable @kernel-vanilla/mainline
</pre>


If you like to permanently use kernels from these repos you might want to run one of these commands, depending on the which type of kernels you want:
Now update your system to install the latest package from the copr:


<pre>
<pre>
sudo dnf config-manager --set-enabled kernel-vanilla-mainline
sudo dnf upgrade kernel kernel-devel
sudo dnf config-manager --set-enabled kernel-vanilla-stable
</pre>
</pre>


That way "dnf" will automatically install the latest packages from those repositories.
If you’re on a x86-64 (aka AMD64) system execute the following command as well:


Note: This TLDR-instructions focused on the two main repositories. There are more for other use cases described below. Also make sure to read the [[Kernel_Vanilla_Repositories-FAQ|FAQ]].
<pre>
mokutil --sb-state
</pre>


== How to use, the verbose version ==
If it tells you ‘SecureBoot enabled’ you will have to turn it off either in your BIOS Setup or through a process initiated with <code>sudo mokutil --disable-validation</code>. 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.


=== Configure the repositories ===
Once you booted your vanilla kernel you have two options:


First download the repository definitions for DNF:
(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. To prevent that, tell dnf to check the kernel vanilla repositories more often than usual with a command like this one:


<pre>
<pre>
curl -s https://repos.fedorapeople.org/repos/thl/kernel-vanilla.repo | sudo tee /etc/yum.repos.d/kernel-vanilla.repo
sudo sed -i 's!baseurl=https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/\(mainline\|stable-rc\|next\).*!&\nmetadata_expire=1h!g; s!baseurl=https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/\(stable\|fedora\)/.*!&\nmetadata_expire=3h!g;' /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:group_kernel-vanilla:*.repo
</pre>
</pre>


This will install a repo file with following repos:
(2) In case you installed a vanilla kernel just for a quick test, consider removing the just configured copr immediately, as explained in the next section. It also explains how to later uninstall packages installed from the kernel vanilla coprs, which is needed to ensure you retrieve newly released kernels from Fedora again.


{| class="wikitable"
=== Remove the kernel vanilla repositories and kernels installed from them ===
!style="width: 15%;"|repository
!style="width: 35%;"|description
!style="width: 30%;"|target users
!style="width: 15%;"|example versions
|- style="vertical-align:top;"
| kernel-vanilla-mainline
| a pre-release or git-snapshot from Linux main development branch
| those who want the latest mainline Linux
| 4.4, 4.5-rc0-git1, 4.5-rc1, 4.5-rc1-git2
|- style="vertical-align:top;"
| kernel-vanilla-mainline-wo-mergew
| similar to the kernel-vanilla-mainline repo, except during the merge window, when it will contain the latest released mainline kernel or a stable kernel based on it
| those who want the latest mainline kernel, but want to avoid development versions from the merge window (like 4.5-rc0-git1) – that the phase in the development cycle when the bulk of changes get merged for a new kernel version
| 4.4, 4.4.1, 4.5-rc1, 4.5-rc1-git2
|- style="vertical-align:top;"
| kernel-vanilla-stable
| the latest non-development version from the mainline or stable kernel series
| those who want the latest Linux stable kernel
| 4.4, 4.4.1, 4.4.2, 4.4.3
|- style="vertical-align:top;"
| kernel-vanilla-fedora
| contains a vanilla build of the latest kernel which Fedora currently ships or has in its update queue; most of the time this repository will contain the same kernels as kernel-vanilla-stable, except for times when Fedora hasn't yet jumped to the latest version released from the mainline series.
| those who want to check if a vanilla kernel shows the same bug or behaviour as the Fedora kernel
| 4.3.12, 4.3.13, 4.4.3, 4.4.4
|}


Decide yourself which one of those you want to use. The following examples assume you want to use the <code>
Disable any kernel vanilla copr you enabled:
kernel-vanilla-mainline</code> repository, hence you need to adjust the commands to use a different repository.


=== Install a kernel from the repository ===
Run this command to install the latest kernel from the kernel vanilla mainline repo:
<pre>
<pre>
sudo dnf --enablerepo=kernel-vanilla-mainline update
dnf copr list | grep 'group_kernel-vanilla' | xargs -r sudo dnf copr remove
</pre>
</pre>


Alternatively you can permanently enable that repository to make DNF automatically install new kernel packages when updating the system:
Now downgrade the kernel and a few related packages to the latest versions Fedora provides:


<pre>
<pre>
sudo dnf config-manager --set-enabled kernel-vanilla-mainline
sudo dnf --refresh distrosync bpftool 'kernel*' 'libperf*' perf python3-perf rtla rv
sudo dnf update
</pre>
</pre>


When you install a kernel from the repository for the first time DNF will ask you if you trust the [https://pgp.mit.edu:11371/pks/lookup?op=get&search=0xD7927A2FCC9DBCAB public key] that is used to verify the signature of the packages from the kernel vanilla repositories. It will look like this:
It's not strictly required, but highly recommended to boot into the latest official Fedora kernel now. To do so, restart and choose the top-most kernel from the boot menu that does not have 'vanilla' in the name.
 
Now remove all kernels installed from the kernel vanilla coprs:
 
<pre>
<pre>
Retrieving key from https://repos.fedorapeople.org/repos/thl/RPM-GPG-KEY-knurd-kernel-vanilla
rpm -qa 'kernel' 'kernel*core*' 'kernel*modules*' 'kernel*devel*' | grep '.vanilla' | xargs -r sudo dnf remove
Importing GPG key 0x863625FA:
Userid    : "Thorsten Leemhuis (Key for signing vanilla kernel rpms) <fedora@leemhuis.info>"
Fingerprint: 7C71 B4C9 BF71 7876 635F 3205 4534 BEED 8636 25FA
From      : https://repos.fedorapeople.org/repos/thl/RPM-GPG-KEY-knurd-kernel-vanilla
Is this ok [y/N]:
</pre>
</pre>


DNF will proceed once you acknowledge this.  
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 process initiated with <code>sudo mokutil --enable-validation</code>.


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


Please be aware that
== Instructions for Fedora Atomic Desktops ==


* none of the developers that maintain the Fedora kernel is involved in the maintenance of the Fedora kernel vanilla repositories
'' '''Important note''': the following instructions only work as intended for the @kernel-vanilla coprs 'fedora' and 'next', as those are stand alone and do not depend on other coprs. The instructions most of the time will do the right thing on 'mainline-wo-mergew' copr as well; but with the @kernel-vanilla coprs 'stable', 'stable-rc', and 'mainline' they will often install and remain on an obsolete kernel for weeks. 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 note under the table above explains this scheme in more detail). DNF automatically uses the latter, but [https://github.com/coreos/rpm-ostree/issues/4708 to our knowledge does not enable other repository a copr depends on].''
* most systems work better and run in a more secure manner with the official Fedora kernels
* if you don't understand what above commands do then you likely should not use these repositories or its packages


= More details about the kernel vanilla repos =
Use the following commands to install the latest kernel from the 'mainline-wo-mergew' copr on Fedora Atomic Desktops like Silverblue or Kinoite:


== What kernel versions do the repos currently contain? ==
<pre>
copr="mainline-wo-mergew"
curl -s "https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/${copr}/repo/fedora-rawhide/group_kernel-vanilla-${copr}-fedora-rawhide.repo" | sudo tee "/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:group_kernel-vanilla:${copr}.repo"
sudo rpm-ostree override replace --experimental --from repo="copr:copr.fedorainfracloud.org:group_kernel-vanilla:${copr}" kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra
</pre>


Look at [http://www.leemhuis.info/files/kernel-vanilla/repostatus.txt this file] or execute this scrpt if you want to query the latest status locally:
To later remove the kernel vanilla packages and the repository configuration, run the following commands:


<pre>
<pre>
releases="29 28 27 26"; branches="mainline mainline-wo-mergew stable fedora"; \
sudo rpm-ostree override reset kernel kernel-core kernel-modules kernel-modules-core kernel-modules-extra
for branch in ${branches} ; do for release in ${releases} ; do
sudo rm "/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:group_kernel-vanilla"*
  queryresult=$(dnf repoquery --repofrompath=repo,http://repos.fedorapeople.org/repos/thl/kernel-vanilla-${branch}/fedora-${release}/x86_64/ --disablerepo=* --enablerepo=repo --available --latest-limit=1 -q kernel 2>/dev/null)
  echo "${branch} ${release} ${queryresult:-not_available}"
done; done | column -t | sed 's!kernel-0:!!; s!.x86_64!!;'
</pre>
</pre>


== Who is behind this effort?  ==
== How vanilla kernels compare to Fedora’s ==


Right now the kernel vanilla repositories for Fedora are maintained by [[user:thl|Thorsten Leemhuis (aka "knurd")]] only. Maybe over time people join to help, that's why this text is written as if a team is keeping care of the repositories.  
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.


== How can I uninstall all kernels from the kernel vanilla repositories ==
== Empty or apparently coprs are normal ==


Boot into a stock Fedora kernel and run
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.
<pre>
sudo dnf remove $(rpm -qa 'kernel*' | grep '.vanilla.knurd' )
</pre>
DNF will then show what is about to get uninstalled; review that list carefully and make sure you still have a none vanilla kernel on your system, otherwise you loose the ability to boot your installation. Better abort if something looks fishy.


== What is the goal of these repositories? Are these kernels as good as those Fedora provides? ==
== Linux kernel versions currently offered ==


These and many other questions are [[Kernel_Vanilla_Repositories-FAQ|answered in the FAQ about the kernel vanilla repositories]].
A '''[https://www.leemhuis.info/files/kernel-vanilla/repostatus.txt repostatus file shows what the repositories currently provide]'''. Alternatively, execute the following script to query the latest packages locally:


= Known issues and differences =
<pre>
dists=(38 39 40 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},https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/${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}"
    done
done
</pre>


The following sections will list differences to Fedora's proper kernel packages that might be relevant to users. It will also list known problems specific to the packaging of the vanilla kernels.
== Developers behind the effort and point of contact  ==


== General ==
The Linux kernel vanilla repositories for Fedora are maintained by [[user:thl|Thorsten Leemhuis (aka "knurd")]] since [https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org/message/NNSLWMKQSGALKX7VGWATKWTGAOU6LZ5I/ late 2012]. The packages they provide are built 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 official Fedora Linux kernel are involved in the maintenance of these repositories.


* none known
For any feedback or questions regarding the kernel vanilla repositories contact [[user:thl|Thorsten Leemhuis (aka "knurd")]].


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


* enable some of the staging drivers Fedora avoids
These and many other questions are answered in the [[Kernel_Vanilla_Repositories-FAQ|FAQ about the Linux kernel vanilla repositories for Fedora Linux]].
* automate builds more to keep repos more up2date
* create stable-testing repo

Latest revision as of 06:19, 3 May 2024

Linux kernel vanilla repositories for Fedora Linux

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

To simply install the latest kernel version deemed for end users, follow the instructions in the next section; for development kernels and more detailed instructions, head over to the second section. Note, both sections are meant for users of Fedora variants like Workstation, Server, or KDE Plasma Desktop; in case you are using a Fedora Atomic Desktop like Silverblue or Kinoite, head over to the section below dedicated to them.

Install the latest Linux version meant for end users (TLDR)

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 proper mainline kernel release (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 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 required, as your firmware will otherwise reject booting kernels installed from these repositories.

Installing and uninstalling Linux kernels from a kernel vanilla repositories (detailed)

The next two sub-sections describe how to chose an copr for your use case, before describing how to install and boot into kernels from one of them. They are accompanied by a sub-section then describes how to use the coprs continuously or how to remove them and its kernels again later.

Choosing the kernel vanilla coprs appropriate for your needs

Use the following table to decide which of the six @kernel-vanilla coprs provides the kernel version or series you want to use: ‘fedora’, ‘stable’, ‘stable-rc’, ‘mainline-wo-mergew’, ‘mainline’, or ‘next’.

@kernel-vanilla copr provides 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.0.19,
6.1.5,
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; usually this is the newest version from the latest stable series, occasionally the latest mainline release. …, 6.0.15,
6.1,
6.1.1,
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.0.15,
6.1,
6.1.1-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 pre-release (aka "rc kernel") or a Git snapshot of the day – albeit the latter only after -rc1 was released. …, 6.1-rc8-20221211,
6.1,
6.1.1-rc1,
6.1.1,
6.2-rc1,
6.2-rc1-20221226, …
Anyone who wants to run a kernel built from the latest Linux codebase, 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 version; this phase ends after two weeks with the publication of the next mainline kernel's first pre-release (e.g. 6.2-rc1).
mainline The latest mainline kernel build from a Git snapshot of the day. …, 6.1-rc8-20221211,
6.1,
6.2-rc0-20221213,
6.2-rc0-20221214, …
Anyone who wants to run kernels built from the latest Linux codebase.
next Linux-next kernels. …, 6.1-0.0.next.20221209,
6.2-0.0.next.20221212,
6.2-0.0.next.20221213, …
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 coprs ‘fedora’ and ‘next’ 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 kernels 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 fixed between the -rc and the final release; users of the 'mainline' repo will also receive daily snapshots from 'mainline-wo-mergew' repo once the merge window ended. The 'example version sequence' column takes these effects into account.

Another note relevant for users of Fedora versions in development, e.g rawhide and beta releases: be aware that these coprs 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. beta versions) might see similar effects, but once the Fedora version gets closer to its release things will start to work as advertised.

Install a kernel from the chosen copr

Now enable the kernel vanilla copr you decided 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 kernel-devel

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. To prevent that, tell dnf to check the kernel vanilla repositories more often than usual with a command like this one:

sudo sed -i 's!baseurl=https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/\(mainline\|stable-rc\|next\).*!&\nmetadata_expire=1h!g; s!baseurl=https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/\(stable\|fedora\)/.*!&\nmetadata_expire=3h!g;' /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:group_kernel-vanilla:*.repo

(2) In case you installed a vanilla kernel just for a quick test, consider removing the just configured copr immediately, as explained in the next section. It also explains how to later uninstall packages installed from the kernel vanilla coprs, which is needed to ensure you retrieve newly released kernels from Fedora again.

Remove the kernel vanilla repositories and 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 downgrade the kernel and a few related packages to the latest versions Fedora provides:

sudo dnf --refresh distrosync bpftool 'kernel*' 'libperf*' perf python3-perf rtla rv

It's not strictly required, but highly recommended to boot into the latest official Fedora kernel now. To do so, restart and choose the top-most kernel 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' 'kernel*core*' 'kernel*modules*' 'kernel*devel*' | 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 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 Fedora Atomic Desktops

Important note: the following instructions only work as intended for the @kernel-vanilla coprs 'fedora' and 'next', as those are stand alone and do not depend on other coprs. The instructions most of the time will do the right thing on 'mainline-wo-mergew' copr as well; but with the @kernel-vanilla coprs 'stable', 'stable-rc', and 'mainline' they will often install and remain on an obsolete kernel for weeks. 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 note under the table above explains this scheme in more detail). DNF automatically uses the latter, but to our knowledge does not enable other repository a copr depends on.

Use the following commands to install the latest kernel from the 'mainline-wo-mergew' copr on Fedora Atomic Desktops like Silverblue or Kinoite:

copr="mainline-wo-mergew"
curl -s "https://copr.fedorainfracloud.org/coprs/g/kernel-vanilla/${copr}/repo/fedora-rawhide/group_kernel-vanilla-${copr}-fedora-rawhide.repo" | sudo tee "/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:group_kernel-vanilla:${copr}.repo"
sudo rpm-ostree override replace --experimental --from repo="copr:copr.fedorainfracloud.org:group_kernel-vanilla:${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/_copr:copr.fedorainfracloud.org:group_kernel-vanilla"*

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=(38 39 40 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},https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/${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}"
    done
done

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 built 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 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.