From cf9be93525fb393b0db85a341dfca6fafdd9fab7 Mon Sep 17 00:00:00 2001 From: Thomas Bächler Date: Wed, 27 Nov 2013 19:30:04 +0100 Subject: mkinitcpio: Allow building an image without modules The '-k none' switch prevents mkinitcpio from adding modules to the image and keeps it from bailing out when it cannot find any. --- functions | 6 +++++- install/autodetect | 2 ++ man/mkinitcpio.8.txt | 3 ++- mkinitcpio | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/functions b/functions index 9a29a17..2b89c88 100644 --- a/functions +++ b/functions @@ -351,6 +351,8 @@ add_module() { local module= path= deps= field= value= firmware=() local ign_errors=0 + [[ $KERNELVERSION == none ]] && return 0 + if [[ $1 = *\? ]]; then ign_errors=1 set -- "${1%?}" @@ -661,7 +663,7 @@ initialize_buildroot() { printf '%s' "$version" >"$buildroot/VERSION" # kernel module dir - install -dm755 "$buildroot/usr/lib/modules/$kernver/kernel" + [[ $kernver != none ]] && install -dm755 "$buildroot/usr/lib/modules/$kernver/kernel" # mount tables ln -s /proc/self/mounts "$buildroot/etc/mtab" @@ -738,6 +740,8 @@ install_modules() { local m moduledest=$BUILDROOT/lib/modules/$KERNELVERSION local -a xz_comp gz_comp + [[ $KERNELVERSION == none ]] && return 0 + if (( $# == 0 )); then warning "No modules were added to the image. This is probably not what you want." return 0 diff --git a/install/autodetect b/install/autodetect index 37af3be..c98db73 100644 --- a/install/autodetect +++ b/install/autodetect @@ -4,6 +4,8 @@ build() { local m= local -a md_devs mods + [[ $KERNELVERSION == none ]] && return 0 + add_if_avail() { local r= resolved=() diff --git a/man/mkinitcpio.8.txt b/man/mkinitcpio.8.txt index 5edf66c..3b28ee7 100644 --- a/man/mkinitcpio.8.txt +++ b/man/mkinitcpio.8.txt @@ -49,7 +49,8 @@ Options *-k, \--kernel* 'kernelversion':: Use 'kernelversion', instead of the current running kernel. This may be a - path to a kernel image or a specific kernel version. + path to a kernel image, a specific kernel version or the special keyword + 'none'. In the latter case, no kernel modules are added to the image. *-L, \--listhooks*:: List all available hooks. diff --git a/mkinitcpio b/mkinitcpio index e927884..2ec44ed 100755 --- a/mkinitcpio +++ b/mkinitcpio @@ -417,7 +417,7 @@ fi KERNELVERSION=$(resolve_kernver "$_optkver") || cleanup 1 _d_kmoduledir=$_optmoduleroot/lib/modules/$KERNELVERSION -[[ -d $_d_kmoduledir ]] || die "'$_d_kmoduledir' is not a valid kernel module directory" +[[ $KERNELVERSION == none || -d $_d_kmoduledir ]] || die "'$_d_kmoduledir' is not a valid kernel module directory" _d_workdir=$(initialize_buildroot "$KERNELVERSION" $_opttargetdir) || cleanup 1 BUILDROOT=${_opttargetdir:-$_d_workdir/root} -- cgit v1.2.3-24-g4f1b