wok diff syslinux/stuff/iso2exe/init @ rev 17473

syslinux/iso2exe: add 64bits support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Dec 27 17:56:57 2014 +0100 (2014-12-27)
parents 18dc23394a2c
children f889c01820d0
line diff
     1.1 --- a/syslinux/stuff/iso2exe/init	Thu Dec 18 12:32:12 2014 +0100
     1.2 +++ b/syslinux/stuff/iso2exe/init	Sat Dec 27 17:56:57 2014 +0100
     1.3 @@ -33,6 +33,13 @@
     1.4  	umount /proc
     1.5  }
     1.6  
     1.7 +bytes2bin()
     1.8 +{
     1.9 +	for i in $@ ; do
    1.10 +		printf '\\\\x%02X' $(($i&255)) | xargs echo -en
    1.11 +	done
    1.12 +}
    1.13 +
    1.14  words2bin()
    1.15  {
    1.16  	for i in $@ ; do
    1.17 @@ -218,7 +225,7 @@
    1.18  		if [ -d /media/cdrom/fs ]; then
    1.19  			cp -a /media/cdrom/fs/. /mnt/slitaz
    1.20  		elif is_loram ; then
    1.21 -			for i in /media/cdrom/boot/rootfs?.* ; do
    1.22 +			for i in /media/cdrom/boot/rootfs?*.* ; do
    1.23  				[ -s $(basename $i) ] && continue
    1.24  				cpio -i $i
    1.25  			done
    1.26 @@ -393,6 +400,31 @@
    1.27  	cp /media/cdrom/boot/memtest /mnt/memtest.exe
    1.28  }
    1.29  
    1.30 +mkfloppy()
    1.31 +{
    1.32 +	ddq if=$1 of=/dev/fd0
    1.33 +	[ $(($(get 0 $1) - 0x5A4D)) -eq 0 ] || return
    1.34 +	J=$(($(get 3 $1 1) + 0x02))
    1.35 +	R=$((1 + $(get 497 $1 1) + 1 + ($(get 500 $1)-1)/32))
    1.36 +	[ $R -lt 2500 ] || return
    1.37 +	[ $((($(get 500 $file)-1) & 31)) -lt 30 ] &&
    1.38 +	dd if=$file bs=32 count=1 seek=$(($R*16 - 1)) of=/dev/fd0
    1.39 +	G="18 0 2 0 0 0 0 0"
    1.40 +	[ $J -gt 25 ] || G=""
    1.41 +	F=0
    1.42 +	for i in 1 2 3; do
    1.43 +		F=$((((2880-$R-$F-$F)*3+1023)/1024))
    1.44 +	done
    1.45 +	bytes2bin 0xEB $J 0x90 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 \
    1.46 +		0 2 2 $(($R%256)) $(($R/256)) 2 64 0 64 11 0xF0 $F 0 \
    1.47 +		$G | ddq bs=1 of=/dev/fd0
    1.48 +	ddq if=/dev/zero bs=512 count=$((4+$F+$F)) seek=$R of=/dev/fd0
    1.49 +	for i in $R $(($R+$F)) ; do
    1.50 +		bytes2bin 0xF0 0xFF 0xFF | ddq bs=512 seek=$i of=/dev/fd0
    1.51 +	done
    1.52 +	echo -n $(basename $1) | ddq bs=1 seek=3 count=8 of=/dev/fd0
    1.53 +}
    1.54 +
    1.55  fdmemtest()
    1.56  {
    1.57  	$DIALOG --clear \
    1.58 @@ -403,8 +435,7 @@
    1.59  miss many of the failures that are detected by Memtest86.\n\n
    1.60  Please insert a blank disk in floppy drive.\n
    1.61  " 12 70
    1.62 -	[ $? -eq 0 ] || return
    1.63 -	ddq if=/media/cdrom/boot/memtest of=/dev/fd0
    1.64 +	[ $? -eq 0 ] && mkfloppy /media/cdrom/boot/memtest
    1.65  }
    1.66  
    1.67  pxe()
    1.68 @@ -433,8 +464,7 @@
    1.69  from the Web using PXE and HTTP protocols.\n\n
    1.70  Please insert a blank disk in floppy drive.\n
    1.71  " 12 70
    1.72 -	[ $? -eq 0 ] || return
    1.73 -	ddq if=/media/cdrom/boot/?pxe of=/dev/fd0
    1.74 +	[ $? -eq 0 ] && mkfloppy /media/cdrom/boot/?pxe
    1.75  }
    1.76  
    1.77  gotposixovl()