Ctrl K

Arch LTS Kernel Boot Lifecycle

Install, expose, test, compare, and remove an Arch Linux LTS kernel path with systemd-boot and UKI entries.

This page documents the full lifecycle for testing the Arch Linux LTS kernel as a second boot path. It covers why LTS is tested, how to install the matching LTS kernel modules, how to expose the LTS entry in systemd-boot when using unified kernel images, how to verify the selected kernel, how to compare boot history, and how to remove the LTS path when it does not provide a clear benefit.

Overview

  • Use the LTS kernel as a controlled test path, not as a blind replacement for the current rolling kernel.
  • Keep the current rolling kernel installed while testing LTS.
  • Install the matching LTS kernel module package for hardware drivers that depend on the kernel.
  • For a systemd-boot setup using unified kernel images, confirm that the LTS UKI file exists under /boot/EFI/Linux.
  • Use bootctl list to confirm that systemd-boot can see the LTS entry.
  • Use a one-time boot command when the boot menu is hidden or when the default entry should not be changed.
  • Compare boot history and kernel versions before deciding whether LTS gives a real advantage.
  • Remove the LTS path if it does not reduce the issue being tested.

When this workflow applies

Use this workflow when you want to test whether a problem follows the latest rolling Arch kernel or whether it also appears on the LTS kernel. This is useful for kernel-facing issues involving graphics modules, wireless modules, suspend and resume behavior, PCIe behavior, or other hardware paths.

The test is useful only when both paths can be compared with logs. A working boot alone is not enough. The target behavior should be checked on both kernels.

PathPurpose
Rolling kernelThe normal Arch kernel path. It receives newer kernel changes sooner.
LTS kernelA more conservative longterm kernel path. It receives maintained fixes with less kernel churn.
Second boot pathKeeps both kernels available so the system can return to the known working path.
Boot history comparisonShows which kernel was used in each boot and whether the target issue appeared.

Check the current kernel

Start by confirming the kernel that is currently running. This gives the baseline before installing or testing the LTS path.

uname -r

Example output for the rolling kernel:

7.0.3-arch1-2

Example output for the LTS kernel:

6.18.26-2-lts

Check the bootloader type

Check the bootloader before changing the kernel path. This workflow assumes systemd-boot with unified kernel images under /boot/EFI/Linux.

bootctl status

Relevant signs in the output are systemd-boot as the current boot loader, an EFI System Partition mounted under /boot, and a current entry such as arch-linux.efi.

Current Boot Loader:
       Product: systemd-boot

Default Boot Loader Entry:
           id: arch-linux.efi
      version: 7.0.3-arch1-2
        linux: /boot//EFI/Linux/arch-linux.efi

Check whether LTS is already installed

Before installing anything, check whether the LTS kernel and the matching LTS driver module package already exist.

pacman -Qs '^linux-lts$' '^nvidia-open-lts$'

If the command returns no package output, the LTS path is not installed. A reboot will not show an LTS option until the packages and boot entry exist.

Install the LTS kernel path

Install the LTS kernel and its matching kernel module package. Keep the rolling kernel installed. Do not remove the current kernel during the test.

sudo pacman -S linux-lts nvidia-open-lts

Expected package names:

Packages (2) linux-lts-6.18.26-2  nvidia-open-lts-1:595.71.05-3

The package hook should generate the normal LTS initramfs. On a UKI system, this does not always create a visible LTS boot entry automatically.

==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default'
==> Starting build: '6.18.26-2-lts'
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-lts.img'
==> Initcpio image generation successful

Check visible boot entries

After installing LTS, check whether systemd-boot can see the LTS entry. If only the rolling entry appears, the LTS package is installed but the LTS UKI is not exposed yet.

bootctl list

Example output when only the rolling UKI is visible:

type: Boot Loader Specification Type #2 (UKI, .efi)
title: Arch Linux (default) (selected)
id: arch-linux.efi
version: 7.0.3-arch1-2
linux: /boot//EFI/Linux/arch-linux.efi

If there is no arch-linux-lts.efi entry, inspect the UKI files and mkinitcpio presets.

Inspect UKI files and presets

List the existing UKI files, kernel install configuration, and mkinitcpio preset files.

ls -R /etc/kernel /etc/mkinitcpio.d /boot/EFI/Linux 2>/dev/null

Example output when only the rolling UKI exists:

/boot/EFI/Linux:
arch-linux.efi

/etc/kernel:
cmdline  install.d

