wok-next diff syslinux/stuff/iso2exe/iso2exe.sh @ rev 19027

syslinux/iso2exe: update partition size
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Apr 03 10:27:26 2016 +0200 (2016-04-03)
parents dbf4eeed945f
children 83ffe9fe03d8
line diff
     1.1 --- a/syslinux/stuff/iso2exe/iso2exe.sh	Mon Mar 28 18:04:41 2016 +0200
     1.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh	Sun Apr 03 10:27:26 2016 +0200
     1.3 @@ -473,15 +473,6 @@
     1.4  			md5sum | cut -c-32 | sed 's/\(..\)/\\x\1/g')" | \
     1.5  			ddq bs=16 seek=2047 conv=notrunc of=$1
     1.6  	fi
     1.7 -	echo -n "Adding boot checksum..."
     1.8 -	if [ $(stat -c %s $1) -gt 32768 ]; then
     1.9 -		n=$(($(get 2 $1) - 1 + ($(get 4 $1) - 1)*512))
    1.10 -		n=$(($(od -v -N $n -t u2 -w2 -An $1 | \
    1.11 -		       awk '{ i+= $0 } END { print (i % 65536) }') \
    1.12 -		     + $(get $(($n+1)) $1 1)))
    1.13 -		store 18 $(( (-$n -1) % 65536 )) $1
    1.14 -	fi
    1.15 -	echo " done."
    1.16  	if [ "$append$initrd" ]; then
    1.17  		echo -n "Adding custom config... "
    1.18  		DATA=/tmp/$(basename $0)$$
    1.19 @@ -492,14 +483,33 @@
    1.20  			cat $initrd >> $DATA
    1.21  		echo "#!boot $(md5sum $DATA | sed 's/ .*//')" | cat - $DATA | \
    1.22  		ddq bs=2k seek=$(custom_config_sector $1) of=$1 conv=notrunc
    1.23 -		if [ $(stat -c %s $1) -gt $isosz ]; then
    1.24 -			echo "$(($(stat -c %s $1) - $isosz)) extra bytes."
    1.25 +		newsz=$(stat -c %s $1)
    1.26 +		for i in 1 2 3 4 ; do
    1.27 +			[ $(get $((0x1BE+16*i)) $1 4) -eq $((0x00010080)) ] || continue
    1.28 +			mb=$(((($newsz -1)/1024/1024)+1))
    1.29 +			h=$((512*$(get 417 "$1" 1)))
    1.30 +			store $(($mb-1)) $((0x1C5+16*i)) $1 8
    1.31 +			store $(($mb-1)) $(($h+0x1C5+16*i)) $1 8
    1.32 +			store $(($mb*2048)) $((0x1D2+16*i)) $1 32
    1.33 +			store $(($mb*2048)) $(($h+0x1D2+16*i)) $1 32
    1.34 +		done
    1.35 +		if [ $newsz -gt $isosz ]; then
    1.36 +			echo "$(($newsz - $isosz)) extra bytes."
    1.37  		else
    1.38  			echo "$(($isosz - 32768 - 2048*$(get 32848 $1 4) 
    1.39  				 - $(stat -c %s $DATA) - 24)) bytes free."
    1.40  		fi
    1.41  		rm -f $DATA > /dev/null
    1.42  	fi
    1.43 +	echo -n "Adding boot checksum..."
    1.44 +	if [ $(stat -c %s $1) -gt 32768 ]; then
    1.45 +		n=$(($(get 2 $1) - 1 + ($(get 4 $1) - 1)*512))
    1.46 +		n=$(($(od -v -N $n -t u2 -w2 -An $1 | \
    1.47 +		       awk '{ i+= $0 } END { print (i % 65536) }') \
    1.48 +		     + $(get $(($n+1)) $1 1)))
    1.49 +		store 18 $(( (-$n -1) % 65536 )) $1
    1.50 +	fi
    1.51 +	echo " done."
    1.52  }
    1.53  
    1.54  main "$@" <<EOT