diff options
author | evansan | 2022-11-06 21:28:08 -0500 |
---|---|---|
committer | evansan | 2022-11-06 21:28:08 -0500 |
commit | 898d75033ac421cc75e3ca253db7d528e8b5fbb7 (patch) | |
tree | 5d3c8c1ad5f4617bd591222ab18dd3efe396ded8 | |
download | aur-898d75033ac421cc75e3ca253db7d528e8b5fbb7.tar.gz |
initial commit
-rw-r--r-- | .SRCINFO | 23 | ||||
-rw-r--r-- | 60-dracut-btrfs-remove.hook | 10 | ||||
-rw-r--r-- | 60-dracut-btrfs-uefi-remove.hook | 10 | ||||
-rw-r--r-- | 90-dracut-btrfs-install.hook | 12 | ||||
-rw-r--r-- | 90-dracut-btrfs-uefi-install.hook | 12 | ||||
-rw-r--r-- | PKGBUILD | 28 | ||||
-rwxr-xr-x | dracut-btrfs-uefi-install | 18 | ||||
-rwxr-xr-x | dracut-btrfs-uefi-remove | 14 |
8 files changed, 127 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..1c0685ae6201 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,23 @@ +pkgbase = dracut-btrfs-uefi-hook + pkgdesc = Install/update/removal hooks for dracut unifed uefi image generation with disk name and subvolume ID + pkgver = 4 + pkgrel = 1 + url = https://aur.archlinux.org/packages/dracut-btrfs-uefi-hook/ + arch = any + license = MIT + depends = dracut + depends = systemd + depends = binutils + depends = util-linux + conflicts = dracut-hook-uefi + conflicts = dracut-uefi-hook + source = 90-dracut-btrfs-uefi-install.hook + source = 60-dracut-btrfs-uefi-remove.hook + source = dracut-btrfs-uefi-install + source = dracut-btrfs-uefi-remove + sha256sums = df94baaf97d110f65f1443dd7063fe0e8ec1f73b5baf142c6ff08c260e571fcb + sha256sums = 41c996bf7ef90e6a81690c4a06cbef89167882a036699834fe22637a1a184982 + sha256sums = 533597501e7b23dc661c8b8d255a43c2f583d6cdc830a4912afb2252249a3f2d + sha256sums = 6d6662a2e3a15a208fa88e83affa5297b1a92d595da10b9b2a8e021885874f2c + +pkgname = dracut-btrfs-uefi-hook diff --git a/60-dracut-btrfs-remove.hook b/60-dracut-btrfs-remove.hook new file mode 100644 index 000000000000..f2b1271bd42a --- /dev/null +++ b/60-dracut-btrfs-remove.hook @@ -0,0 +1,10 @@ +[Trigger] +Type = Path +Operation = Remove +Target = usr/lib/modules/*/pkgbase + +[Action] +Description = Removing linux initcpios... +When = PreTransaction +Exec = /usr/local/bin/dracut-remove.sh +NeedsTargets diff --git a/60-dracut-btrfs-uefi-remove.hook b/60-dracut-btrfs-uefi-remove.hook new file mode 100644 index 000000000000..f2b1271bd42a --- /dev/null +++ b/60-dracut-btrfs-uefi-remove.hook @@ -0,0 +1,10 @@ +[Trigger] +Type = Path +Operation = Remove +Target = usr/lib/modules/*/pkgbase + +[Action] +Description = Removing linux initcpios... +When = PreTransaction +Exec = /usr/local/bin/dracut-remove.sh +NeedsTargets diff --git a/90-dracut-btrfs-install.hook b/90-dracut-btrfs-install.hook new file mode 100644 index 000000000000..d96895b681e5 --- /dev/null +++ b/90-dracut-btrfs-install.hook @@ -0,0 +1,12 @@ +[Trigger] +Type = Path +Operation = Install +Operation = Upgrade +Target = usr/lib/modules/*/pkgbase + +[Action] +Description = Updating linux initcpios (with dracut!)... +When = PostTransaction +Exec = /usr/local/bin/dracut-install.sh +Depends = dracut +NeedsTargets diff --git a/90-dracut-btrfs-uefi-install.hook b/90-dracut-btrfs-uefi-install.hook new file mode 100644 index 000000000000..d96895b681e5 --- /dev/null +++ b/90-dracut-btrfs-uefi-install.hook @@ -0,0 +1,12 @@ +[Trigger] +Type = Path +Operation = Install +Operation = Upgrade +Target = usr/lib/modules/*/pkgbase + +[Action] +Description = Updating linux initcpios (with dracut!)... +When = PostTransaction +Exec = /usr/local/bin/dracut-install.sh +Depends = dracut +NeedsTargets diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..c17730e4c72d --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,28 @@ +# Maintainer: rockmonstr + +pkgname=dracut-btrfs-uefi-hook +pkgver=4 +pkgrel=1 +pkgdesc="Install/update/removal hooks for dracut unifed uefi image generation with disk name and subvolume ID" +arch=(any) +license=('MIT') +depends=(dracut systemd binutils util-linux) +source=('90-dracut-btrfs-uefi-install.hook' + '60-dracut-btrfs-uefi-remove.hook' + 'dracut-btrfs-uefi-install' + 'dracut-btrfs-uefi-remove') +sha256sums=('df94baaf97d110f65f1443dd7063fe0e8ec1f73b5baf142c6ff08c260e571fcb' + '41c996bf7ef90e6a81690c4a06cbef89167882a036699834fe22637a1a184982' + '533597501e7b23dc661c8b8d255a43c2f583d6cdc830a4912afb2252249a3f2d' + '6d6662a2e3a15a208fa88e83affa5297b1a92d595da10b9b2a8e021885874f2c') + +url="https://aur.archlinux.org/packages/dracut-btrfs-uefi-hook/" +conflicts=(dracut-hook-uefi dracut-uefi-hook) + +package() { + install -Dm644 "${srcdir}/90-dracut-btrfs-uefi-install.hook" "${pkgdir}/usr/share/libalpm/hooks/90-dracut-btrfs-uefi-install.hook" + install -Dm644 "${srcdir}/60-dracut-btrfs-uefi-remove.hook" "${pkgdir}/usr/share/libalpm/hooks/60-dracut-btrfs-uefi-remove.hook" + install -Dm755 "${srcdir}/dracut-btrfs-uefi-install" "${pkgdir}/usr/share/libalpm/scripts/dracut-btrfs-uefi-install" + install -Dm755 "${srcdir}/dracut-btrfs-uefi-remove" "${pkgdir}/usr/share/libalpm/scripts/dracut-btrfs-uefi-remove" +} + diff --git a/dracut-btrfs-uefi-install b/dracut-btrfs-uefi-install new file mode 100755 index 000000000000..6cfe4e03b3ff --- /dev/null +++ b/dracut-btrfs-uefi-install @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +args=('--force' '--quiet') + +disk=$(lsblk /dev/nvme0n1 -o MODEL | awk '{print $2;}' | xargs) +subvolid=$(btrfs sub show / | grep 'Subvolume ID:' | awk '{print $3;}' | sed -r 's/\s+//g') + + + +while read -r line; do + if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then + read -r pkgbase < "/${line}" + kver="${line#'usr/lib/modules/'}" + kver="${kver%'/pkgbase'}" + + dracut "${args[@]}" --hostonly "/boot/EFI/Linux/$kver-$disk-$subvolid-dracut.efi" --kver "$kver" + fi +done diff --git a/dracut-btrfs-uefi-remove b/dracut-btrfs-uefi-remove new file mode 100755 index 000000000000..e845244526d6 --- /dev/null +++ b/dracut-btrfs-uefi-remove @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +disk=$(lsblk /dev/nvme0n1 -o MODEL | awk '{print $2;}' | xargs) +subvolid=$(btrfs sub show / | grep 'Subvolume ID:' | awk '{print $3;}' | sed -r 's/\s+//g') + +while read -r line; do + if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then + read -r pkgbase < "/${line}" + kver="${line#'usr/lib/modules/'}" + kver="${kver%'/pkgbase'}" + + rm -f "/boot/EFI/Linux/$kver-$disk-$subvolid-dracut.efi" + fi +done |