add readme

This commit is contained in:
Ward from fusion-voyager-3 2024-06-24 15:18:12 +03:00
parent f6dfcd9501
commit 6d1e6852e5
5 changed files with 119 additions and 0 deletions

119
README.MD Normal file
View File

@ -0,0 +1,119 @@
### 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
```xpath
/usr/lib/fedora-kernel-manager/kernel_branches/kernel-cachyos.json
```
```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:
```xpath
/usr/lib/fedora-kernel-manager/scripts/kernel-cachyos-init.sh
```
```bash
#!/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
```xpath
https://raw.githubusercontent.com/sirlucjan/copr-linux-cachyos/master/sources/cachyos-fkm-config/db_kernel_cachy.json
```
```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

BIN
assets/branch_select.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
assets/kernel_install.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
assets/main_page.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
assets/scx_select.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB