# HG changeset patch # User Pascal Bellard # Date 1315054144 -7200 # Node ID a3cd5a4732f2dd94512fe1a238b2e4f780dab6b2 # Parent 92b0fd269334e07b6cc3478fecb0b3629c73c084 tazlito: set lzma'd rootfs size field diff -r 92b0fd269334 -r a3cd5a4732f2 tazlito --- a/tazlito Tue Aug 30 10:24:39 2011 +0200 +++ b/tazlito Sat Sep 03 14:49:04 2011 +0200 @@ -323,6 +323,18 @@ echo "-d$(lzma_history_bits $1) -mt$(grep '^processor' < /proc/cpuinfo | wc -l)" } +lzma_set_size() +{ + # Update size field for lzma'd file packed using -so switch + local n + local i + n=$(unlzma -c $1 | wc -c) + for i in $(seq 1 8); do + printf '\\\\x%02X' $(($n & 255)) + n=$(($n >> 8)) + done | xargs echo -en | dd of=$1 conv=notrunc bs=1 seek=5 2> /dev/null +} + # Pack rootfs pack_rootfs() { @@ -333,6 +345,7 @@ elif [ -x /usr/bin/lzma -a "$COMPRESSION" != "gzip" ]; then echo -n "Generating lzma'ed initramfs... " lzma e -si -so $(lzma_switches $1) > $2 + lzma_set_size $2 else echo "Generating gziped initramfs... " gzip -9 > $2 @@ -346,6 +359,7 @@ if [ "$COMPRESSION" = "lzma" ]; then echo -n "Creating rootfs.gz with lzma compression... " cat /tmp/list | cpio -o -H newc | lzma e -si -so > /rootfs.gz + lzma_set_size /rootfs.gz elif [ "$COMPRESSION" = "gzip" ]; then echo "Creating rootfs.gz with gzip compression... " cat /tmp/list | cpio -o -H newc | gzip -9 > /rootfs.gz