aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShiz <hi@shiz.me>2016-11-17 02:52:50 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2016-11-28 17:23:23 -0200
commit267f158c87b7c8dc16bcb26e85378764ec2a826e (patch)
treeaabbc1ecbeef3b8a572ebf1d2eb1908c20edba22
parenta628a8f922a18a2256532b4f99183bb7e9a1fd68 (diff)
downloadmkinitfs-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).
-rwxr-xr-xmkinitfs.in24
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