]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(dracut.sh): check availability of configured compression
authorMartin Wilck <mwilck@suse.com>
Fri, 19 Nov 2021 11:47:32 +0000 (12:47 +0100)
committerJóhann B. Guðmundsson <johannbg@gmail.com>
Fri, 26 Nov 2021 17:01:45 +0000 (17:01 +0000)
If the configured compression command is unavailable, reset $compress,
and fall back to auto-detection. This allows building an initramfs
even if the configured compression command is not installed. This can
happen e.g. if the distribution uses a preconfigured default, but the
user deinstalled the respective tool.

dracut.sh

index 387f5bbe0d0e02a9846d7698a8b6ccbc1eb76675..c6089ba63a2ef964fd974f519ce17894255dd77e 100755 (executable)
--- a/dracut.sh
+++ b/dracut.sh
@@ -2350,6 +2350,13 @@ if [[ $create_early_cpio == yes ]]; then
     fi
 fi
 
+if [[ $compress && $compress != cat ]]; then
+    if ! command -v "${compress%% *}" &> /dev/null; then
+        derror "dracut: cannot execute compression command '$compress', falling back to default"
+        compress=
+    fi
+fi
+
 if ! [[ $compress ]]; then
     # check all known compressors, if none specified
     for i in $DRACUT_COMPRESS_PIGZ $DRACUT_COMPRESS_GZIP $DRACUT_COMPRESS_LZ4 $DRACUT_COMPRESS_LZOP $DRACUT_COMPRESS_ZSTD $DRACUT_COMPRESS_LZMA $DRACUT_COMPRESS_XZ $DRACUT_COMPRESS_LBZIP2 $DRACUT_COMPRESS_BZIP2 $DRACUT_COMPRESS_CAT; do