You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.7 KiB
88 lines
3.7 KiB
6 years ago
|
From a0b85db18e163a14144230ae67c43ac23246b7ea Mon Sep 17 00:00:00 2001
|
||
|
From: Koen Kooi <koen@dominion.thruhere.net>
|
||
|
Date: Thu, 16 Jan 2014 11:00:54 +0100
|
||
|
Subject: [PATCH] dracut-initramfs-restore,lsinitrd: add LZ4 support
|
||
|
|
||
|
Dracut claims to have LZ4 support, but trying to use it will result in an xzcat failure at the end due to missing CAT support.
|
||
|
|
||
|
The lz4 command chokes on '--', so abstract that out into the CAT select.
|
||
|
|
||
|
Something similar will need to be done for LZO.
|
||
|
|
||
|
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
|
||
|
---
|
||
|
dracut-initramfs-restore.sh | 2 ++
|
||
|
lsinitrd.sh | 22 ++++++++++++----------
|
||
|
2 files changed, 14 insertions(+), 10 deletions(-)
|
||
|
|
||
|
diff --git a/dracut-initramfs-restore.sh b/dracut-initramfs-restore.sh
|
||
|
index ec5fe180..f29c8146 100644
|
||
|
--- a/dracut-initramfs-restore.sh
|
||
|
+++ b/dracut-initramfs-restore.sh
|
||
|
@@ -20,6 +20,8 @@ if zcat "$IMG" | cpio -id --quiet >/dev/null; then
|
||
|
rm -f -- .need_shutdown
|
||
|
elif xzcat "$IMG" | cpio -id --quiet >/dev/null; then
|
||
|
rm -f -- .need_shutdown
|
||
|
+elif lz4 -d -c "$IMG" | cpio -id --quiet >/dev/null; then
|
||
|
+ rm -f -- .need_shutdown
|
||
|
else
|
||
|
# something failed, so we clean up
|
||
|
echo "Unpacking of $IMG to /run/initramfs failed" >&2
|
||
|
diff --git a/lsinitrd.sh b/lsinitrd.sh
|
||
|
index 584c29a9..f9f243bb 100755
|
||
|
--- a/lsinitrd.sh
|
||
|
+++ b/lsinitrd.sh
|
||
|
@@ -106,15 +106,17 @@ fi
|
||
|
read -N 6 bin < "$image"
|
||
|
case $bin in
|
||
|
$'\x1f\x8b'*)
|
||
|
- CAT="zcat";;
|
||
|
+ CAT="zcat --";;
|
||
|
BZh*)
|
||
|
- CAT="bzcat";;
|
||
|
+ CAT="bzcat --";;
|
||
|
$'\x71\xc7'*|070701)
|
||
|
- CAT="cat";;
|
||
|
+ CAT="cat --";;
|
||
|
+ $'\x04\x22'*)
|
||
|
+ CAT="lz4 -d -c";;
|
||
|
*)
|
||
|
- CAT="xzcat";
|
||
|
+ CAT="xzcat --";
|
||
|
if echo "test"|xz|xzcat --single-stream >/dev/null 2>&1; then
|
||
|
- CAT="xzcat --single-stream"
|
||
|
+ CAT="xzcat --single-stream --"
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
@@ -126,7 +128,7 @@ if (( ${#filenames[@]} > 0 )); then
|
||
|
for f in ${!filenames[@]}; do
|
||
|
[[ $nofileinfo ]] || echo "initramfs:/$f"
|
||
|
[[ $nofileinfo ]] || echo "========================================================================"
|
||
|
- $CAT -- $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
|
||
|
+ $CAT $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
|
||
|
((ret+=$?))
|
||
|
[[ $nofileinfo ]] || echo "========================================================================"
|
||
|
[[ $nofileinfo ]] || echo
|
||
|
@@ -134,16 +136,16 @@ if (( ${#filenames[@]} > 0 )); then
|
||
|
else
|
||
|
echo "Image: $image: $(du -h $image | while read a b; do echo $a;done)"
|
||
|
echo "========================================================================"
|
||
|
- version=$($CAT -- "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/dracut-*' 2>/dev/null)
|
||
|
+ version=$($CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/dracut-*' 2>/dev/null)
|
||
|
((ret+=$?))
|
||
|
echo "$version with dracut modules:"
|
||
|
- $CAT -- "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/modules.txt' 2>/dev/null
|
||
|
+ $CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/modules.txt' 2>/dev/null
|
||
|
((ret+=$?))
|
||
|
echo "========================================================================"
|
||
|
if [ "$sorted" -eq 1 ]; then
|
||
|
- $CAT -- "$image" | cpio --extract --verbose --quiet --list | sort -n -k5
|
||
|
+ $CAT "$image" | cpio --extract --verbose --quiet --list | sort -n -k5
|
||
|
else
|
||
|
- $CAT -- "$image" | cpio --extract --verbose --quiet --list | sort -k9
|
||
|
+ $CAT "$image" | cpio --extract --verbose --quiet --list | sort -k9
|
||
|
fi
|
||
|
((ret+=$?))
|
||
|
echo "========================================================================"
|