Skip to content

Arch LTS Kernel Boot Lifecycle

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.

  • 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.

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.

Path Purpose
Rolling kernel The normal Arch kernel path. It receives newer kernel changes sooner.
LTS kernel A more conservative longterm kernel path. It receives maintained fixes with less kernel churn.
Second boot path Keeps both kernels available so the system can return to the known working path.
Boot history comparison Shows which kernel was used in each boot and whether the target issue appeared.

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

Terminal window
uname -r

Example output for the rolling kernel:

Terminal window
7.0.3-arch1-2

Example output for the LTS kernel:

Terminal window
6.18.26-2-lts

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

Terminal window
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.

Terminal window
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

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

Terminal window
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 and its matching kernel module package. Keep the rolling kernel installed. Do not remove the current kernel during the test.

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

Expected package names:

Terminal window
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.

Terminal window
==> 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

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.

Terminal window
bootctl list

Example output when only the rolling UKI is visible:

Terminal window
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.

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

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

Example output when only the rolling UKI exists:

Terminal window
/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 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.

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

Rolling preset example:

Terminal window
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:

Terminal window
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.

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

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

Change the LTS default section from this:

Terminal window
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:

Terminal window
#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.

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

Terminal window
sudo mkinitcpio -p linux-lts

Expected output includes the UKI target:

Terminal window
-> -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:

Terminal window
ls -l /boot/EFI/Linux/

Expected output:

Terminal window
arch-linux.efi
arch-linux-lts.efi

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

Terminal window
bootctl list

Expected entries:

Terminal window
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

Section titled “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.

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

After reboot, confirm that the LTS kernel is running.

Terminal window
uname -r

Expected output:

Terminal window
6.18.26-2-lts

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

Terminal window
nvidia-smi

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

Terminal window
NVIDIA-SMI 595.71.05
Driver Version: 595.71.05

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

Terminal window
journalctl --list-boots | tail -10

Example output:

Terminal window
-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

Section titled “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.

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

Example output:

Terminal window
===== 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.

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.

Result Interpretation
Issue disappears on LTS The rolling kernel path is suspicious. Keep LTS as a temporary daily path.
Issue appears on both kernels The issue likely follows a shared driver, firmware, hardware, or power-management path.
LTS creates new problems Return to the rolling kernel and remove the LTS test path.
Short LTS boot is clean but long LTS boot is not Compare longer sessions before treating LTS as stable.

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

Terminal window
sudo reboot
Terminal window
uname -r

Expected output for the rolling kernel:

Terminal window
7.0.3-arch1-2

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

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

Expected package removal:

Terminal window
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.

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

Safe output when the file was already removed:

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

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.

Terminal window
bootctl list

Expected real bootable entry:

Terminal window
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:

Terminal window
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.

Terminal window
sudo reboot
bootctl list
Terminal window
# 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
  • 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