diff --git a/scripts/snap-pac-uki_create.fish b/scripts/snap-pac-uki_create.fish index e00524b..03a49d2 100755 --- a/scripts/snap-pac-uki_create.fish +++ b/scripts/snap-pac-uki_create.fish @@ -2,13 +2,11 @@ # get id and type of last snapshot set -l config "root" -set -l snapshots (snapper -c $config --jsonout ls | jq -c ".$config") -set -l last (echo $snapshots | jq -c "last") -set -l id (echo $last | jq ".number") -set -l type (echo $last | jq ".type") +set -l snapshot (snapper -c $config --jsonout ls | jq -c ".$config | last") +set -l id (echo $snapshot | jq ".number") -if not contains $type '"pre"' '"post"' - echo "Last snapshot has type \"$type\", therefore no UKI is created." +if not contains (echo $snapshot | jq -r ".type") "pre" "post" + echo "==> last snapshot type is neither 'pre' nor 'post'; no UKI creation" exit end @@ -17,15 +15,16 @@ end set -l ukis (ls /boot/EFI/Linux/ | grep "snap-pac-uki-[1-9][0-9]*\.efi" | grep -o '[1-9][0-9]*') if contains $id $ukis - echo "UKI already exists" + echo "==> UKI already exists; no UKI creation" exit end # prepare uki creation -mkdir -p "/tmp/snap-pac-uki/$id" -rm -rf "/tmp/snap-pac-uki/$id/*" -cd "/tmp/snap-pac-uki/$id" +set -l buildpath "/tmp/snap-pac-uki/$id" +mkdir -p $buildpath +rm -rf "$buildpath/*" +cd $buildpath sed "s/BUILD_ID=.*/BUILD_ID=\"Snapshot $id\"/" ./os-release @@ -36,10 +35,12 @@ grep options /boot/loader/entries/00-arch.conf | \ # create uki +set -l ukipath "/boot/EFI/Linux/snap-pac-uki-$id.efi" objcopy \ --add-section .osrel="./os-release" --change-section-vma .osrel=0x20000 \ --add-section .cmdline="./kernel-parameters" --change-section-vma .cmdline=0x30000 \ --add-section .splash="/usr/share/systemd/bootctl/splash-arch.bmp" --change-section-vma .splash=0x40000 \ --add-section .linux="/boot/vmlinuz-linux" --change-section-vma .linux=0x2000000 \ --add-section .initrd="/boot/initramfs-linux.img" --change-section-vma .initrd=0x3000000 \ - "/usr/lib/systemd/boot/efi/linuxx64.efi.stub" "/boot/EFI/Linux/snap-pac-uki-$id.efi" + "/usr/lib/systemd/boot/efi/linuxx64.efi.stub" $ukipath +echo "==> created UKI: $ukipath"