summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorFranklyn Tackitt2020-01-30 14:41:47 -0700
committerFranklyn Tackitt2020-01-30 14:41:47 -0700
commitc45e6f7b89dfae01b97f58b46bc3779ae3c89f4f (patch)
treeb5c603329ab54a9c58ff6270c3dcd19db7b97808
downloadaur-c45e6f7b89dfae01b97f58b46bc3779ae3c89f4f.tar.gz
Initial universal dracut-hook script
-rw-r--r--.SRCINFO15
-rw-r--r--.gitignore7
-rw-r--r--90-dracut-install.hook12
-rw-r--r--PKGBUILD22
-rwxr-xr-xdracut-install38
5 files changed, 94 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..f27ea5009e11
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,15 @@
+pkgbase = dracut-hook
+ pkgdesc = dracut hook for archlinux
+ pkgver = 0.2
+ pkgrel = 1
+ url = https://tackitt.net
+ arch = any
+ license = BSD
+ depends = dracut
+ source = dracut-install
+ source = 90-dracut-install.hook
+ md5sums = aa3097b708237e0a3b3a357dab6fd4e6
+ md5sums = 8fa0ed0a9aa50f2ac6525d3264f04d76
+
+pkgname = dracut-hook
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..6748987a3d9d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+pkg
+src
+*.tar.gz
+*.zip
+*.tar.xz
+*.patch
+*.dat.bz2 \ No newline at end of file
diff --git a/90-dracut-install.hook b/90-dracut-install.hook
new file mode 100644
index 000000000000..8af2237a75dc
--- /dev/null
+++ b/90-dracut-install.hook
@@ -0,0 +1,12 @@
+[Trigger]
+Type = File
+Operation = Install
+Operation = Upgrade
+Target = usr/lib/modules/*/vmlinuz
+Target = usr/lib/dracut/*
+
+[Action]
+Description = Updating linux initcpios...
+When = PostTransaction
+Exec = /usr/share/libalpm/scripts/dracut-install
+NeedsTargets
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..3b74819b9088
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer: Franklyn Tackitt <franklyn@tackitt.net>
+
+pkgname="dracut-hook"
+pkgver=0.2
+pkgrel=1
+pkgdesc="dracut hook for archlinux"
+arch=('any')
+url="https://tackitt.net"
+license=('BSD')
+depends=('dracut')
+noextract=()
+source=(
+ "dracut-install"
+ "90-dracut-install.hook"
+)
+md5sums=('aa3097b708237e0a3b3a357dab6fd4e6'
+ '8fa0ed0a9aa50f2ac6525d3264f04d76')
+
+package() {
+ install -Dm755 "$srcdir/90-dracut-install.hook" "${pkgdir}/usr/share/libalpm/hooks/90-dracut-install.hook"
+ install -Dm755 "$srcdir/dracut-install" "${pkgdir}/usr/share/libalpm/scripts/dracut-install"
+}
diff --git a/dracut-install b/dracut-install
new file mode 100755
index 000000000000..205436ba6e56
--- /dev/null
+++ b/dracut-install
@@ -0,0 +1,38 @@
+#!/bin/bash -e
+
+kernels=()
+all=0
+
+
+while read -r line; do
+ if [[ $line != */vmlinuz ]]; then
+ all=1
+ continue
+ fi
+
+ if ! read -r pkgbase > /dev/null 2>&1 < "${line%/vmlinuz}/pkgbase"; then
+ continue
+ fi
+
+ install -Dm644 "${line}" "/boot/vmlinuz-${pkgbase}"
+ kernels+=("${pkgbase}")
+done
+
+if (( all )); then
+ kernels=()
+ for file in /lib/modules/*/pkgbase; do
+ if read -r pkgbase > /dev/null 2>&1 < "$file"; then
+ kernels+=("${pkgbase}")
+ fi
+ done
+fi
+
+for kernel in "${kernels[@]}"; do
+ pkgbase="$(grep -lE "^${kernel}\$" /lib/modules/*/pkgbase)"
+ modules=$(basename "${pkgbase%/pkgbase}")
+
+ echo "Building dracut for $kernel - $modules"
+
+ dracut -f -H --no-hostonly-cmdline "/boot/initramfs-${kernel}.img" "${modules}"
+ dracut -f -N "/boot/initramfs-${kernel}-fallback.img" "${modules}"
+done