pika-kernel-manager/README.MD
Ward Nakchbandi (Cosmic Fusion) ef9c2c5f58
Update README.MD
2024-06-24 15:31:02 +03:00

4.5 KiB

Intro

Fedora Kernel Manager is a rust written libadwaita app that allows installing/uninstalling kernel packages from "Kernel Branch Providers" and Selecting SCX Schedulers.

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 has x86-64-v3 and this value is set to 4 the entry will not be displayed to the user.

GUI

Primary Page

Primary Page

Branch Selection

Branch Selection

SCX Sched Selection Page

SCX Sched Selection Page

Kernel Install Page

Kernel Install Page