refactor: delay compressor detection
No function change, decide which compressor to use right before compressing the initramfs. This may delay the print of this message: "dracut: no compression tool available. Initramfs image is going to be big." but should be OK, this message is not an error.master
parent
90f269f6af
commit
a9345f6800
94
dracut.sh
94
dracut.sh
|
@ -905,53 +905,6 @@ if [[ $_no_compress_l = "$DRACUT_COMPRESS_CAT" ]]; then
|
|||
compress="$DRACUT_COMPRESS_CAT"
|
||||
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 $OMPRESS_BZIP2 $DRACUT_COMPRESS_CAT; do
|
||||
command -v "$i" &>/dev/null || continue
|
||||
compress="$i"
|
||||
break
|
||||
done
|
||||
if [[ $compress = cat ]]; then
|
||||
printf "%s\n" "dracut: no compression tool available. Initramfs image is going to be big." >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
# choose the right arguments for the compressor
|
||||
case $compress in
|
||||
bzip2|lbzip2)
|
||||
if [[ "$compress" = lbzip2 ]] || command -v "$DRACUT_COMPRESS_LBZIP2" &>/dev/null; then
|
||||
compress="$DRACUT_COMPRESS_LBZIP2 -9"
|
||||
else
|
||||
compress="$DRACUT_COMPRESS_BZIP2 -9"
|
||||
fi
|
||||
;;
|
||||
lzma)
|
||||
compress="$DRACUT_COMPRESS_LZMA -9 -T0"
|
||||
;;
|
||||
xz)
|
||||
compress="$DRACUT_COMPRESS_XZ --check=crc32 --lzma2=dict=1MiB -T0"
|
||||
;;
|
||||
gzip|pigz)
|
||||
if [[ "$compress" = pigz ]] || command -v "$DRACUT_COMPRESS_PIGZ" &>/dev/null; then
|
||||
compress="$DRACUT_COMPRESS_PIGZ -9 -n -T -R"
|
||||
elif command -v gzip &>/dev/null && $DRACUT_COMPRESS_GZIP --help 2>&1 | grep -q rsyncable; then
|
||||
compress="$DRACUT_COMPRESS_GZIP -n -9 --rsyncable"
|
||||
else
|
||||
compress="$DRACUT_COMPRESS_GZIP -n -9"
|
||||
fi
|
||||
;;
|
||||
lzo|lzop)
|
||||
compress="$DRACUT_COMPRESS_LZOP -9"
|
||||
;;
|
||||
lz4)
|
||||
compress="$DRACUT_COMPRESS_LZ4 -l -9"
|
||||
;;
|
||||
zstd)
|
||||
compress="$DRACUT_COMPRESS_ZSTD -15 -q -T0"
|
||||
;;
|
||||
esac
|
||||
|
||||
[[ $hostonly = yes ]] && hostonly="-h"
|
||||
[[ $hostonly != "-h" ]] && unset hostonly
|
||||
|
||||
|
@ -2132,6 +2085,53 @@ if [[ $create_early_cpio = yes ]]; then
|
|||
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 $OMPRESS_BZIP2 $DRACUT_COMPRESS_CAT; do
|
||||
command -v "$i" &>/dev/null || continue
|
||||
compress="$i"
|
||||
break
|
||||
done
|
||||
if [[ $compress = cat ]]; then
|
||||
printf "%s\n" "dracut: no compression tool available. Initramfs image is going to be big." >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
# choose the right arguments for the compressor
|
||||
case $compress in
|
||||
bzip2|lbzip2)
|
||||
if [[ "$compress" = lbzip2 ]] || command -v "$DRACUT_COMPRESS_LBZIP2" &>/dev/null; then
|
||||
compress="$DRACUT_COMPRESS_LBZIP2 -9"
|
||||
else
|
||||
compress="$DRACUT_COMPRESS_BZIP2 -9"
|
||||
fi
|
||||
;;
|
||||
lzma)
|
||||
compress="$DRACUT_COMPRESS_LZMA -9 -T0"
|
||||
;;
|
||||
xz)
|
||||
compress="$DRACUT_COMPRESS_XZ --check=crc32 --lzma2=dict=1MiB -T0"
|
||||
;;
|
||||
gzip|pigz)
|
||||
if [[ "$compress" = pigz ]] || command -v "$DRACUT_COMPRESS_PIGZ" &>/dev/null; then
|
||||
compress="$DRACUT_COMPRESS_PIGZ -9 -n -T -R"
|
||||
elif command -v gzip &>/dev/null && $DRACUT_COMPRESS_GZIP --help 2>&1 | grep -q rsyncable; then
|
||||
compress="$DRACUT_COMPRESS_GZIP -n -9 --rsyncable"
|
||||
else
|
||||
compress="$DRACUT_COMPRESS_GZIP -n -9"
|
||||
fi
|
||||
;;
|
||||
lzo|lzop)
|
||||
compress="$DRACUT_COMPRESS_LZOP -9"
|
||||
;;
|
||||
lz4)
|
||||
compress="$DRACUT_COMPRESS_LZ4 -l -9"
|
||||
;;
|
||||
zstd)
|
||||
compress="$DRACUT_COMPRESS_ZSTD -15 -q -T0"
|
||||
;;
|
||||
esac
|
||||
|
||||
if ! (
|
||||
umask 077; cd "$initdir"
|
||||
find . -print0 | sort -z \
|
||||
|
|
Loading…
Reference in New Issue