dracut/0010-Add-lzo-lz4-compressio...

106 lines
4.1 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 871c8e40d1c7bb1bace48ce19ea1b956f7065458 Mon Sep 17 00:00:00 2001
From: P J P <ppandit@redhat.com>
Date: Fri, 11 Oct 2013 19:26:51 +0530
Subject: [PATCH] Add lzo, lz4 compression and read INITRD_COMPRESS
This patch adds support for lzop(1) & lz4(1) compression
algorithms to compress iniramfs image file. Both are supported
by the Linux kernel.
Linux kernel exports user's choice of initramfs compression
algorithm as a shell environment variable: INITRD_COMPRESS.
This patch adds support to read this variable and duly compress
the initramfs image file.
Environment variable INITRD_COMPRESS has less precedence than the
command line options --gzip, etc. Ie. command line options could
override the compression algorithm defined by $INITRD_COMPRESS.
Signed-off-by: P J P <ppandit@redhat.com>
[Edited-by: Harald Hoyer: add documentation about lzo and lz4]
---
dracut.8.asc | 16 ++++++++++++++++
dracut.sh | 13 +++++++++++++
2 files changed, 29 insertions(+)
diff --git a/dracut.8.asc b/dracut.8.asc
index 584514c..2ea6744 100644
--- a/dracut.8.asc
+++ b/dracut.8.asc
@@ -365,6 +365,22 @@ Make sure your kernel has xz decompression support compiled in, otherwise you
will not be able to boot. Equivalent to "lzma --compress=xz --check=crc32 --lzma2=dict=1MiB"
====
+**--lzo**::
+ Compress the generated initramfs using lzop.
+[WARNING]
+====
+Make sure your kernel has lzo decompression support compiled in, otherwise you
+will not be able to boot.
+====
+
+**--lz4**::
+ Compress the generated initramfs using lz4.
+[WARNING]
+====
+Make sure your kernel has lz4 decompression support compiled in, otherwise you
+will not be able to boot.
+====
+
**--compress** _<compressor>_::
Compress the generated initramfs using the passed compression program. If
you pass it just the name of a compression program, it will call that
diff --git a/dracut.sh b/dracut.sh
index d9533dd..173a259 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -165,6 +165,12 @@ Creates initial ramdisk images for preloading modules
--xz Compress the generated initramfs using xz.
Make sure that your kernel has xz support compiled
in, otherwise you will not be able to boot.
+ --lzo Compress the generated initramfs using lzop.
+ Make sure that your kernel has lzo support compiled
+ in, otherwise you will not be able to boot.
+ --lz4 Compress the generated initramfs using lz4.
+ Make sure that your kernel has lz4 support compiled
+ in, otherwise you will not be able to boot.
--compress [COMPRESSION] Compress the generated initramfs with the
passed compression program. Make sure your kernel
knows how to decompress the generated initramfs,
@@ -342,6 +348,8 @@ TEMP=$(unset POSIXLY_CORRECT; getopt \
--long bzip2 \
--long lzma \
--long xz \
+ --long lzo \
+ --long lz4 \
--long no-compress \
--long gzip \
--long list-modules \
@@ -430,6 +438,8 @@ while :; do
--bzip2) compress_l="bzip2";;
--lzma) compress_l="lzma";;
--xz) compress_l="xz";;
+ --lzo) compress_l="lzo";;
+ --lz4) compress_l="lz4";;
--no-compress) _no_compress_l="cat";;
--gzip) compress_l="gzip";;
--list-modules) do_list="yes";;
@@ -673,6 +683,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
[[ $fw_dir ]] || fw_dir="/lib/firmware/updates /lib/firmware"
[[ $tmpdir_l ]] && tmpdir="$tmpdir_l"
[[ $tmpdir ]] || tmpdir=/var/tmp
+[[ $INITRD_COMPRESS ]] && compress=$INITRD_COMPRESS
[[ $compress_l ]] && compress=$compress_l
[[ $show_modules_l ]] && show_modules=$show_modules_l
[[ $nofscks_l ]] && nofscks="yes"
@@ -689,6 +700,8 @@ case $compress in
lzma) compress="lzma -9";;
xz) compress="xz --check=crc32 --lzma2=dict=1MiB";;
gzip) compress="gzip -9"; command -v pigz > /dev/null 2>&1 && compress="pigz -9";;
+ lzo) compress="lzop -9";;
+ lz4) compress="lz4 -9";;
esac
if [[ $_no_compress_l = "cat" ]]; then
compress="cat"