summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2013-12-22 20:11:37 +0100
committerDave Reisner <dreisner@archlinux.org>2013-12-22 20:29:08 +0100
commit2ce3a416c8714adedc3117e5247e6da364ddebc9 (patch)
tree59177141141a20169f62123d65e65dad462495a6
parenta22a830b4706c5e15fcf4561165fd10706ca9a54 (diff)
downloadmkinitcpio-2ce3a416c8714adedc3117e5247e6da364ddebc9.tar.gz
mkinitcpio-2ce3a416c8714adedc3117e5247e6da364ddebc9.tar.xz
Add -l flag when using lz4 compression
This isn't documented, but it's needed since the kernel lz4 support is based on the original streaming format and not the newer default. Use -l to force the legacy codec. Fixup lsinitcpio to support the older format, and, add a warning when the newer format is detected. Who knows when this will be "resolved" ... Upstream discussion: https://code.google.com/p/lz4/issues/detail?id=102
-rwxr-xr-xlsinitcpio15
-rwxr-xr-xmkinitcpio3
2 files changed, 14 insertions, 4 deletions
diff --git a/lsinitcpio b/lsinitcpio
index 10cd663..9d98d57 100755
--- a/lsinitcpio
+++ b/lsinitcpio
@@ -91,10 +91,17 @@ detect_filetype() {
return
fi
- if [[ $(hexdump -n 4 -e '"%x"' "$1") == '184d2204' ]]; then
- echo 'lz4'
- return
- fi
+ case $(hexdump -n 4 -e '"%x"' "$1") in
+ 184d2204)
+ error 'Newer lz4 stream format detected! This may not boot!'
+ echo 'lz4'
+ return
+ ;;
+ 184c2102)
+ echo 'lz4 -l'
+ return
+ ;;
+ esac
if [[ $(hexdump -n 3 -e '"%c"' "$1") == 'BZh' ]]; then
echo 'bzip2'
diff --git a/mkinitcpio b/mkinitcpio
index cb94d62..42abde7 100755
--- a/mkinitcpio
+++ b/mkinitcpio
@@ -202,6 +202,9 @@ build_image() {
xz)
COMPRESSION_OPTIONS+=' --check=crc32'
;;
+ lz4)
+ COMPRESSION_OPTIONS+=' -l'
+ ;;
esac
cpio_opts=('-0' '-o' '-H' 'newc')