35 lines
854 B
Plaintext
35 lines
854 B
Plaintext
|
#!/bin/bash -e
|
||
|
|
||
|
kernels=()
|
||
|
dracut_update=0
|
||
|
|
||
|
while read -r line; do
|
||
|
if [[ $line != 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
|
||
|
dracut_update=1 # Dracut files have been updated
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
read -r pkgbase < "/${line}"
|
||
|
kernels+=("${pkgbase}")
|
||
|
done
|
||
|
|
||
|
if (( dracut_update )); then
|
||
|
kernels=()
|
||
|
for file in /lib/modules/*/pkgbase; do
|
||
|
if read -r pkgbase &> /dev/null < "$file"; then
|
||
|
kernels+=("${pkgbase}")
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
for kernel in "${kernels[@]}"; do
|
||
|
path="$(grep -lE "^${kernel}\$" /usr/lib/modules/*/pkgbase)"
|
||
|
version=$(basename "${path%/pkgbase}")
|
||
|
read -r pkgbase < "$path"
|
||
|
|
||
|
install -Dm0644 "/${path%'/pkgbase'}/vmlinuz" "/boot/vmlinuz-${pkgbase}"
|
||
|
|
||
|
echo ":: Building initramfs for $kernel-$version in host..."
|
||
|
chroot /var/host /bin/su -c "dracut -f \"/boot/initramfs-${kernel}.img\" --kver \"${version}\""
|
||
|
done
|