/etc/mkinitcpio.d:
linux-lts.preset  linux.preset

The normal kernel may already generate a UKI, while the LTS preset may still be configured to create only an initramfs image.

Compare the rolling and LTS presets

Compare the normal kernel preset and the LTS preset. The normal preset usually shows the correct UKI path. The LTS preset may have the UKI line commented out or pointed at the wrong ESP path.

cat /etc/mkinitcpio.d/linux.preset && echo "----- LTS -----" && cat /etc/mkinitcpio.d/linux-lts.preset

Rolling preset example:

ALL_kver="/boot/vmlinuz-linux"
PRESETS=('default')
default_uki="/boot/EFI/Linux/arch-linux.efi"
default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"

LTS preset example before the UKI fix:

ALL_kver="/boot/vmlinuz-linux-lts"
PRESETS=('default')
default_image="/boot/initramfs-linux-lts.img"
#default_uki="/efi/EFI/Linux/arch-linux-lts.efi"
#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"

The key difference is that the rolling preset writes a UKI to /boot/EFI/Linux, but the LTS preset writes only an initramfs image. On this system, the correct ESP path is /boot, not /efi.

Enable LTS UKI generation

Edit the LTS preset so it creates an LTS UKI under the same EFI directory used by the rolling kernel.

sudo nano /etc/mkinitcpio.d/linux-lts.preset

Change the LTS default section from this:

default_image="/boot/initramfs-linux-lts.img"
#default_uki="/efi/EFI/Linux/arch-linux-lts.efi"
#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"

To this:

#default_image="/boot/initramfs-linux-lts.img"
default_uki="/boot/EFI/Linux/arch-linux-lts.efi"
default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"

This mirrors the rolling UKI setup but writes the LTS kernel to a separate file named arch-linux-lts.efi.

Generate the LTS UKI

After changing the preset, rebuild the LTS image. This should create the LTS unified kernel image.

sudo mkinitcpio -p linux-lts

Expected output includes the UKI target:

-> -k /boot/vmlinuz-linux-lts -U /boot/EFI/Linux/arch-linux-lts.efi --splash /usr/share/systemd/bootctl/splash-arch.bmp
==> Creating unified kernel image: '/boot/EFI/Linux/arch-linux-lts.efi'
==> Unified kernel image generation successful

Confirm the two UKI files exist:

ls -l /boot/EFI/Linux/

Expected output:

arch-linux.efi
arch-linux-lts.efi

Confirm the LTS boot entry

Run bootctl list again. The LTS entry should now appear next to the rolling entry.

bootctl list

Expected entries:

title: Arch Linux (7.0.3-arch1-2) (default) (selected)
id: arch-linux.efi
version: 7.0.3-arch1-2

title: Arch Linux (6.18.26-2-lts) (not reported/new)
id: arch-linux-lts.efi
version: 6.18.26-2-lts

Boot LTS once without changing the default

If the boot menu is hidden, use a one-time systemd-boot entry selection. This boots LTS once while keeping the rolling kernel as the default path.

sudo systemctl reboot --boot-loader-entry=arch-linux-lts.efi

After reboot, confirm that the LTS kernel is running.

uname -r

Expected output:

6.18.26-2-lts

Verify the driver stack after boot

After booting LTS, confirm that the hardware driver stack still loads. For Nvidia Open systems, nvidia-smi should report the same driver branch.

nvidia-smi

The exact process list depends on the session, but the driver version should be visible and the command should return without hanging.

NVIDIA-SMI 595.71.05
Driver Version: 595.71.05

Review boot history

Use journalctl boot history to identify which boots are available for comparison. This is useful after several test reboots.

journalctl --list-boots | tail -10

Example output:

-5  boot_id  Wed 2026-05-06 12:03:46 +03 Thu 2026-05-07 10:32:50 +03
-4  boot_id  Thu 2026-05-07 10:33:28 +03 Thu 2026-05-07 20:42:24 +03
-3  boot_id  Thu 2026-05-07 20:44:10 +03 Thu 2026-05-07 20:53:29 +03
-2  boot_id  Thu 2026-05-07 20:54:32 +03 Fri 2026-05-08 12:06:51 +03
-1  boot_id  Fri 2026-05-08 12:08:47 +03 Fri 2026-05-08 12:26:35 +03
 0  boot_id  Fri 2026-05-08 12:27:47 +03 current

The boot index changes after every reboot. Always check the list before comparing logs from previous boots.

Compare kernel versions across recent boots

