diff options
| author | Robert Günzler <r@gnzler.io> | 2023-09-25 11:56:34 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2023-09-25 11:56:34 +0200 |
| commit | f5c219983c0f60a07f1bd52b6f6071e86f35455e (patch) | |
| tree | b7520a02b9822481f29aea4ccb404744a73414b1 /os/etc/kernel/postinst.d/efi.sh.bak | |
| parent | 91ba318df1ff9b04d08af373ae904f61a91bf489 (diff) | |
add os config
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'os/etc/kernel/postinst.d/efi.sh.bak')
| -rw-r--r-- | os/etc/kernel/postinst.d/efi.sh.bak | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/os/etc/kernel/postinst.d/efi.sh.bak b/os/etc/kernel/postinst.d/efi.sh.bak new file mode 100644 index 0000000..5d63729 --- /dev/null +++ b/os/etc/kernel/postinst.d/efi.sh.bak @@ -0,0 +1,49 @@ +#!/bin/sh +set -eu + +VERSION=$1 +BOOTDIR=$(dirname "$2") + +label="Gentoo Linux" +efiPart=/boot/efi +efiDir="/EFI/Gentoo" + +mount "${efiPart}" || true +mount -o remount,rw /sys/firmware/efi/efivars +trap '{ umount ${efiPart}; mount -o remount,ro /sys/firmware/efi/efivars; }' EXIT + +efiKernel="vmlinuz-${VERSION}.efi" +efiInitramfs="initramfs-${VERSION}.img" + +while read -r line; do + id="${line:4:4}" + path=$(egrep -o 'File\([^(]*\)' <<<"${line}") + path="${path:5:-1}" + path="${path//\\/\/}" + path=$(basename "${path}") + kernel=$path + initramfs=${path//boot/initramfs} + initramfs=${initramfs//efi/img} + + # cleanup old boot entries + efibootmgr --delete-bootnum --bootnum "${id}" + rm -v "${efiPart}${efiDir}/${kernel}" || true + rm -v "${efiPart}${efiDir}/${initramfs}" || true + +done < <(efibootmgr -v | grep '^Boot0[^ ]*.*HD*' | grep "$label") + +cp -vf "${BOOTDIR}/vmlinuz-${VERSION}" "${efiPart}${efiDir}/${efiKernel}" +cp -vf "${BOOTDIR}/initramfs-${VERSION}.img" "${efiPart}${efiDir}/${efiInitramfs}" + +cp -vf "${BOOTDIR}/vmlinuz-${VERSION}.old" "${efiPart}${efiDir}/${efiKernel}.old" +cp -vf "${BOOTDIR}/initramfs-${VERSION}.img.old" "${efiPart}${efiDir}/${efiInitramfs}.old" + +efiDir="${efiDir,,}" # make lowercase +efiDir="${efiDir//\//\\}" # map to backslash seperators + +# create in reverse order so new kernel ends up at the top +efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "$label (old)" --loader "${efiDir}\\${efiKernel}.old" -u "initrd=${efiDir}\\${efiInitramfs}.old" +efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "$label" --loader "${efiDir}\\${efiKernel}" -u "initrd=${efiDir}\\${efiInitramfs}" + +echo +echo "done." |