summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorevansan2022-11-06 21:28:08 -0500
committerevansan2022-11-06 21:28:08 -0500
commit898d75033ac421cc75e3ca253db7d528e8b5fbb7 (patch)
tree5d3c8c1ad5f4617bd591222ab18dd3efe396ded8
downloadaur-898d75033ac421cc75e3ca253db7d528e8b5fbb7.tar.gz
initial commit
-rw-r--r--.SRCINFO23
-rw-r--r--60-dracut-btrfs-remove.hook10
-rw-r--r--60-dracut-btrfs-uefi-remove.hook10
-rw-r--r--90-dracut-btrfs-install.hook12
-rw-r--r--90-dracut-btrfs-uefi-install.hook12
-rw-r--r--PKGBUILD28
-rwxr-xr-xdracut-btrfs-uefi-install18
-rwxr-xr-xdracut-btrfs-uefi-remove14
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