User:Anthumchris:How to build the Alpine Linux kernel: Difference between revisions

From Alpine Linux
m (Anthumchris moved page User:How to build the Alpine Linux kernel to User:Anthumchris:How to build the Alpine Linux kernel: this wiki is confusing me and I moved to the wrong place outside my userspace)
mNo edit summary
 
(29 intermediate revisions by the same user not shown)
Line 1: Line 1:
== How build the Alpine Linux kernel ==
== How to build the Alpine Linux kernel ==
A customized build of the Alpine Linux kernel may be needed if you are experimenting with adding/removing kernel features and modules. The Alpine kernel extends the standard [https://www.kernel.org/linux.html Linux kernel] and builds within 5 minutes to few hours (depending on the speed of your system). The kernel is built using <code>[[abuild]]</code> and [https://gitlab.alpinelinux.org/alpine/aports aports].  
This [[Tutorials and Howtos|Howto]] quickly demonstrates building/compiling the default Alpine Linux [[Kernels|kernels]]. Kernel customizations (not covered here) allow you to experiment by adding/removing kernel modules/features. For example, Alpine releases multiple [[Kernels|kernels]] that vary in features and file sizes. Alpine kernels extend the standard [https://www.kernel.org/linux.html Linux kernel] and build within a few minutes to a few hours (depending on the speed of your system) using <code>[[abuild]]</code>, [https://gitlab.alpinelinux.org/alpine/aports aports], and [https://pkgs.alpinelinux.org/package/edge/main/x86_64/alpine-sdk alpine-sdk].


== Before you start ==
== Before you start ==
A running instance of Alpine Linux and a non-root user are required to use <code>[[abuild]]</code>.
A running instance of Alpine Linux and a non-root user with [https://pkgs.alpinelinux.org/package/edge/main/x86_64/doas doas] privileges (i.e. sudo, wheel group) are required to use <code>[[abuild]]</code>.


== Build the kernel ==
== Build & install the kernel ==
Run as root:
 
=== Build ===
<pre>
<pre>
# add required packages
doas apk add alpine-sdk
apk add alpine-sdk
doas addgroup USERNAME abuild        # your non-root user
 
git clone --depth 1 https://gitlab.alpinelinux.org/alpine/aports.git
abuild-keygen --append --install
doas chmod a+r /etc/apk/keys/*        # ensure new keys are readable
 
cd aports/main/linux-lts/
time abuild -crK
</pre>
 
=== Identify backup ===
 
Identify the package name of your current kernel (e.g. linux-lts, linux-virt). This example shows that '''linux-lts''' is the current package that we would revert to as a backup.


# add non-root user to abuild group
<pre>
addgroup USERNAME abuild
echo "kernel: $(uname -r)"
apk list --installed linux-*
</pre>
</pre>


Run as non-root user:
[[File:Alpine-kernel-package2.png|600px]]
 
=== Install ===
Find the newly-built kernel file to install. This example shows how to install a newly-built x86_64 LTS kernel:
 
<pre>
<pre>
git clone --depth 1 https://gitlab.alpinelinux.org/alpine/aports.git
ls -r ~/packages/main/*
abuild-keygen --append
doas apk add FILENAME
doas reboot
</pre>
 
[[File:Alpine-kernel-install.png|600px]]


# build/install the kernel
After rebooting, verify the newly-installed kernel version:
cd aports/main/linux-lts/
<pre>
time abuild -crK
echo "kernel: $(uname -r)"
</pre>
</pre>


== Install the kernel ==
[[File:Alpine-kernel-new.png|320px]]


=== Revert ===
If needed, revert to the previous backup kernel package we identified earlier. This example shows how to revert to the previous "alpine-lts" package after removing the newly-installed "alpine-lts" (both are named "alpine-lts" yet refer to different versions/locations):
<pre>
<pre>
apk add /home/USERNAME/packages/.....................................
apk list linux-lts            # newly-compiled kernel installed
doas apk del linux-lts        # newly-compiled kernel from file
doas apk add linux-lts        # previous kernel from Alpine repo
apk list linux-lts            # previous kernel installed
doas reboot
</pre>
</pre>


[[File:Alpine-kernel-revert.png|465px]]


== See Also ==
== See Also ==


* [[Kernels]]
* [[Kernels]]
* [[Custom Kernel]]
* [[Custom Kernel|Custom Kernel (2018-present)]]

Latest revision as of 22:57, 3 December 2024

How to build the Alpine Linux kernel

This Howto quickly demonstrates building/compiling the default Alpine Linux kernels. Kernel customizations (not covered here) allow you to experiment by adding/removing kernel modules/features. For example, Alpine releases multiple kernels that vary in features and file sizes. Alpine kernels extend the standard Linux kernel and build within a few minutes to a few hours (depending on the speed of your system) using abuild, aports, and alpine-sdk.

Before you start

A running instance of Alpine Linux and a non-root user with doas privileges (i.e. sudo, wheel group) are required to use abuild.

Build & install the kernel

Build

doas apk add alpine-sdk
doas addgroup USERNAME abuild         # your non-root user

git clone --depth 1 https://gitlab.alpinelinux.org/alpine/aports.git
abuild-keygen --append --install
doas chmod a+r /etc/apk/keys/*        # ensure new keys are readable

cd aports/main/linux-lts/
time abuild -crK

Identify backup

Identify the package name of your current kernel (e.g. linux-lts, linux-virt). This example shows that linux-lts is the current package that we would revert to as a backup.

echo "kernel: $(uname -r)"
apk list --installed linux-*

Install

Find the newly-built kernel file to install. This example shows how to install a newly-built x86_64 LTS kernel:

ls -r ~/packages/main/*
doas apk add FILENAME
doas reboot

After rebooting, verify the newly-installed kernel version:

echo "kernel: $(uname -r)"

Revert

If needed, revert to the previous backup kernel package we identified earlier. This example shows how to revert to the previous "alpine-lts" package after removing the newly-installed "alpine-lts" (both are named "alpine-lts" yet refer to different versions/locations):

apk list linux-lts            # newly-compiled kernel installed
doas apk del linux-lts        # newly-compiled kernel from file
doas apk add linux-lts        # previous kernel from Alpine repo
apk list linux-lts            # previous kernel installed
doas reboot

See Also