|
|
a56a5e |
From f2c5c5c961a91765640f381ec37af085dc91312b Mon Sep 17 00:00:00 2001
|
|
|
a56a5e |
From: Hari Bathini <hbathini@linux.vnet.ibm.com>
|
|
|
a56a5e |
Date: Thu, 16 Jan 2014 12:11:27 +0530
|
|
|
a56a5e |
Subject: [PATCH] Dracut: Add a new argument "--rebuild"
|
|
|
a56a5e |
|
|
|
a56a5e |
Add "rebuild" option to dracut to append the current arguments
|
|
|
a56a5e |
to those with which the input initramfs image was built. This
|
|
|
a56a5e |
option helps in incrementally building initramfs for testing.
|
|
|
a56a5e |
|
|
|
a56a5e |
Usage: dracut [output_file] --rebuild input_file
|
|
|
a56a5e |
|
|
|
a56a5e |
If optional output file is not provided, input file provided to
|
|
|
a56a5e |
rebuild will be used as output file.
|
|
|
a56a5e |
|
|
|
a56a5e |
This patch alters the creation of the initramfs image by adding
|
|
|
a56a5e |
the file "/tmp/params.txt" to the image. Command line parameters
|
|
|
a56a5e |
excluding "--rebuild", input & output image names and "kernel
|
|
|
a56a5e |
version" are stored in this file. In case "--rebuild" parameter
|
|
|
a56a5e |
is specified, "/tmp/params.txt" file, if present in input image,
|
|
|
a56a5e |
is read and its contents "prepend"ed to the current command line
|
|
|
a56a5e |
parameters, that is if such a file is already present. Also, it
|
|
|
a56a5e |
stores the cumulative parameters to the file "/tmp/params.txt",
|
|
|
a56a5e |
in the new image. This patch has been tested successfully on a
|
|
|
a56a5e |
PowerBox with f19. It does not alter the behaviour of any of the
|
|
|
a56a5e |
existing options.
|
|
|
a56a5e |
|
|
|
a56a5e |
Signed-off-by: Manik Bajpai <manibajp@linux.vnet.ibm.com>
|
|
|
a56a5e |
Signed-off-by: Hari Bathini <hbathini@linux.vnet.ibm.com>
|
|
|
a56a5e |
|
|
|
a56a5e |
[Edited-by: Harald Hoyer]
|
|
|
a56a5e |
Simplified the cpio extraction process by using 'lsinitrd'.
|
|
|
a56a5e |
|
|
|
a56a5e |
(cherry picked from commit 659dc319d950999f8d191a81fdc4d3114e9213de)
|
|
|
a56a5e |
---
|
|
|
a56a5e |
dracut.sh | 342 ++++++++++++++++++++++++++++++++++++++------------------------
|
|
|
a56a5e |
1 file changed, 210 insertions(+), 132 deletions(-)
|
|
|
a56a5e |
|
|
|
a56a5e |
diff --git a/dracut.sh b/dracut.sh
|
|
|
a56a5e |
index 8e5e86f..eff096e 100755
|
|
|
a56a5e |
--- a/dracut.sh
|
|
|
a56a5e |
+++ b/dracut.sh
|
|
|
a56a5e |
@@ -70,6 +70,7 @@ Creates initial ramdisk images for preloading modules
|
|
|
a56a5e |
--kver [VERSION] Set kernel version to [VERSION].
|
|
|
a56a5e |
-f, --force Overwrite existing initramfs file.
|
|
|
a56a5e |
-a, --add [LIST] Add a space-separated list of dracut modules.
|
|
|
a56a5e |
+ --rebuild Append arguments to those of existing image and rebuild
|
|
|
a56a5e |
-m, --modules [LIST] Specify a space-separated list of dracut modules to
|
|
|
a56a5e |
call when building the initramfs. Modules are located
|
|
|
a56a5e |
in /usr/lib/dracut/modules.d.
|
|
|
a56a5e |
@@ -283,132 +284,213 @@ dropindirs_sort()
|
|
|
a56a5e |
}
|
|
|
a56a5e |
}
|
|
|
a56a5e |
|
|
|
a56a5e |
+rearrange_params()
|
|
|
a56a5e |
+{
|
|
|
a56a5e |
+ # Workaround -i, --include taking 2 arguments
|
|
|
a56a5e |
+ set -- "${@/--include/++include}"
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+ # This prevents any long argument ending with "-i"
|
|
|
a56a5e |
+ # -i, like --opt-i but I think we can just prevent that
|
|
|
a56a5e |
+ set -- "${@/%-i/++include}"
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+ TEMP=$(unset POSIXLY_CORRECT; getopt \
|
|
|
a56a5e |
+ -o "a:m:o:d:I:k:c:L:fvqlHhMN" \
|
|
|
a56a5e |
+ --long kver: \
|
|
|
a56a5e |
+ --long add: \
|
|
|
a56a5e |
+ --long force-add: \
|
|
|
a56a5e |
+ --long add-drivers: \
|
|
|
a56a5e |
+ --long omit-drivers: \
|
|
|
a56a5e |
+ --long modules: \
|
|
|
a56a5e |
+ --long omit: \
|
|
|
a56a5e |
+ --long drivers: \
|
|
|
a56a5e |
+ --long filesystems: \
|
|
|
a56a5e |
+ --long install: \
|
|
|
a56a5e |
+ --long fwdir: \
|
|
|
a56a5e |
+ --long libdirs: \
|
|
|
a56a5e |
+ --long fscks: \
|
|
|
a56a5e |
+ --long add-fstab: \
|
|
|
a56a5e |
+ --long mount: \
|
|
|
a56a5e |
+ --long device: \
|
|
|
a56a5e |
+ --long add-device: \
|
|
|
a56a5e |
+ --long nofscks: \
|
|
|
a56a5e |
+ --long ro-mnt \
|
|
|
a56a5e |
+ --long kmoddir: \
|
|
|
a56a5e |
+ --long conf: \
|
|
|
a56a5e |
+ --long confdir: \
|
|
|
a56a5e |
+ --long tmpdir: \
|
|
|
a56a5e |
+ --long stdlog: \
|
|
|
a56a5e |
+ --long compress: \
|
|
|
a56a5e |
+ --long prefix: \
|
|
|
a56a5e |
+ --long rebuild: \
|
|
|
a56a5e |
+ --long force \
|
|
|
a56a5e |
+ --long kernel-only \
|
|
|
a56a5e |
+ --long no-kernel \
|
|
|
a56a5e |
+ --long print-cmdline \
|
|
|
a56a5e |
+ --long kernel-cmdline: \
|
|
|
a56a5e |
+ --long strip \
|
|
|
a56a5e |
+ --long nostrip \
|
|
|
a56a5e |
+ --long prelink \
|
|
|
a56a5e |
+ --long noprelink \
|
|
|
a56a5e |
+ --long hardlink \
|
|
|
a56a5e |
+ --long nohardlink \
|
|
|
a56a5e |
+ --long noprefix \
|
|
|
a56a5e |
+ --long mdadmconf \
|
|
|
a56a5e |
+ --long nomdadmconf \
|
|
|
a56a5e |
+ --long lvmconf \
|
|
|
a56a5e |
+ --long nolvmconf \
|
|
|
a56a5e |
+ --long debug \
|
|
|
a56a5e |
+ --long profile \
|
|
|
a56a5e |
+ --long sshkey: \
|
|
|
a56a5e |
+ --long logfile: \
|
|
|
a56a5e |
+ --long verbose \
|
|
|
a56a5e |
+ --long quiet \
|
|
|
a56a5e |
+ --long local \
|
|
|
a56a5e |
+ --long hostonly \
|
|
|
a56a5e |
+ --long host-only \
|
|
|
a56a5e |
+ --long no-hostonly \
|
|
|
a56a5e |
+ --long no-host-only \
|
|
|
a56a5e |
+ --long hostonly-cmdline \
|
|
|
a56a5e |
+ --long no-hostonly-cmdline \
|
|
|
a56a5e |
+ --long persistent-policy: \
|
|
|
a56a5e |
+ --long fstab \
|
|
|
a56a5e |
+ --long help \
|
|
|
a56a5e |
+ --long bzip2 \
|
|
|
a56a5e |
+ --long lzma \
|
|
|
a56a5e |
+ --long xz \
|
|
|
a56a5e |
+ --long lzo \
|
|
|
a56a5e |
+ --long lz4 \
|
|
|
a56a5e |
+ --long no-compress \
|
|
|
a56a5e |
+ --long gzip \
|
|
|
a56a5e |
+ --long list-modules \
|
|
|
a56a5e |
+ --long show-modules \
|
|
|
a56a5e |
+ --long keep \
|
|
|
a56a5e |
+ --long printsize \
|
|
|
a56a5e |
+ --long regenerate-all \
|
|
|
a56a5e |
+ --long noimageifnotneeded \
|
|
|
a56a5e |
+ --long early-microcode \
|
|
|
a56a5e |
+ --long no-early-microcode \
|
|
|
a56a5e |
+ -- "$@")
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+ if (( $? != 0 )); then
|
|
|
a56a5e |
+ usage
|
|
|
a56a5e |
+ exit 1
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+}
|
|
|
a56a5e |
+
|
|
|
a56a5e |
verbosity_mod_l=0
|
|
|
a56a5e |
unset kernel
|
|
|
a56a5e |
unset outfile
|
|
|
a56a5e |
|
|
|
a56a5e |
-# Workaround -i, --include taking 2 arguments
|
|
|
a56a5e |
-set -- "${@/--include/++include}"
|
|
|
a56a5e |
-
|
|
|
a56a5e |
-# This prevents any long argument ending with "-i"
|
|
|
a56a5e |
-# -i, like --opt-i but I think we can just prevent that
|
|
|
a56a5e |
-set -- "${@/%-i/++include}"
|
|
|
a56a5e |
-
|
|
|
a56a5e |
-TEMP=$(unset POSIXLY_CORRECT; getopt \
|
|
|
a56a5e |
- -o "a:m:o:d:I:k:c:L:fvqlHhMN" \
|
|
|
a56a5e |
- --long kver: \
|
|
|
a56a5e |
- --long add: \
|
|
|
a56a5e |
- --long force-add: \
|
|
|
a56a5e |
- --long add-drivers: \
|
|
|
a56a5e |
- --long omit-drivers: \
|
|
|
a56a5e |
- --long modules: \
|
|
|
a56a5e |
- --long omit: \
|
|
|
a56a5e |
- --long drivers: \
|
|
|
a56a5e |
- --long filesystems: \
|
|
|
a56a5e |
- --long install: \
|
|
|
a56a5e |
- --long fwdir: \
|
|
|
a56a5e |
- --long libdirs: \
|
|
|
a56a5e |
- --long fscks: \
|
|
|
a56a5e |
- --long add-fstab: \
|
|
|
a56a5e |
- --long mount: \
|
|
|
a56a5e |
- --long device: \
|
|
|
a56a5e |
- --long add-device: \
|
|
|
a56a5e |
- --long nofscks: \
|
|
|
a56a5e |
- --long ro-mnt \
|
|
|
a56a5e |
- --long kmoddir: \
|
|
|
a56a5e |
- --long conf: \
|
|
|
a56a5e |
- --long confdir: \
|
|
|
a56a5e |
- --long tmpdir: \
|
|
|
a56a5e |
- --long stdlog: \
|
|
|
a56a5e |
- --long compress: \
|
|
|
a56a5e |
- --long prefix: \
|
|
|
a56a5e |
- --long force \
|
|
|
a56a5e |
- --long kernel-only \
|
|
|
a56a5e |
- --long no-kernel \
|
|
|
a56a5e |
- --long print-cmdline \
|
|
|
a56a5e |
- --long kernel-cmdline: \
|
|
|
a56a5e |
- --long strip \
|
|
|
a56a5e |
- --long nostrip \
|
|
|
a56a5e |
- --long prelink \
|
|
|
a56a5e |
- --long noprelink \
|
|
|
a56a5e |
- --long hardlink \
|
|
|
a56a5e |
- --long nohardlink \
|
|
|
a56a5e |
- --long noprefix \
|
|
|
a56a5e |
- --long mdadmconf \
|
|
|
a56a5e |
- --long nomdadmconf \
|
|
|
a56a5e |
- --long lvmconf \
|
|
|
a56a5e |
- --long nolvmconf \
|
|
|
a56a5e |
- --long debug \
|
|
|
a56a5e |
- --long profile \
|
|
|
a56a5e |
- --long sshkey: \
|
|
|
a56a5e |
- --long logfile: \
|
|
|
a56a5e |
- --long verbose \
|
|
|
a56a5e |
- --long quiet \
|
|
|
a56a5e |
- --long local \
|
|
|
a56a5e |
- --long hostonly \
|
|
|
a56a5e |
- --long host-only \
|
|
|
a56a5e |
- --long no-hostonly \
|
|
|
a56a5e |
- --long no-host-only \
|
|
|
a56a5e |
- --long hostonly-cmdline \
|
|
|
a56a5e |
- --long no-hostonly-cmdline \
|
|
|
a56a5e |
- --long persistent-policy: \
|
|
|
a56a5e |
- --long fstab \
|
|
|
a56a5e |
- --long help \
|
|
|
a56a5e |
- --long bzip2 \
|
|
|
a56a5e |
- --long lzma \
|
|
|
a56a5e |
- --long xz \
|
|
|
a56a5e |
- --long lzo \
|
|
|
a56a5e |
- --long lz4 \
|
|
|
a56a5e |
- --long no-compress \
|
|
|
a56a5e |
- --long gzip \
|
|
|
a56a5e |
- --long list-modules \
|
|
|
a56a5e |
- --long show-modules \
|
|
|
a56a5e |
- --long keep \
|
|
|
a56a5e |
- --long printsize \
|
|
|
a56a5e |
- --long regenerate-all \
|
|
|
a56a5e |
- --long noimageifnotneeded \
|
|
|
a56a5e |
- --long early-microcode \
|
|
|
a56a5e |
- --long no-early-microcode \
|
|
|
a56a5e |
- -- "$@")
|
|
|
a56a5e |
-
|
|
|
a56a5e |
-if (( $? != 0 )); then
|
|
|
a56a5e |
- usage
|
|
|
a56a5e |
- exit 1
|
|
|
a56a5e |
+rearrange_params "$@"
|
|
|
a56a5e |
+eval set -- "$TEMP"
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+# parse command line args to check if '--rebuild' option is present
|
|
|
a56a5e |
+unset append_args_l
|
|
|
a56a5e |
+unset rebuild_file
|
|
|
a56a5e |
+while :
|
|
|
a56a5e |
+do
|
|
|
a56a5e |
+ if [ "$1" == "--" ]; then
|
|
|
a56a5e |
+ shift; break
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+ if [ "$1" == "--rebuild" ]; then
|
|
|
a56a5e |
+ append_args_l="yes"
|
|
|
a56a5e |
+ rebuild_file=$2
|
|
|
a56a5e |
+ if [ ! -e $rebuild_file ]; then
|
|
|
a56a5e |
+ echo "Image file '$rebuild_file', for rebuild, does not exist!"
|
|
|
a56a5e |
+ exit 1
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+ abs_rebuild_file=$(readlink -f "$rebuild_file") && rebuild_file="$abs_rebuild_file"
|
|
|
a56a5e |
+ shift; continue
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+ shift
|
|
|
a56a5e |
+done
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+# get output file name and kernel version from command line arguments
|
|
|
a56a5e |
+while (($# > 0)); do
|
|
|
a56a5e |
+ case ${1%%=*} in
|
|
|
a56a5e |
+ ++include)
|
|
|
a56a5e |
+ shift 2;;
|
|
|
a56a5e |
+ *)
|
|
|
a56a5e |
+ if ! [[ ${outfile+x} ]]; then
|
|
|
a56a5e |
+ outfile=$1
|
|
|
a56a5e |
+ elif ! [[ ${kernel+x} ]]; then
|
|
|
a56a5e |
+ kernel=$1
|
|
|
a56a5e |
+ else
|
|
|
a56a5e |
+ printf "\nUnknown arguments: %s\n\n" "$*" >&2
|
|
|
a56a5e |
+ usage; exit 1;
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+ ;;
|
|
|
a56a5e |
+ esac
|
|
|
a56a5e |
+ shift
|
|
|
a56a5e |
+done
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+# extract input image file provided with rebuild option to get previous parameters, if any
|
|
|
a56a5e |
+if [[ $append_args_l == "yes" ]]; then
|
|
|
a56a5e |
+ unset rebuild_param
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+ # determine resultant file
|
|
|
a56a5e |
+ if ! [[ $outfile ]]; then
|
|
|
a56a5e |
+ outfile=$rebuild_file
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+ if ! rebuild_param=$(lsinitrd $rebuild_file '*lib/dracut/build-parameter.txt'); then
|
|
|
a56a5e |
+ echo "Image '$rebuild_file' has no rebuild information stored"
|
|
|
a56a5e |
+ exit 1
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+ # prepend previous parameters to current command line args
|
|
|
a56a5e |
+ if [[ $rebuild_param ]]; then
|
|
|
a56a5e |
+ TEMP="$rebuild_param $TEMP"
|
|
|
a56a5e |
+ eval set -- "$TEMP"
|
|
|
a56a5e |
+ rearrange_params "$@"
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+
|
|
|
a56a5e |
+ # clean the temporarily used scratch-pad directory
|
|
|
a56a5e |
+ rm -rf $scratch_dir
|
|
|
a56a5e |
fi
|
|
|
a56a5e |
|
|
|
a56a5e |
+unset PARMS_TO_STORE
|
|
|
a56a5e |
+PARMS_TO_STORE=""
|
|
|
a56a5e |
+
|
|
|
a56a5e |
eval set -- "$TEMP"
|
|
|
a56a5e |
|
|
|
a56a5e |
while :; do
|
|
|
a56a5e |
+ if [ $1 != "--" ] && [ $1 != "--rebuild" ]; then
|
|
|
a56a5e |
+ PARMS_TO_STORE+=" $1";
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
case $1 in
|
|
|
a56a5e |
- --kver) kernel="$2"; shift;;
|
|
|
a56a5e |
- -a|--add) push add_dracutmodules_l "$2"; shift;;
|
|
|
a56a5e |
- --force-add) push force_add_dracutmodules_l "$2"; shift;;
|
|
|
a56a5e |
- --add-drivers) push add_drivers_l "$2"; shift;;
|
|
|
a56a5e |
- --omit-drivers)
|
|
|
a56a5e |
- push omit_drivers_l "$2"; shift;;
|
|
|
a56a5e |
- -m|--modules) push dracutmodules_l "$2"; shift;;
|
|
|
a56a5e |
- -o|--omit) push omit_dracutmodules_l "$2"; shift;;
|
|
|
a56a5e |
- -d|--drivers) push drivers_l "$2"; shift;;
|
|
|
a56a5e |
- --filesystems) push filesystems_l "$2"; shift;;
|
|
|
a56a5e |
- -I|--install) push install_items_l "$2"; shift;;
|
|
|
a56a5e |
- --fwdir) push fw_dir_l "$2"; shift;;
|
|
|
a56a5e |
- --libdirs) push libdirs_l "$2"; shift;;
|
|
|
a56a5e |
- --fscks) push fscks_l "$2"; shift;;
|
|
|
a56a5e |
- --add-fstab) push add_fstab_l "$2"; shift;;
|
|
|
a56a5e |
- --mount) push fstab_lines "$2"; shift;;
|
|
|
a56a5e |
+ --kver) kernel="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ -a|--add) push add_dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --force-add) push force_add_dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --add-drivers) push add_drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --omit-drivers) push omit_drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ -m|--modules) push dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ -o|--omit) push omit_dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ -d|--drivers) push drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --filesystems) push filesystems_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ -I|--install) push install_items_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --fwdir) push fw_dir_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --libdirs) push libdirs_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --fscks) push fscks_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --add-fstab) push add_fstab_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --mount) push fstab_lines "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
--add-device|--device)
|
|
|
a56a5e |
- push add_device_l "$2"; shift;;
|
|
|
a56a5e |
- --kernel-cmdline)
|
|
|
a56a5e |
- push kernel_cmdline_l "$2"; shift;;
|
|
|
a56a5e |
+ push add_device_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --kernel-cmdline) push kernel_cmdline_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
--nofscks) nofscks_l="yes";;
|
|
|
a56a5e |
--ro-mnt) ro_mnt_l="yes";;
|
|
|
a56a5e |
- -k|--kmoddir) drivers_dir_l="$2"; shift;;
|
|
|
a56a5e |
- -c|--conf) conffile="$2"; shift;;
|
|
|
a56a5e |
- --confdir) confdir="$2"; shift;;
|
|
|
a56a5e |
- --tmpdir) tmpdir_l="$2"; shift;;
|
|
|
a56a5e |
- -L|--stdlog) stdloglvl_l="$2"; shift;;
|
|
|
a56a5e |
- --compress) compress_l="$2"; shift;;
|
|
|
a56a5e |
- --prefix) prefix_l="$2"; shift;;
|
|
|
a56a5e |
+ -k|--kmoddir) drivers_dir_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ -c|--conf) conffile="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --confdir) confdir="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --tmpdir) tmpdir_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ -L|--stdlog) stdloglvl_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --compress) compress_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --prefix) prefix_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
+ --rebuild) if [ $rebuild_file == $outfile ]; then
|
|
|
a56a5e |
+ force=yes
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
+ shift
|
|
|
a56a5e |
+ ;;
|
|
|
a56a5e |
-f|--force) force=yes;;
|
|
|
a56a5e |
--kernel-only) kernel_only="yes"; no_kernel="no";;
|
|
|
a56a5e |
--no-kernel) kernel_only="no"; no_kernel="yes";;
|
|
|
a56a5e |
@@ -431,7 +513,7 @@ while :; do
|
|
|
a56a5e |
--nolvmconf) lvmconf_l="no";;
|
|
|
a56a5e |
--debug) debug="yes";;
|
|
|
a56a5e |
--profile) profile="yes";;
|
|
|
a56a5e |
- --sshkey) sshkey="$2"; shift;;
|
|
|
a56a5e |
+ --sshkey) sshkey="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
--logfile) logfile_l="$2"; shift;;
|
|
|
a56a5e |
-v|--verbose) ((verbosity_mod_l++));;
|
|
|
a56a5e |
-q|--quiet) ((verbosity_mod_l--));;
|
|
|
a56a5e |
@@ -449,11 +531,10 @@ while :; do
|
|
|
a56a5e |
--no-hostonly-cmdline)
|
|
|
a56a5e |
hostonly_cmdline_l="no" ;;
|
|
|
a56a5e |
--persistent-policy)
|
|
|
a56a5e |
- persistent_policy_l="$2"; shift;;
|
|
|
a56a5e |
+ persistent_policy_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
|
|
|
a56a5e |
--fstab) use_fstab_l="yes" ;;
|
|
|
a56a5e |
-h|--help) long_usage; exit 1 ;;
|
|
|
a56a5e |
- -i|--include)
|
|
|
a56a5e |
- push include_src "$2"
|
|
|
a56a5e |
+ -i|--include) push include_src "$2"; PARMS_TO_STORE+=" '$2'";
|
|
|
a56a5e |
shift;;
|
|
|
a56a5e |
--bzip2) compress_l="bzip2";;
|
|
|
a56a5e |
--lzma) compress_l="lzma";;
|
|
|
a56a5e |
@@ -483,21 +564,12 @@ done
|
|
|
a56a5e |
# the old fashioned way
|
|
|
a56a5e |
|
|
|
a56a5e |
while (($# > 0)); do
|
|
|
a56a5e |
- case ${1%%=*} in
|
|
|
a56a5e |
- ++include) push include_src "$2"
|
|
|
a56a5e |
- push include_target "$3"
|
|
|
a56a5e |
- shift 2;;
|
|
|
a56a5e |
- *)
|
|
|
a56a5e |
- if ! [[ ${outfile+x} ]]; then
|
|
|
a56a5e |
- outfile=$1
|
|
|
a56a5e |
- elif ! [[ ${kernel+x} ]]; then
|
|
|
a56a5e |
- kernel=$1
|
|
|
a56a5e |
- else
|
|
|
a56a5e |
- printf "\nUnknown arguments: %s\n\n" "$*" >&2
|
|
|
a56a5e |
- usage; exit 1;
|
|
|
a56a5e |
- fi
|
|
|
a56a5e |
- ;;
|
|
|
a56a5e |
- esac
|
|
|
a56a5e |
+ if [ ${1%%=*} == "++include" ]; then
|
|
|
a56a5e |
+ push include_src "$2"
|
|
|
a56a5e |
+ push include_target "$3"
|
|
|
a56a5e |
+ PARMS_TO_STORE+=" --include '$2' '$3'"
|
|
|
a56a5e |
+ shift 2
|
|
|
a56a5e |
+ fi
|
|
|
a56a5e |
shift
|
|
|
a56a5e |
done
|
|
|
a56a5e |
|
|
|
a56a5e |
@@ -1405,6 +1477,12 @@ if [[ $acpi_override = yes ]] && [[ -d $acpi_table_dir ]]; then
|
|
|
a56a5e |
done
|
|
|
a56a5e |
fi
|
|
|
a56a5e |
|
|
|
a56a5e |
+dinfo "*** Store current command line parameters ***"
|
|
|
a56a5e |
+if ! ( echo $PARMS_TO_STORE > $initdir/lib/dracut/build-parameter.txt ); then
|
|
|
a56a5e |
+ dfatal "Could not store the current command line parameters"
|
|
|
a56a5e |
+ exit 1
|
|
|
a56a5e |
+fi
|
|
|
a56a5e |
+
|
|
|
a56a5e |
rm -f -- "$outfile"
|
|
|
a56a5e |
dinfo "*** Creating image file ***"
|
|
|
a56a5e |
|