newer-initramfs/mkmod.sh

43 lines
915 B
Bash
Raw Permalink Normal View History

2022-04-02 13:06:10 +00:00
#!/bin/sh
set -e
if [ $# -lt 1 ]; then
echo "usage: $0 <dest.img> [version]"
exit 1
fi
dest="$1"
version="${2:-$(uname -r)}"
basedir="/lib/modules/$version"
stagedir=$(mktemp -d)
trap "rm -rf '$stagedir'" EXIT
# Copy modules
mkdir -p "$stagedir/etc"
mkdir -p "$stagedir/$basedir"
cp "$basedir"/modules.* "$stagedir/$basedir"
grep -v '^#' /etc/modules | while read module; do
modprobe -S "$version" -D "$module" | while read -r action file; do
mkdir -p "$stagedir/$(dirname "$file")"
cp "$file" "$stagedir/$file"
done
echo "$module" >> "$stagedir"/etc/modules
done
# Copy loader
mkdir -p "$stagedir"/hooks/early
cat <<'EOF' > "$stagedir"/hooks/early/modules
#!/bin/sh
if [ -f /etc/modules ]; then
while read module; do
modprobe "$module"
done < /etc/modules
fi
EOF
chmod +x "$stagedir"/hooks/early/modules
# Make initramfs
(cd "$stagedir" && find . | cpio --quiet -H newc -o | gzip -9) > "$dest"