m (small updates to the table explaining the four repos) |
|||
Line 64: | Line 64: | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
| kernel-vanilla-mainline | | kernel-vanilla-mainline | ||
| a mainline kernel, | | a mainline kernel, either built from a proper pre-release (aka "rc kernel") or a git snapshot from Linux's main development branch | ||
| those who want the latest | | those who want to run the latest code | ||
| 4.3-rc7, 4.3-rc6-git2, 4.4, 4.5-rc0-git1, 4.5-rc1, 4.5-rc1-git2 | | 4.3-rc7, 4.3-rc6-git2, 4.4, 4.5-rc0-git1, 4.5-rc1, 4.5-rc1-git2 | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
| kernel-vanilla-mainline-wo-mergew | | kernel-vanilla-mainline-wo-mergew | ||
| | | identical to kernel-vanilla-mainline repo, except during the merge window: then it will contain the latest proper mainline release or stable kernels derived from it | ||
| those who want the latest mainline kernel, but want to | | those who normally want the latest mainline kernel, but want to play it a bit safer by avoiding mainline during the merge window. That's the phase at the beginning of a development cycle where the bulk of changes (~85 percent) for the next mainline release are merged; it's usually two weeks long, and ends with the first pre-release of a new mainline kernel, like 4.5-rc1 | ||
| 4.3-rc7, 4.3-rc6-git2, 4.4, 4.4.1, 4.5-rc1, 4.5-rc1-git2 | | 4.3-rc7, 4.3-rc6-git2, 4.4, 4.4.1, 4.5-rc1, 4.5-rc1-git2 | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
| kernel-vanilla-stable | | kernel-vanilla-stable | ||
| the latest stable kernel according to kernel.org; | | the latest stable kernel according to kernel.org; this repo thus won't ship mainline releases like 4.4 and only start with 4.4.1 | ||
| those who want the latest Linux stable kernel | | those who want the latest Linux stable kernel | ||
| 4.3.12, 4.3.13, 4.4.1, 4.4.2, 4.4.3 | | 4.3.12, 4.3.13, 4.4.1, 4.4.2, 4.4.3 | ||
|- style="vertical-align:top;" | |- style="vertical-align:top;" | ||
| kernel-vanilla-fedora | | kernel-vanilla-fedora | ||
| contains a vanilla build of the latest kernel | | contains a vanilla build of the latest kernel from the stable series the current Fedora kernel is based on; most of the time this repository will contain the same kernels as kernel-vanilla-stable, except when Fedora hasn't yet jumped to the previous to the latest stable series yet | ||
| those who want to check if | | those who want to check if vanilla kernels shows the same bug or behavior as the latest Fedora kernel | ||
| 4.3.19, 4.3.20, 4.4.5, 4.4.6 | | 4.3.19, 4.3.20, 4.4.5, 4.4.6 | ||
|} | |} |
Revision as of 15:38, 21 March 2022
Package repositories with Linux vanilla kernel packages for Fedora
The Linux vanilla kernel repositories for Fedora offer RPM packages containing vanilla builds of different Linux kernel version lines. These packages are meant for Fedora users that want to access the latest Linux kernels quickly and comfortably; either the latest mainline kernel, the latest stable kernel or a vanilla variant of the Linux kernel series a particular Fedora release uses.
How to use these repos
How to use, the TLDR version
Download the definitions for the Kernel vanilla repositories:
curl -s https://repos.fedorapeople.org/repos/thl/kernel-vanilla.repo | sudo tee /etc/yum.repos.d/kernel-vanilla.repo
Run this to install the latest mainline (aka pre-release) kernel:
sudo dnf --enablerepo=kernel-vanilla-mainline update
Run this if you want the latest stable kernel instead:
sudo dnf --enablerepo=kernel-vanilla-stable update
Reboot. That's it – at least often, as sometimes additional steps are necessary:
- If UEFI Secure Boot is active on your system (which is the case on most modern systems), you'll have to disable it in your BIOS Setup or via
mokutil --disable-validation
. This is required to run kernels from these repositories, as they are not signed with a key typical systems will trust. If you don't known if UEFI Secure Boot is active on your system you might want to runmokutil --sb-state
to find out.
- The new kernel that above commands install will normally get started by default. If that's not the case there is likely something fishy with your boot configuration. For example, if you start Fedora using a boot manger from a different Linux distribution installed on your system you'll have to boot into the latter and update its boot loader configuration to make it detect the newly installed kernel. In Ubuntu you for example do that by running
update-grub
.
- The "dnf update"-command doesn't offer anything to install? Then the kernel package version in the Fedora release you use is higher than the version offered in the kernel-vanilla repository you chose to use. In that case the kernel vanilla repositories are lagging behind (its maintainers sometimes are on holiday, too!), hence it might be the best to stick to the kernel your have.
You just want to use kernels from the kernel vanilla repositories for a short test? In that case once you finished your tests boot into the stock Fedora kernel again. Then uninstall all packages from these repos with the command sudo dnf remove $(rpm -qa 'kernel*' | grep '.vanilla' )
.
If you would like to permanently use kernels from these repos you might want to run one of these commands, depending on the type of kernels you want:
sudo dnf config-manager --set-enabled kernel-vanilla-mainline sudo dnf config-manager --set-enabled kernel-vanilla-stable
That way DNF will automatically install the latest packages from the particular repository when it updates your system the next time.
Note: This TLDR-instructions focused on the two main repositories: 'mainline' and 'stable'. There are two more (called 'mainline-wo-mergew' and 'fedora') for other use cases described below.
A few common questions about these repos are answered in the FAQ.
How to use, the verbose version
Configure the repositories
First download the repository definitions for DNF:
curl -s https://repos.fedorapeople.org/repos/thl/kernel-vanilla.repo | sudo tee /etc/yum.repos.d/kernel-vanilla.repo
This will install a repo file with following repos:
repository | description | target users | example versions |
---|---|---|---|
kernel-vanilla-mainline | a mainline kernel, either built from a proper pre-release (aka "rc kernel") or a git snapshot from Linux's main development branch | those who want to run the latest code | 4.3-rc7, 4.3-rc6-git2, 4.4, 4.5-rc0-git1, 4.5-rc1, 4.5-rc1-git2 |
kernel-vanilla-mainline-wo-mergew | identical to kernel-vanilla-mainline repo, except during the merge window: then it will contain the latest proper mainline release or stable kernels derived from it | those who normally want the latest mainline kernel, but want to play it a bit safer by avoiding mainline during the merge window. That's the phase at the beginning of a development cycle where the bulk of changes (~85 percent) for the next mainline release are merged; it's usually two weeks long, and ends with the first pre-release of a new mainline kernel, like 4.5-rc1 | 4.3-rc7, 4.3-rc6-git2, 4.4, 4.4.1, 4.5-rc1, 4.5-rc1-git2 |
kernel-vanilla-stable | the latest stable kernel according to kernel.org; this repo thus won't ship mainline releases like 4.4 and only start with 4.4.1 | those who want the latest Linux stable kernel | 4.3.12, 4.3.13, 4.4.1, 4.4.2, 4.4.3 |
kernel-vanilla-fedora | contains a vanilla build of the latest kernel from the stable series the current Fedora kernel is based on; most of the time this repository will contain the same kernels as kernel-vanilla-stable, except when Fedora hasn't yet jumped to the previous to the latest stable series yet | those who want to check if vanilla kernels shows the same bug or behavior as the latest Fedora kernel | 4.3.19, 4.3.20, 4.4.5, 4.4.6 |
Decide yourself which of those you want to use. The following examples assume you want to use the
kernel-vanilla-mainline
repository, hence if you want to use another repository you'll need to adjust the commands accordingly.
Install a kernel from the repository
Run this command to install the latest kernel from the kernel vanilla mainline repo:
sudo dnf --enablerepo=kernel-vanilla-mainline update
Alternatively you can permanently enable that repository to make DNF automatically install new kernel packages when updating the system:
sudo dnf config-manager --set-enabled kernel-vanilla-mainline sudo dnf update
When you install a kernel from the repository for the first time DNF will ask you if you trust the public key that is used to verify the signature of the packages from the kernel vanilla repositories. It will look like this:
Retrieving key from https://repos.fedorapeople.org/repos/thl/RPM-GPG-KEY-knurd-kernel-vanilla 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]:
Dnf will proceed once you acknowledge this.
Important notes
Please be aware that
- none of the developers that maintain the Fedora kernel is involved in the maintenance of the Fedora kernel vanilla repositories
- most systems work better and run in a more secure manner with the official Fedora kernels
- if you don't understand what above Dnf commands do then you likely should not use these repositories or its packages
More details about the kernel vanilla repos
What Linux kernel versions do the various branches currently contain?
Look at the file repostatus.txt or execute the following script to query the latest status locally:
releases="34 33 32"; \ branches="mainline mainline-wo-mergew stable fedora"; \ for branch in ${branches} ; do for release in ${releases} ; do 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!!;'
Who is behind this effort?
Right now the kernel vanilla repositories for Fedora are maintained by 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.
Which architectures are supported
Aarch64 (aka ARM64) and x86-64 (aka AMD64, IA32E, x64, x86_64).
How can I uninstall all kernels from the kernel vanilla repositories
Boot into a stock Fedora kernel and run
sudo dnf remove $(rpm -qa 'kernel*' | grep '.vanilla' )
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?
These and many other questions are answered in the FAQ about the kernel vanilla repositories.
ToDo list
Spec file:
- maybe ship debuginfo packages, which is not done due to size constrains; maybe CONFIG_DEBUG_INFO_REDUCED can help? or something else?
- maybe enable some of the staging drivers Fedora avoids
Repo:
- create stable-rc repo
- automate builds fully to keep repos more up2date
MISC:
- switch to kernel-ark as base for mainline builds