diff options
author | Franklyn Tackitt | 2020-01-30 14:41:47 -0700 |
---|---|---|
committer | Franklyn Tackitt | 2020-01-30 14:41:47 -0700 |
commit | c45e6f7b89dfae01b97f58b46bc3779ae3c89f4f (patch) | |
tree | b5c603329ab54a9c58ff6270c3dcd19db7b97808 | |
download | aur-c45e6f7b89dfae01b97f58b46bc3779ae3c89f4f.tar.gz |
Initial universal dracut-hook script
-rw-r--r-- | .SRCINFO | 15 | ||||
-rw-r--r-- | .gitignore | 7 | ||||
-rw-r--r-- | 90-dracut-install.hook | 12 | ||||
-rw-r--r-- | PKGBUILD | 22 | ||||
-rwxr-xr-x | dracut-install | 38 |
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 |