diff --git a/pkg.info b/pkg.info index 0b54e23..5cd2cc9 100644 --- a/pkg.info +++ b/pkg.info @@ -1,7 +1,7 @@ name: dracut description: Event driven initramfs infrastructure version: "109" -revision: 1 +revision: 2 url: https://github.com/dracut-ng/dracut-ng license: GPL2-or-later architecture: any diff --git a/source-files/cleanup-initramfs b/source-files/cleanup-initramfs index 94f2c83..00d6699 100644 --- a/source-files/cleanup-initramfs +++ b/source-files/cleanup-initramfs @@ -1,11 +1,14 @@ #!/bin/sh for file in $(find /boot/ -name 'initramfs-*'); do - kver=$(echo "$file" | sed 's/.img//' | cut -d'-' -f'2-') + name=$(echo "$file" | sed 's/.img//' | cut -d'-' -f2-) - # Continue if kernel version is installed - [ -d /usr/lib/modules/"$kver" ] && continue + # Continue if initramfs image name is an installed package + bpm q "$name" &> /dev/null && continue + + # Continue if initramfs image name is an installed kernel version + [ -d /usr/lib/modules/"$name" ] && continue - echo "Removed $file" rm $file + echo "Removed $file" done diff --git a/source-files/generate-initramfs b/source-files/generate-initramfs index 7ed15ab..e050f97 100644 --- a/source-files/generate-initramfs +++ b/source-files/generate-initramfs @@ -1,6 +1,16 @@ #!/bin/sh -for kernel in /usr/lib/modules/*; do - kernel=$(basename "$kernel") - dracut -f --kver "$kernel" "$@" +for modules in /usr/lib/modules/*; do + # Get kernel version from module path + kver=$(basename "$modules") + + # Set output initramfs image name + if bpm o "$modules" &> /dev/null; then + pkgname=$(bpm o "$modules" | grep '^- ' | cut -d' ' -f2 | head -n1) + initramfs=/boot/initramfs-"$pkgname".img + else + initramfs=/boot/initramfs-"$kver".img + fi + + dracut "$initramfs" -v -f --kver "$kver" "$@" done