3.9 KiB
Intro
Fedora Kernel Manager is a rust written libadwaita app that allows installing/uninstalling kernel packages from "Kernel Branch Providers"
These kernel branches are json files in /usr/lib/fedora-kernel-manager/kernel_branches/
Example of Kernel Branch
/usr/lib/fedora-kernel-manager/kernel_branches/kernel-cachyos.json
{
"name": "kernel-cachyos",
"db_url": "https://raw.githubusercontent.com/sirlucjan/copr-linux-cachyos/master/sources/cachyos-fkm-config/db_kernel_cachy.json",
"init_script": "pkexec /usr/lib/fedora-kernel-manager/scripts/kernel-cachyos-init.sh"
}
name
obviously refers to branch name shown to users
db_url
the url to this branch DB that gets downloaded at run time when users open the app
init_script
a command to run upon reading the branch json usually this has a repo check and repo addition with policykit rule to not ask for a password
See:
/usr/lib/fedora-kernel-manager/scripts/kernel-cachyos-init.sh
#!/bin/bash
YUM_CHANGED=false
KERNEL_CACHYOS_REPO_FILE='/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:bieszczaders:kernel-cachyos.repo'
KERNEL_CACHYOS_ADDONS_REPO_FILE='/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:bieszczaders:kernel-cachyos-addons.repo'
if [ ! -f $KERNEL_CACHYOS_REPO_FILE ]
then
wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-fedora-$(rpm -E %fedora).repo -O $KERNEL_CACHYOS_REPO_FILE
YUM_CHANGED=true
fi
if [ ! -f $KERNEL_CACHYOS_ADDONS_REPO_FILE ]
then
wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-addons/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-addons-fedora-$(rpm -E %fedora).repo -O $KERNEL_CACHYOS_ADDONS_REPO_FILE
YUM_CHANGED=true
fi
if [ YUM_CHANGED == true ]
then
dnf repoquery
fi
Kernel Branch DB
This is the json file the db_url references, it is not to be packaged only hosted and maintained by the kernel branch providers
Example of Kernel Branch DB
https://raw.githubusercontent.com/sirlucjan/copr-linux-cachyos/master/sources/cachyos-fkm-config/db_kernel_cachy.json
{
"latest_kernel_version_deter_pkg": "kernel-cachyos",
"kernels": [
{
"name": "CachyOS Default Kernel",
"main_package": "kernel-cachyos",
"packages": "kernel-cachyos kernel-cachyos-devel-matched",
"min_x86_march": "3"
},
{
"name": "CachyOS LTS Kernel",
"main_package": "kernel-cachyos-lts",
"packages": "kernel-cachyos-lts kernel-cachyos-lts-devel-matched",
"min_x86_march": "2"
},
{
"name": "Sched EXT SCX",
"main_package": "sched-ext-scx",
"packages": "sched-ext-scx",
"min_x86_march": "1"
},
{
"name": "UKSMD Daemon",
"main_package": "uksmd",
"packages": "uksmd",
"min_x86_march": "1"
},
{
"name": "CachyOS-Settings",
"main_package": "cachyos-settings",
"packages": "cachyos-settings",
"min_x86_march": "1"
},
{
"name": "Ananicy-CPP",
"main_package": "ananicy-cpp",
"packages": "ananicy-cpp",
"min_x86_march": "1"
}
]
}
latest_kernel_version_deter_pkg
The kernel manager informs the user of what is the latest version hosted by their selected branch.
This is done by reading the version of the rpm package set in this json value.
kernels
The array where the branch provider input all the "Kernels"/Packages to be shown to the user each should have the following values:
name
The Pretty name of the package.main_package
The primary package (only 1) of entry it is used to get the description and version of the entry.packages
One or more package, it refers to what actually gets installed and removed.min_x86_march
The minimum x86 micro-architecture needed, if the user hasx86-64-v3
and this value is set to4
the entry will not be displayed to the user.