diff options
author | Shiz <hi@shiz.me> | 2016-11-17 02:52:50 +0100 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2016-11-28 17:23:23 -0200 |
commit | 267f158c87b7c8dc16bcb26e85378764ec2a826e (patch) | |
tree | aabbc1ecbeef3b8a572ebf1d2eb1908c20edba22 /mkinitfs.in | |
parent | a628a8f922a18a2256532b4f99183bb7e9a1fd68 (diff) | |
download | mkinitfs-267f158c87b7c8dc16bcb26e85378764ec2a826e.tar.bz2 mkinitfs-267f158c87b7c8dc16bcb26e85378764ec2a826e.tar.xz |
mkinitfs: add option to avoid including kernel-specific files
This allows one to make a generic initramfs that doesn't require a running
kernel identical to the one used for booting, if said kernel already includes
everything it needs to function (such as compiling everything in instead of
using kernel modules).
Diffstat (limited to 'mkinitfs.in')
-rwxr-xr-x | mkinitfs.in | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/mkinitfs.in b/mkinitfs.in index d69ccc5..a860cbc 100755 --- a/mkinitfs.in +++ b/mkinitfs.in @@ -102,6 +102,7 @@ find_kmods() { } initfs_kmods() { + [ -z "$nokernel" ] || return local glob= file= files= dirs= rm -rf "$tmpdir"/lib/modules # make sure we have modules.dep @@ -123,6 +124,7 @@ initfs_kmods() { } initfs_firmware() { + [ -z "$nokernel" ] || return rm -rf "$tmpdir"/lib/firmware mkdir -p "$tmpdir"/lib/firmware find "$tmpdir"/lib/modules -type f -name "*.ko" | xargs modinfo -F firmware | sort -u | while read FW; do @@ -149,7 +151,7 @@ initfs_cpio() { usage() { cat <<EOF -usage: mkinitfs [-hkKLl] [-b basedir] [-c configfile] [-F features] [-f fstab] +usage: mkinitfs [-hkKLln] [-b basedir] [-c configfile] [-F features] [-f fstab] [-i initfile ] [-o outfile] [-t tempdir] [kernelversion]" options: -b prefix files and kernel modules with basedir @@ -162,6 +164,7 @@ options: -K copy also host keys to initramfs -l only list files that would have been used -L list available features + -n don't include kernel modules or firmware -o set another outfile -q Quiet mode -t use tempdir when creating initramfs image @@ -173,7 +176,7 @@ EOF # main -while getopts "b:c:f:F:hi:kKLlo:qt:" opt; do +while getopts "b:c:f:F:hi:kKLlno:qt:" opt; do case "$opt" in b) basedir="$OPTARG";; c) config="$OPTARG";; @@ -185,6 +188,7 @@ while getopts "b:c:f:F:hi:kKLlo:qt:" opt; do K) hostkeys=1;; L) list_features=1;; l) list_sources=1;; + n) nokernel=1;; o) outfile="$OPTARG";; q) quiet=1;; t) tmpdir="$OPTARG";; @@ -210,18 +214,22 @@ basedir="${basedir%/}/" [ "${basedir}" = "${basedir#/}" ] && basedir="${PWD}/${basedir}" -[ -n "$1" ] && kernel="$1" -[ -z "$kernel" ] && kernel=$(uname -r) -kerneldir="${basedir}lib/modules/$kernel" +if [ -z "$nokernel" ]; then + [ -n "$1" ] && kernel="$1" + [ -z "$kernel" ] && kernel=$(uname -r) + kerneldir="${basedir}lib/modules/$kernel" -kflavor=${kernel##*-} -[ "$kflavor" = "$kernel" ] && kflavor=vanilla + kflavor=${kernel##*-} + [ "$kflavor" = "$kernel" ] && kflavor=vanilla +else + kflavor=generic +fi if [ -z "$outfile" ]; then outfile="${basedir}boot/initramfs-${kflavor}" fi -if [ ! -d "$kerneldir" ]; then +if [ -z "$nokernel"] && [ ! -d "$kerneldir" ]; then echo "$kerneldir does not exist or is not a directory" exit 1 fi |