Pacman hooks creating unified kernel images for snapshots created by snap-pac.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Adrian Wannenmacher bb931ff68c
fix pacman hook error
12 months ago
pacman fix pacman hook error 12 months ago
src add a new feautre to make pacman installation possible 12 months ago
systemd feat: add cleaning facilities 2 years ago
LICENSE chore: 📄 Add LICENSE 2 years ago
README.md Allow separate kernel cmd for current system 12 months ago
install.fish feat: stop deleting or overwriting config file 1 year ago
uninstall.fish feat: stop deleting or overwriting config file 1 year ago

README.md

snap-pac-uki

Need help? Talk to me at #snap-pac-uki:tfld.dev.

What is this?

This is a collection of scripts, pacman hooks and and systemd units for creating and managing unified kernel images (UKIs) based on snapper. It originally expected to be executed as a pacman hook after snap-pac, but this is no longer required (though the name remains).

Installation

Prerequisites

This tool expects that you already set up snapper. It also expects that each snapshots linux and initramfs files (/boot/vmlinuz-linux and /boot/initramfs-linux.img) as well as a kernel command line file (/etc/snap-pac-uki/kernel-cmd) are available within each snapshot.

The fallback initramfs (/boot/initramfs-linux-fallback.img) and fallback command line file (/etc/snap-pac-uki/kernel-cmd-fallback) are only required on the current system.

Also the current command line file (/etc/snap-pac-uki/kernel-cmd-current) needs is only required on the current system.

EFI boot options are only created for each snapshot. If you want the UKIs created for the current system, you'll need to add boot entries yourself:

# template
efibootmgr -c \
    -d <EFI DEVICE> \
    -p <EFI PARTITION NUMBER> \
    -l <EFI PATH> \
    -L <LABEL>

# example
efibootmgr -c \
    -d /dev/nvme0n1 \
    -p 1 \
    -l "\EFI\Linux\arch-linux.efi" \
    -L "Arch Linux"

# example for fallback
efibootmgr -c \
    -d /dev/nvme0n1 \
    -p 1 \
    -l "\EFI\Linux\arch-linux-fallback.efi" \
    -L "Arch Linux (Fallback)"

Using the install script

  1. You can install the dependencies of this program with the following command:

    pacman -S fish efibootmgr jq ripgrep sbsigntools sed snapper
    
  2. Download the latest release from here and unpack it.

  3. Then run the install script (you need to be in the same directory):

    ./install.fish
    

Usage

Creating snapshot UKIs

This creates a new UKI for all snapshots where none is found:

snap-pac-uki snapshots

Create current UKIs

This creates a new UKI for the current system (including a fallback variant):

snap-pac-uki current

Clean up UKIs

This removes all UKIs without corresponding snapshot (solely based on number):

snap-pac-uki clean

Enable periodic cleanups using systemd timer

systemctl enable --now snap-pac-uki-cleanup.timer

Uninstall

Simply run the following command in this directory:

./uninstall.fish