A Kernel Manager
Author: @sandmaan
Update: @manuel 2023-Jan-07
AKM is a simple GUI to manage the kernels. AKM is part of the EndeavourOS tool kit. But it can be used with any other Arch-based distribution. The letters AKM stands for “A Kernel Manager” according to the main developer who created this wonderful app.
AKM supplies the user with a Graphical User Interface with a list of kernels. The user can select a kernel version he/she wants to install.
Installing AKM
AKM doesn’t come preinstalled due to the minimalistic philosophy followed by the EndeavourOS team. So users who want to use AKM have to install it from the “Welcome app” or through pacman
in the terminal.
Installing from Welcome app
Installing from terminal
To install AKM via the terminal, you can use sudo pacman -S akm
Using AKM GUI
Using AKM is straightforward. From the GUI, a user can check the checkbox in front of the kernel package name which will mark that kernel to be installed. If the user wishes to uninstall a particular kernel then he/she just has to uncheck the kernel package from the list. Once they have selected or unselected the kernel package to change the status of, they only have to click on Execute to apply the changes. Refer to the image above for clarity.
Terminal Usage
You can use AKM via the terminal, with or without options. Using akm
will launch the main AKM GUI. But a user can use the below options to change some characteristics of AKM.
--connect-header
– Which will bind the kernel header package and the selected kernel into one unit. As an example, if a user chose to install or uninstall the kernellinux-zen
then using--connect-header
option will bind thelinux-zen-headers
to the install or uninstall.--scroll
– It allows the kernel list to be scrollable. By default, the list is scrollable (default changed in 2022).--small
– Make the akm window smaller, suitable for low resolution screens.
Advanced Configuration
By using the AKM configuration file users can customize how AKM works. You can find the configuration file at /etc/akm.conf
. Below is the example code of the mentioned file.
#!/bin/bash
### Config file for akm.
# When installing/uninstalling a kernel, you may configure to
# install/uninstall the related header too.
# Values: "yes" or "no"
# Default: no
local KERNEL_HEADER_WITH_KERNEL=no
# List of kernel and header names when using additional repos.
# Example:
# local AKM_KERNELS_HEADERS=(
# reponame/linux-xxx reponame/linux-xxx-headers
# reponame/linux-yyy reponame/linux-yyy-headers
# ...
# )
# where
# reponame The name of an additional repository.
# linux-xxx The name of a kernel.
#
local AKM_KERNELS_HEADERS=(
)
# Width of the akm window in pixels.
# Default: 900
local AKM_WINDOW_WIDTH=900
Variable | Description | Supported Value |
---|---|---|
KERNEL_HEADER_WITH_KERNEL | Provides the same function asthe --connect-header option,binding the header package with the kernel package. | no (default) or yes |
AKM_KERNELS_HEADERS | Lists the additional kernel and header names when using additional repositories. | List of reponame/pkgname entries. |
AKM_WINDOW_WIDTH | Predefines the width of theakm GU I window. | A positive integer (number) in pixels. Default is 900 |
Adding a New (unofficial) Package Repository
If a user wishes to more kernels he/she can add the corresponding repository to the /etc/pacman.conf
. After adding the repository user must perform a database sync using sudo pacman -Syy
or sudo pacman -Syyu
. Once this is done, if the repository contains any kernel packages then AKM will try to add them to the list and show them.
Ex:\
An unofficial kernel repo.
[kernel-lts]
Server = https://repo.m2x.dev/current/$repo/$arch
Using Caveat Method to Add Kernels
This method of automatically detecting kernel names is limited because kernels can be named in various ways. Use configuration variable AKM_KERNELS_HEADERS
(mentioned above) to add a list of kernel and header names from an additional repository. This is useful if the automatic kernel name detection does not recognize certain kernel names.
Just as an example, to use the info from the picture above, your /etc/akm.conf
could look something like this:
#!/bin/bash
### Config file for akm.
# When installing/uninstalling a kernel, you may configure to
# install/uninstall the related header too.
# Values: "yes" or "no"
# Default: no
local KERNEL_HEADER_WITH_KERNEL=yes
# List of kernel and header names when using additional repos.
# Example:
# local AKM_KERNELS_HEADERS=(
# reponame/linux-xxx reponame/linux-xxx-headers
# reponame/linux-yyy reponame/linux-yyy-headers
# ...
# )
# where
# reponame The name of an additional repository.
# linux-xxx The name of a kernel.
#
local AKM_KERNELS_HEADERS=(
kernel-lts/linux-lts414 kernel-lts/linux-lts414-headers
kernel-lts/linux-lts419 kernel-lts/linux-lts419-headers
kernel-lts/linux-lts44 kernel-lts/linux-lts44-headers
# and so on...
)
# Width of the akm window in pixels.
# Default: 900
local AKM_WINDOW_WIDTH=1000