Skip to content

Commit 8a9c2f6

Browse files
committed
feat(dracut.sh): support mutliple config files
Add provision to specify multiple config files. Signed-off-by: Shreenidhi Shedi <[email protected]>
1 parent 6379606 commit 8a9c2f6

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

dracut.sh

+23-15
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ Creates initial ramdisk images for preloading modules
152152
6 - trace info (and even more)
153153
-v, --verbose Increase verbosity level.
154154
-q, --quiet Decrease verbosity level.
155-
-c, --conf [FILE] Specify configuration file to use.
156-
Default: /etc/dracut.conf
155+
-c, --conf [LIST] Specify a space separated list of configuration files
156+
to use. Default: /etc/dracut.conf
157157
--confdir [LIST] Specify a space separated list of configuration
158158
directories to use *.conf files from.
159159
Default: /etc/dracut.conf.d
@@ -664,7 +664,7 @@ while :; do
664664
shift
665665
;;
666666
-c | --conf)
667-
conffile="$2"
667+
conffiles_l="$2"
668668
PARMS_TO_STORE+=" '$2'"
669669
shift
670670
;;
@@ -901,15 +901,21 @@ export DRACUT_LOG_LEVEL=warning
901901
[[ $dracutbasedir ]] || dracutbasedir="$dracutsysrootdir"/usr/lib/dracut
902902

903903
# if we were not passed a config file, try the default one
904-
if [[ -z $conffile ]]; then
904+
if [ ${#conffiles_l[@]} -eq 0 ]; then
905905
if [[ $allowlocal ]]; then
906-
conffile="$dracutbasedir/dracut.conf"
906+
conffiles="$dracutbasedir/dracut.conf"
907907
else
908-
conffile="$dracutsysrootdir/etc/dracut.conf"
908+
conffiles="$dracutsysrootdir/etc/dracut.conf"
909909
fi
910-
elif [[ ! -e $conffile ]]; then
911-
printf "%s\n" "dracut: Configuration file '$conffile' not found." >&2
912-
exit 1
910+
else
911+
# shellcheck disable=SC2068
912+
for f in ${conffiles_l[@]}; do
913+
if [[ ! -e $f ]]; then
914+
printf "%s\n" "dracut: Configuration file '$f' not found." >&2
915+
exit 1
916+
fi
917+
conffiles+=" $f"
918+
done
913919
fi
914920

915921
if [ ${#confdirs_l[@]} -eq 0 ]; then
@@ -929,12 +935,14 @@ else
929935
done
930936
fi
931937

932-
# source our config file
933-
if [[ -f $conffile ]]; then
934-
check_conf_file "$conffile"
935-
# shellcheck disable=SC1090
936-
. "$conffile"
937-
fi
938+
# source all config files
939+
for f in $conffiles; do
940+
if [[ -f $f ]]; then
941+
check_conf_file "$f"
942+
# shellcheck disable=SC1090
943+
. "$f"
944+
fi
945+
done
938946

939947
# source config files from all config dirs
940948
# shellcheck disable=SC2086

man/dracut.8.asc

+2-2
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,8 @@ example:
299299
**-q, --quiet**::
300300
Decrease verbosity level (default is info(4)).
301301
302-
**-c, --conf** _<dracut configuration file>_::
303-
Specify configuration file to use.
302+
**-c, --conf** _<list of dracut configuration files>_::
303+
Specify a space-separated list of configuration files to use.
304304
+
305305
Default:
306306
_/etc/dracut.conf_

0 commit comments

Comments
 (0)