From cc7d2eeb36a0472ec76b44caa41ebd68fb40b11c Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 22 Jul 2014 14:09:06 +0200 Subject: [PATCH] add "--install-optional" and install_optional_items (cherry picked from commit 54b68829b60bc3f4c28cfca1ab0336584fe1e74c) --- dracut-bash-completion.sh | 4 ++-- dracut.8.asc | 3 +++ dracut.conf.5.asc | 4 ++++ dracut.conf.d/fedora.conf.example | 2 +- dracut.sh | 13 +++++++++++++ 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/dracut-bash-completion.sh b/dracut-bash-completion.sh index 9f359c6e..feced605 100644 --- a/dracut-bash-completion.sh +++ b/dracut-bash-completion.sh @@ -40,7 +40,7 @@ _dracut() { --omit-drivers --modules --omit --drivers --filesystems --install --fwdir --libdirs --fscks --add-fstab --mount --device --nofscks --kmoddir --conf --confdir --tmpdir --stdlog --compress --prefix - --kernel-cmdline --sshkey --persistent-policy' + --kernel-cmdline --sshkey --persistent-policy --install-optional' ) if __contains_word "$prev" ${OPTS[ARG]}; then @@ -49,7 +49,7 @@ _dracut() { comps=$(compgen -d -- "$cur") compopt -o filenames ;; - -c|--conf|--sshkey|--add-fstab|--add-device|-I|--install) + -c|--conf|--sshkey|--add-fstab|--add-device|-I|--install|--install-optional) comps=$(compgen -f -- "$cur") compopt -o filenames ;; diff --git a/dracut.8.asc b/dracut.8.asc index 5f68d16a..8fd863b9 100644 --- a/dracut.8.asc +++ b/dracut.8.asc @@ -355,6 +355,9 @@ example: ---- =============================== +**--install-optional** __:: + install the space separated list of files into the initramfs, if they exist. + **--gzip**:: Compress the generated initramfs using gzip. This will be done by default, unless another compression option or --no-compress is passed. Equivalent to diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc index 99f70fff..c20a341d 100644 --- a/dracut.conf.5.asc +++ b/dracut.conf.5.asc @@ -66,6 +66,10 @@ Configuration files must have the extension .conf; other extensions are ignored. *install_items+=*" ____[ ____ ...] ":: Specify additional files to include in the initramfs, separated by spaces. +*install_optional_items+=*" ____[ ____ ...] ":: + Specify additional files to include in the initramfs, separated by spaces, + if they exist. + *do_strip=*"__{yes|no}__":: Strip binaries in the initramfs (default=yes) diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example index ff4e3b27..d69c943b 100644 --- a/dracut.conf.d/fedora.conf.example +++ b/dracut.conf.d/fedora.conf.example @@ -6,7 +6,7 @@ i18n_default_font="latarcyrheb-sun16" i18n_install_all="yes" stdloglvl=3 sysloglvl=5 -install_items+=" vi /etc/virc ps grep cat rm " +install_optional_items+=" vi /etc/virc ps grep cat rm " prefix="/" systemdutildir=/usr/lib/systemd systemdsystemunitdir=/usr/lib/systemd/system diff --git a/dracut.sh b/dracut.sh index 78976792..fefdefd5 100755 --- a/dracut.sh +++ b/dracut.sh @@ -158,6 +158,8 @@ Creates initial ramdisk images for preloading modules in the final initramfs. -I, --install [LIST] Install the space separated list of files into the initramfs. + --install-optional [LIST] Install the space separated list of files into the + initramfs, if they exist. --gzip Compress the generated initramfs using gzip. This will be done by default, unless another compression option or --no-compress is passed. @@ -305,6 +307,7 @@ rearrange_params() --long drivers: \ --long filesystems: \ --long install: \ + --long install-optional: \ --long fwdir: \ --long libdirs: \ --long fscks: \ @@ -471,6 +474,9 @@ while :; do -d|--drivers) push drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;; --filesystems) push filesystems_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;; -I|--install) push install_items_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;; + --install-optional) + push install_optional_items_l \ + "$2"; PARMS_TO_STORE+=" '$2'"; shift;; --fwdir) push fw_dir_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;; --libdirs) push libdirs_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;; --fscks) push fscks_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;; @@ -722,6 +728,12 @@ if (( ${#install_items_l[@]} )); then done fi +if (( ${#install_optional_items_l[@]} )); then + while pop install_optional_items_l val; do + install_optional_items+=" $val " + done +fi + # these options override the stuff in the config file if (( ${#dracutmodules_l[@]} )); then dracutmodules='' @@ -1361,6 +1373,7 @@ fi if [[ $kernel_only != yes ]]; then (( ${#install_items[@]} > 0 )) && inst_multiple ${install_items[@]} + (( ${#install_optional_items[@]} > 0 )) && inst_multiple -o ${install_optional_items[@]} [[ $kernel_cmdline ]] && printf "%s\n" "$kernel_cmdline" >> "${initdir}/etc/cmdline.d/01-default.conf"