tazlito rev 102

Add tazlito repack
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Aug 16 21:20:54 2009 +0200 (2009-08-16)
parents ba395fa660a8
children 55a872cdf001
files tazlito
line diff
     1.1 --- a/tazlito	Sat Aug 08 10:07:24 2009 +0200
     1.2 +++ b/tazlito	Sun Aug 16 21:20:54 2009 +0200
     1.3 @@ -89,6 +89,7 @@
     1.4    clean-distro    Remove all files generated by gen-distro.
     1.5    check-distro    Help to check if distro is ready to release.
     1.6    merge           Merge multiple rootfs into one iso.
     1.7 +  repack	  Recompress rootfs in iso with maximum ration.
     1.8    burn-iso        Burn ISO image to a cdrom using Wodim.\n"
     1.9  }
    1.10  
    1.11 @@ -1238,6 +1239,39 @@
    1.12  		rm -rf $TMP_DIR
    1.13  		;;
    1.14  
    1.15 +	repack)
    1.16 +		# Repack an iso with maximum lzma compression ratio.
    1.17 +		#
    1.18 +
    1.19 +		ISO=$2
    1.20 +
    1.21 +		mkdir -p $TMP_DIR/mnt
    1.22 +		# Extract filesystems
    1.23 +		echo -n "Mount $ISO"
    1.24 +		mount -o loop,ro $ISO $TMP_DIR/mnt 2> /dev/null
    1.25 +		status || cleanup_merge
    1.26 +		cp -a $TMP_DIR/mnt $TMP_DIR/iso
    1.27 +		umount -d $TMP_DIR/mnt
    1.28 +		
    1.29 +		for i in $TMP_DIR/iso/boot/rootfs* ; do
    1.30 +			echo -n "Repack $(basename $i)"
    1.31 +			(zcat $i || unlzma -c $i || cat $i) \
    1.32 +				2>/dev/null > $TMP_DIR/rootfs
    1.33 +			n=20	# 1Mb
    1.34 +			sz=$(stat -c %s $TMP_DIR/rootfs)
    1.35 +			while [ $sz -gt 1048576 ]; do
    1.36 +				n=$(( $n + 1 ))
    1.37 +				sz=$(( $sz / 2 ))
    1.38 +			done
    1.39 +			lzma e $TMP_DIR/rootfs $i -d$n
    1.40 +			status
    1.41 +		done
    1.42 +		
    1.43 +		echo "Generate $ISO"
    1.44 +		create_iso $ISO $TMP_DIR/iso
    1.45 +		rm -rf $TMP_DIR
    1.46 +		;;
    1.47 +
    1.48  	usage|*)
    1.49  		# Clear and print usage also for all unknown commands.
    1.50  		#