@@ -273,6 +273,9 @@ Creates initial ramdisk images for preloading modules
273
273
--kernel-image [FILE] Location of the kernel image.
274
274
--regenerate-all Regenerate all initramfs images at the default location
275
275
for the kernel versions found on the system.
276
+ -p, --parallel Use parallel processing if possible (currently only
277
+ supported --regenerate-all)
278
+ images simultaneously.
276
279
--version Display version.
277
280
278
281
If [LIST] has multiple arguments, then you have to put these in quotes.
@@ -368,7 +371,7 @@ rearrange_params() {
368
371
TEMP=$(
369
372
unset POSIXLY_CORRECT
370
373
getopt \
371
- -o " a:m:o:d:I:k:c:r:L:fvqlHhMN " \
374
+ -o " a:m:o:d:I:k:c:r:L:fvqlHhMNp " \
372
375
--long kver: \
373
376
--long add: \
374
377
--long force-add: \
@@ -447,6 +450,7 @@ rearrange_params() {
447
450
--long keep \
448
451
--long printsize \
449
452
--long regenerate-all \
453
+ --long parallel \
450
454
--long noimageifnotneeded \
451
455
--long early-microcode \
452
456
--long no-early-microcode \
@@ -813,7 +817,8 @@ while :; do
813
817
;;
814
818
--keep) keep=" yes" ;;
815
819
--printsize) printsize=" yes" ;;
816
- --regenerate-all) regenerate_all=" yes" ;;
820
+ --regenerate-all) regenerate_all_l=" yes" ;;
821
+ -p | --parallel) parallel_l=" yes" ;;
817
822
--noimageifnotneeded) noimageifnotneeded=" yes" ;;
818
823
--reproducible) reproducible_l=" yes" ;;
819
824
--no-reproducible) reproducible_l=" no" ;;
@@ -870,37 +875,6 @@ done
870
875
871
876
[[ $sysroot_l ]] && dracutsysrootdir=" $sysroot_l "
872
877
873
- if [[ $regenerate_all == " yes" ]]; then
874
- ret=0
875
- if [[ $kernel ]]; then
876
- printf -- " --regenerate-all cannot be called with a kernel version\n" >&2
877
- exit 1
878
- fi
879
-
880
- if [[ $outfile ]]; then
881
- printf -- " --regenerate-all cannot be called with a image file\n" >&2
882
- exit 1
883
- fi
884
-
885
- (( len = ${# dracut_args[@]} ))
886
- for (( i = 0 ; i < len; i++ )) ; do
887
- [[ ${dracut_args[$i]} == " --regenerate-all" ]] \
888
- && unset dracut_args[" $i " ]
889
- done
890
-
891
- cd " $dracutsysrootdir " /lib/modules || exit 1
892
- for i in * ; do
893
- [[ -f $i /modules.dep ]] || [[ -f $i /modules.dep.bin ]] || continue
894
- " $dracut_cmd " --kver=" $i " " ${dracut_args[@]} "
895
- (( ret += $? ))
896
- done
897
- exit " $ret "
898
- fi
899
-
900
- if ! [[ $kernel ]]; then
901
- kernel=$( uname -r)
902
- fi
903
-
904
878
export LC_ALL=C
905
879
export LANG=C
906
880
unset LC_MESSAGES
@@ -961,6 +935,62 @@ for f in $(dropindirs_sort ".conf" "$confdir" "$dracutbasedir/dracut.conf.d"); d
961
935
[[ -e $f ]] && . " $f "
962
936
done
963
937
938
+ # regenerate_all shouldn't be set in conf files
939
+ regenerate_all=$regenerate_all_l
940
+ if [[ $parallel_l == " yes" ]]; then
941
+ parallel=yes
942
+ fi
943
+
944
+ if [[ $regenerate_all == " yes" ]]; then
945
+ ret=0
946
+ if [[ $kernel ]]; then
947
+ printf -- " --regenerate-all cannot be called with a kernel version\n" >&2
948
+ exit 1
949
+ fi
950
+
951
+ if [[ $outfile ]]; then
952
+ printf -- " --regenerate-all cannot be called with a image file\n" >&2
953
+ exit 1
954
+ fi
955
+
956
+ (( len = ${# dracut_args[@]} ))
957
+ for (( i = 0 ; i < len; i++ )) ; do
958
+ case ${dracut_args[$i]} in
959
+ --regenerate-all | --parallel)
960
+ unset dracut_args[" $i " ]
961
+ ;;
962
+ esac
963
+ done
964
+
965
+ cd " $dracutsysrootdir " /lib/modules || exit 1
966
+ if [[ $parallel != " yes" ]]; then
967
+ for i in * ; do
968
+ [[ -f $i /modules.dep ]] || [[ -f $i /modules.dep.bin ]] || continue
969
+ " $dracut_cmd " --kver=" $i " " ${dracut_args[@]} "
970
+ (( ret += $? ))
971
+ done
972
+ else
973
+ for i in * ; do
974
+ [[ -f $i /modules.dep ]] || [[ -f $i /modules.dep.bin ]] || continue
975
+ " $dracut_cmd " --kver=" $i " " ${dracut_args[@]} " &
976
+ done
977
+ while true ; do
978
+ wait -n
979
+ wst=$?
980
+ if [[ $wst == 127 ]]; then
981
+ break
982
+ else
983
+ (( ret += wst))
984
+ fi
985
+ done
986
+ fi
987
+ exit " $ret "
988
+ fi
989
+
990
+ if ! [[ $kernel ]]; then
991
+ kernel=$( uname -r)
992
+ fi
993
+
964
994
DRACUT_PATH=${DRACUT_PATH:-/ sbin / bin / usr/ sbin / usr/ bin}
965
995
966
996
for i in $DRACUT_PATH ; do
@@ -1332,8 +1362,7 @@ dinfo "Executing: $dracut_cmd ${dracut_args[*]}"
1332
1362
[[ $do_list == yes ]] && {
1333
1363
for mod in " $dracutbasedir " /modules.d/* ; do
1334
1364
[[ -d $mod ]] || continue
1335
- [[ -e $mod /install || -e $mod /installkernel || -e \
1336
- $mod /module-setup.sh ]] || continue
1365
+ [[ -e $mod /install || -e $mod /installkernel || -e $mod /module-setup.sh ]] || continue
1337
1366
printf " %s\n" " ${mod##*/ ??} "
1338
1367
done
1339
1368
exit 0
0 commit comments