Browse Source

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>
master
Koen Kooi 11 years ago committed by Harald Hoyer
parent
commit
149965bd13
  1. 2
      dracut-initramfs-restore.sh
  2. 22
      lsinitrd.sh

2
dracut-initramfs-restore.sh

@ -20,6 +20,8 @@ if zcat "$IMG" | cpio -id --quiet >/dev/null; then
rm -f -- .need_shutdown rm -f -- .need_shutdown
elif xzcat "$IMG" | cpio -id --quiet >/dev/null; then elif xzcat "$IMG" | cpio -id --quiet >/dev/null; then
rm -f -- .need_shutdown rm -f -- .need_shutdown
elif lz4 -d -c "$IMG" | cpio -id --quiet >/dev/null; then
rm -f -- .need_shutdown
else else
# something failed, so we clean up # something failed, so we clean up
echo "Unpacking of $IMG to /run/initramfs failed" >&2 echo "Unpacking of $IMG to /run/initramfs failed" >&2

22
lsinitrd.sh

@ -106,15 +106,17 @@ fi
read -N 6 bin < "$image" read -N 6 bin < "$image"
case $bin in case $bin in
$'\x1f\x8b'*) $'\x1f\x8b'*)
CAT="zcat";; CAT="zcat --";;
BZh*) BZh*)
CAT="bzcat";; CAT="bzcat --";;
$'\x71\xc7'*|070701) $'\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 if echo "test"|xz|xzcat --single-stream >/dev/null 2>&1; then
CAT="xzcat --single-stream" CAT="xzcat --single-stream --"
fi fi
;; ;;
esac esac
@ -126,7 +128,7 @@ if (( ${#filenames[@]} > 0 )); then
for f in ${!filenames[@]}; do for f in ${!filenames[@]}; do
[[ $nofileinfo ]] || echo "initramfs:/$f" [[ $nofileinfo ]] || echo "initramfs:/$f"
[[ $nofileinfo ]] || echo "========================================================================" [[ $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+=$?)) ((ret+=$?))
[[ $nofileinfo ]] || echo "========================================================================" [[ $nofileinfo ]] || echo "========================================================================"
[[ $nofileinfo ]] || echo [[ $nofileinfo ]] || echo
@ -134,16 +136,16 @@ if (( ${#filenames[@]} > 0 )); then
else else
echo "Image: $image: $(du -h $image | while read a b; do echo $a;done)" echo "Image: $image: $(du -h $image | while read a b; do echo $a;done)"
echo "========================================================================" 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+=$?)) ((ret+=$?))
echo "$version with dracut modules:" 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+=$?)) ((ret+=$?))
echo "========================================================================" echo "========================================================================"
if [ "$sorted" -eq 1 ]; then 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 else
$CAT -- "$image" | cpio --extract --verbose --quiet --list | sort -k9 $CAT "$image" | cpio --extract --verbose --quiet --list | sort -k9
fi fi
((ret+=$?)) ((ret+=$?))
echo "========================================================================" echo "========================================================================"

Loading…
Cancel
Save