|
|
a56a5e |
From a0b85db18e163a14144230ae67c43ac23246b7ea Mon Sep 17 00:00:00 2001
|
|
|
966cef |
From: Koen Kooi <koen@dominion.thruhere.net>
|
|
|
966cef |
Date: Thu, 16 Jan 2014 11:00:54 +0100
|
|
|
966cef |
Subject: [PATCH] dracut-initramfs-restore,lsinitrd: add LZ4 support
|
|
|
966cef |
|
|
|
966cef |
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.
|
|
|
966cef |
|
|
|
966cef |
The lz4 command chokes on '--', so abstract that out into the CAT select.
|
|
|
966cef |
|
|
|
966cef |
Something similar will need to be done for LZO.
|
|
|
966cef |
|
|
|
966cef |
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
|
|
|
966cef |
---
|
|
|
966cef |
dracut-initramfs-restore.sh | 2 ++
|
|
|
966cef |
lsinitrd.sh | 22 ++++++++++++----------
|
|
|
966cef |
2 files changed, 14 insertions(+), 10 deletions(-)
|
|
|
966cef |
|
|
|
966cef |
diff --git a/dracut-initramfs-restore.sh b/dracut-initramfs-restore.sh
|
|
|
966cef |
index ec5fe18..f29c814 100644
|
|
|
966cef |
--- a/dracut-initramfs-restore.sh
|
|
|
966cef |
+++ b/dracut-initramfs-restore.sh
|
|
|
966cef |
@@ -20,6 +20,8 @@ if zcat "$IMG" | cpio -id --quiet >/dev/null; then
|
|
|
966cef |
rm -f -- .need_shutdown
|
|
|
966cef |
elif xzcat "$IMG" | cpio -id --quiet >/dev/null; then
|
|
|
966cef |
rm -f -- .need_shutdown
|
|
|
966cef |
+elif lz4 -d -c "$IMG" | cpio -id --quiet >/dev/null; then
|
|
|
966cef |
+ rm -f -- .need_shutdown
|
|
|
966cef |
else
|
|
|
966cef |
# something failed, so we clean up
|
|
|
966cef |
echo "Unpacking of $IMG to /run/initramfs failed" >&2
|
|
|
966cef |
diff --git a/lsinitrd.sh b/lsinitrd.sh
|
|
|
966cef |
index 584c29a..f9f243b 100755
|
|
|
966cef |
--- a/lsinitrd.sh
|
|
|
966cef |
+++ b/lsinitrd.sh
|
|
|
966cef |
@@ -106,15 +106,17 @@ fi
|
|
|
966cef |
read -N 6 bin < "$image"
|
|
|
966cef |
case $bin in
|
|
|
966cef |
$'\x1f\x8b'*)
|
|
|
966cef |
- CAT="zcat";;
|
|
|
966cef |
+ CAT="zcat --";;
|
|
|
966cef |
BZh*)
|
|
|
966cef |
- CAT="bzcat";;
|
|
|
966cef |
+ CAT="bzcat --";;
|
|
|
966cef |
$'\x71\xc7'*|070701)
|
|
|
966cef |
- CAT="cat";;
|
|
|
966cef |
+ CAT="cat --";;
|
|
|
966cef |
+ $'\x04\x22'*)
|
|
|
966cef |
+ CAT="lz4 -d -c";;
|
|
|
966cef |
*)
|
|
|
966cef |
- CAT="xzcat";
|
|
|
966cef |
+ CAT="xzcat --";
|
|
|
966cef |
if echo "test"|xz|xzcat --single-stream >/dev/null 2>&1; then
|
|
|
966cef |
- CAT="xzcat --single-stream"
|
|
|
966cef |
+ CAT="xzcat --single-stream --"
|
|
|
966cef |
fi
|
|
|
966cef |
;;
|
|
|
966cef |
esac
|
|
|
966cef |
@@ -126,7 +128,7 @@ if (( ${#filenames[@]} > 0 )); then
|
|
|
966cef |
for f in ${!filenames[@]}; do
|
|
|
966cef |
[[ $nofileinfo ]] || echo "initramfs:/$f"
|
|
|
966cef |
[[ $nofileinfo ]] || echo "========================================================================"
|
|
|
966cef |
- $CAT -- $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
|
|
|
966cef |
+ $CAT $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
|
|
|
966cef |
((ret+=$?))
|
|
|
966cef |
[[ $nofileinfo ]] || echo "========================================================================"
|
|
|
966cef |
[[ $nofileinfo ]] || echo
|
|
|
966cef |
@@ -134,16 +136,16 @@ if (( ${#filenames[@]} > 0 )); then
|
|
|
966cef |
else
|
|
|
966cef |
echo "Image: $image: $(du -h $image | while read a b; do echo $a;done)"
|
|
|
966cef |
echo "========================================================================"
|
|
|
966cef |
- version=$($CAT -- "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/dracut-*' 2>/dev/null)
|
|
|
966cef |
+ version=$($CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/dracut-*' 2>/dev/null)
|
|
|
966cef |
((ret+=$?))
|
|
|
966cef |
echo "$version with dracut modules:"
|
|
|
966cef |
- $CAT -- "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/modules.txt' 2>/dev/null
|
|
|
966cef |
+ $CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/modules.txt' 2>/dev/null
|
|
|
966cef |
((ret+=$?))
|
|
|
966cef |
echo "========================================================================"
|
|
|
966cef |
if [ "$sorted" -eq 1 ]; then
|
|
|
966cef |
- $CAT -- "$image" | cpio --extract --verbose --quiet --list | sort -n -k5
|
|
|
966cef |
+ $CAT "$image" | cpio --extract --verbose --quiet --list | sort -n -k5
|
|
|
966cef |
else
|
|
|
966cef |
- $CAT -- "$image" | cpio --extract --verbose --quiet --list | sort -k9
|
|
|
966cef |
+ $CAT "$image" | cpio --extract --verbose --quiet --list | sort -k9
|
|
|
966cef |
fi
|
|
|
966cef |
((ret+=$?))
|
|
|
966cef |
echo "========================================================================"
|