Use this loop to show the kernel version used in recent boots. Add issue-specific grep checks only when testing a specific problem.

for b in -5 -4 -3 -2 -1 0; do
  echo "===== boot $b ====="
  journalctl -b "$b" -k | grep -m1 "Linux version"
done

Example output:

===== boot -5 =====
Linux version 7.0.3-arch1-2

===== boot -2 =====
Linux version 6.18.26-2-lts

===== boot 0 =====
Linux version 7.0.3-arch1-2

This confirms which boot used the rolling kernel and which boot used the LTS kernel.

Decide whether LTS is useful

The LTS test is useful only if it produces a clear improvement. If the target issue appears on both kernels, LTS is not a proven solution. Keeping two kernels then adds extra maintenance without a clear benefit.

ResultInterpretation
Issue disappears on LTSThe rolling kernel path is suspicious. Keep LTS as a temporary daily path.
Issue appears on both kernelsThe issue likely follows a shared driver, firmware, hardware, or power-management path.
LTS creates new problemsReturn to the rolling kernel and remove the LTS test path.
Short LTS boot is clean but long LTS boot is notCompare longer sessions before treating LTS as stable.

Return to the rolling kernel

If LTS was booted once through systemd-boot, the next normal reboot usually returns to the default rolling kernel. Confirm after reboot.

sudo reboot
uname -r

Expected output for the rolling kernel:

7.0.3-arch1-2

Remove the LTS packages

If the LTS test gives no clear benefit, remove the LTS packages to keep the system simple.

sudo pacman -Rns linux-lts nvidia-open-lts

Expected package removal:

Packages (2) linux-lts-6.18.26-2  nvidia-open-lts-1:595.71.05-3

Total Removed Size: 153.05 MiB

The package hooks may remove the LTS UKI automatically. If manual removal says the file does not exist, that is fine.

sudo rm /boot/EFI/Linux/arch-linux-lts.efi

Safe output when the file was already removed:

rm: cannot remove '/boot/EFI/Linux/arch-linux-lts.efi': No such file or directory

Verify cleanup

After removal, bootctl list should show only the real rolling entry. It may temporarily show the old LTS entry as reported and absent until the next reboot.

bootctl list

Expected real bootable entry:

title: Arch Linux (default) (selected)
id: arch-linux.efi
version: 7.0.3-arch1-2
linux: /boot//EFI/Linux/arch-linux.efi

Temporary stale reported entry can appear like this:

title: arch-linux-lts.efi (reported/absent)
id: arch-linux-lts.efi

This stale entry is not a real bootable file. Reboot once normally and check bootctl list again.

sudo reboot
bootctl list

Command summary

# Check current kernel
uname -r

# Check bootloader and entries
bootctl status
bootctl list

# Check whether LTS packages exist
pacman -Qs '^linux-lts$' '^nvidia-open-lts$'

# Install LTS test path
sudo pacman -S linux-lts nvidia-open-lts

# Inspect UKI files and presets
ls -R /etc/kernel /etc/mkinitcpio.d /boot/EFI/Linux 2>/dev/null
cat /etc/mkinitcpio.d/linux.preset && echo "----- LTS -----" && cat /etc/mkinitcpio.d/linux-lts.preset

# Edit LTS preset if the UKI line is missing or wrong
sudo nano /etc/mkinitcpio.d/linux-lts.preset

# Generate LTS UKI
sudo mkinitcpio -p linux-lts
ls -l /boot/EFI/Linux/

# Confirm LTS entry
bootctl list

# Boot LTS once
sudo systemctl reboot --boot-loader-entry=arch-linux-lts.efi

# Verify selected kernel after reboot
uname -r

# Compare recent boot kernels
journalctl --list-boots | tail -10

for b in -5 -4 -3 -2 -1 0; do
  echo "===== boot $b ====="
  journalctl -b "$b" -k | grep -m1 "Linux version"
done

# Remove LTS when the test gives no clear benefit
sudo pacman -Rns linux-lts nvidia-open-lts
sudo rm /boot/EFI/Linux/arch-linux-lts.efi
bootctl list

File locations

  • Rolling UKI: /boot/EFI/Linux/arch-linux.efi
  • LTS UKI: /boot/EFI/Linux/arch-linux-lts.efi
  • Rolling preset: /etc/mkinitcpio.d/linux.preset
  • LTS preset: /etc/mkinitcpio.d/linux-lts.preset
  • Kernel command line: /etc/kernel/cmdline
  • systemd-boot config: /boot/loader/loader.conf