aboutsummaryrefslogtreecommitdiffstats
path: root/mkinitfs.in
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 /mkinitfs.in
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).
Diffstat (limited to 'mkinitfs.in')
-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