summarylogtreecommitdiffstats
path: root/dracut-install
diff options
context:
space:
mode:
authorFranklyn Tackitt2020-01-30 14:41:47 -0700
committerFranklyn Tackitt2020-01-30 14:41:47 -0700
commitc45e6f7b89dfae01b97f58b46bc3779ae3c89f4f (patch)
treeb5c603329ab54a9c58ff6270c3dcd19db7b97808 /dracut-install
downloadaur-c45e6f7b89dfae01b97f58b46bc3779ae3c89f4f.tar.gz
Initial universal dracut-hook script
Diffstat (limited to 'dracut-install')
-rwxr-xr-xdracut-install38
1 files changed, 38 insertions, 0 deletions
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