Initial commit
This commit is contained in:
Executable
+88
@@ -0,0 +1,88 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
MKINITRAMFS=${MKINITRAMFS:-mkinitramfs}
|
||||
DEPMOD=${DEPMOD:-depmod}
|
||||
BOOT_DIR=${BOOT_DIR:-/boot}
|
||||
|
||||
if ! command -v "$MKINITRAMFS" >/dev/null 2>&1; then
|
||||
echo "error: $MKINITRAMFS not found in PATH" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v "$DEPMOD" >/dev/null 2>&1; then
|
||||
echo "error: $DEPMOD not found in PATH" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$BOOT_DIR" ]; then
|
||||
echo "error: boot directory not found: $BOOT_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
versions=""
|
||||
|
||||
add_version() {
|
||||
v=$1
|
||||
case "
|
||||
$versions
|
||||
" in
|
||||
*"
|
||||
$v
|
||||
"*) ;;
|
||||
*)
|
||||
if [ -z "$versions" ]; then
|
||||
versions=$v
|
||||
else
|
||||
versions=$versions"
|
||||
"$v
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
for moddir in /lib/modules/*/; do
|
||||
[ -d "$moddir" ] || continue
|
||||
kver=${moddir%/}
|
||||
kver=${kver##*/}
|
||||
[ -n "$kver" ] || continue
|
||||
|
||||
vmlinuz_link="$moddir/vmlinuz"
|
||||
[ -e "$vmlinuz_link" ] || continue
|
||||
|
||||
kernel_image=$(readlink -f "$vmlinuz_link" 2>/dev/null) || continue
|
||||
[ -f "$kernel_image" ] || continue
|
||||
|
||||
add_version "$kver"
|
||||
done
|
||||
|
||||
if [ -z "$versions" ]; then
|
||||
echo "no versioned kernels found via /lib/modules/*/vmlinuz" >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
(
|
||||
cd "$BOOT_DIR" || exit 1
|
||||
printf '%s\n' "$versions" | while IFS= read -r kver; do
|
||||
[ -n "$kver" ] || continue
|
||||
|
||||
vmlinuz_link="/lib/modules/$kver/vmlinuz"
|
||||
kernel_image=$(readlink -f "$vmlinuz_link" 2>/dev/null) || {
|
||||
echo "skipping $kver: cannot resolve /lib/modules/$kver/vmlinuz" >&2
|
||||
continue
|
||||
}
|
||||
[ -f "$kernel_image" ] || {
|
||||
echo "skipping $kver: kernel image not found at $kernel_image" >&2
|
||||
continue
|
||||
}
|
||||
|
||||
echo "running depmod for $kver" >&2
|
||||
"$DEPMOD" -a "$kver" || {
|
||||
echo "error: depmod failed for $kver, skipping initramfs" >&2
|
||||
continue
|
||||
}
|
||||
|
||||
echo "updating initramfs for $kver (kernel: $kernel_image)" >&2
|
||||
"$MKINITRAMFS" "$kver"
|
||||
done
|
||||
)
|
||||
Reference in New Issue
Block a user