wok rev 13697

syslinux/iso2exe: menu can create usbkey/floppy
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Dec 14 15:43:12 2012 +0100 (2012-12-14)
parents 34ea786c65bf
children db0eb389448c
files syslinux/stuff/iso2exe/README syslinux/stuff/iso2exe/boot.c syslinux/stuff/iso2exe/bootiso.S syslinux/stuff/iso2exe/bootlinux.c syslinux/stuff/iso2exe/init syslinux/stuff/iso2exe/iso2exe.sh
line diff
     1.1 --- a/syslinux/stuff/iso2exe/README	Fri Dec 14 15:53:34 2012 +0000
     1.2 +++ b/syslinux/stuff/iso2exe/README	Fri Dec 14 15:43:12 2012 +0100
     1.3 @@ -1,3 +1,5 @@
     1.4 +(c) GPLv2, Pascal Bellard <pascal.bellard@slitaz.org>
     1.5 +
     1.6  The iso2exe tool inserts a DOS .EXE header in an ISO image.
     1.7  The ISO image can be launched by DOS :
     1.8  
     1.9 @@ -8,14 +10,14 @@
    1.10  Why ?
    1.11  
    1.12  According to the SliTaz forum, some new users have problems burning CD-ROMs,
    1.13 -creating USB Keys and booting these devices with the BIOS. Others are lost 
    1.14 +creating USB Keys and booting these devices with the BIOS. Others are lost
    1.15  during the installation process or partitioning.
    1.16  
    1.17  The slitaz.exe program boots the SliTaz ISO image with a text menu:
    1.18  
    1.19  - to start SliTaz in RAM (live) in graphics mode or text mode.
    1.20  
    1.21 -- to install SliTaz "a la UMSDOS" in the \slitaz\ subdirectory. The simplest
    1.22 +- to install SliTaz "a la UMSDOS" in the \slitaz\ subdirectory. The easiest
    1.23    way install to SliTaz. No partitioning. No questions.
    1.24  
    1.25  
    1.26 @@ -25,12 +27,12 @@
    1.27  
    1.28  Default mode is menu. Mode can be:
    1.29  
    1.30 -- menu	  	start with an interactive menu
    1.31 -- live    	launch SliTaz in RAM with graphics
    1.32 -- text    	launch SliTaz in RAM with text mode
    1.33 -- install 	SliTaz UMSDOS like installation
    1.34 +- menu	 	start with an interactive menu
    1.35 +- live	 	launch SliTaz in RAM with graphics
    1.36 +- text	 	launch SliTaz in RAM with text mode
    1.37 +- install	SliTaz UMSDOS like installation
    1.38  
    1.39 -If the program name includes one of the supported modes; the according mode is
    1.40 +If the prognam name includes one of the supported modes, the according mode is
    1.41  assumed. Example 'C:\> slitazlive.exe' starts SliTaz in RAM with graphics.
    1.42  
    1.43  
    1.44 @@ -59,7 +61,7 @@
    1.45   1K +-----------------+
    1.46      | isohybrid boot  | Starts isolinux.bin
    1.47  512 +-----------------+
    1.48 -    |  iso2exe boot   |	Boot starts isohybrid (*), .EXE starts DOS .COM loader
    1.49 +    |  iso2exe boot   | Boot starts isohybrid (*), .EXE starts DOS .COM loader
    1.50    0 +-----------------+
    1.51  
    1.52  * Eltorito boot (i.e. bootable CD-ROM by BIOS) is not concerned by iso2exe.
    1.53 @@ -77,7 +79,7 @@
    1.54  - The DOS Linux loader and the ISO initramfs must fit in ~30Kb.
    1.55  
    1.56  - Old Linux kernels don't support multiple initramfs load. They will not
    1.57 -  find the /init.exe file. As a workaround, you can add the "text" argument:
    1.58 +  find the /init.exe file. Only the "text" mode will work:
    1.59  	C:\> slitaz.exe text
    1.60  
    1.61  - The ISO image must include the files /boot/bzImage and /boot/rootfs*.
     2.1 --- a/syslinux/stuff/iso2exe/boot.c	Fri Dec 14 15:53:34 2012 +0000
     2.2 +++ b/syslinux/stuff/iso2exe/boot.c	Fri Dec 14 15:43:12 2012 +0100
     2.3 @@ -101,16 +101,13 @@
     2.4  			cmdfile = NULL;
     2.5  #asm
     2.6  		push	ds
     2.7 -		push	ds
     2.8  		pop	es
     2.9 -		push	cs
    2.10 -		pop	ds
    2.11  		mov	si, #0x82
    2.12  		mov	di, #_args
    2.13  		mov	cx, #0x7E/2
    2.14  		rep
    2.15 +		 seg	cs
    2.16  		  movsw
    2.17 -		pop	ds
    2.18  #endasm
    2.19  		}
    2.20  	}
     3.1 --- a/syslinux/stuff/iso2exe/bootiso.S	Fri Dec 14 15:53:34 2012 +0000
     3.2 +++ b/syslinux/stuff/iso2exe/bootiso.S	Fri Dec 14 15:43:12 2012 +0100
     3.3 @@ -30,7 +30,7 @@
     3.4  end_header:
     3.5  
     3.6  chksum:
     3.7 -	.long	0
     3.8 +	.word	0
     3.9  comstart:
    3.10  	.word	0
    3.11  
    3.12 @@ -95,56 +95,68 @@
    3.13  
    3.14  ////////////////////////////// DOS EXE code ///////////////////////////////////
    3.15  
    3.16 +eol:
    3.17 +	.ascii	".\r\n$"
    3.18  no386:
    3.19  	.ascii	"No 386+$"
    3.20  noDOS3:
    3.21  	.ascii	"No DOS 3.0+$"
    3.22  rmPaging:
    3.23 -	.ascii	"Broken paging.$"
    3.24 +	.ascii	"Broken paging$"
    3.25  ERRvcpi:
    3.26  	.ascii	"No VCPI 4.0+$"
    3.27  chkerr:
    3.28 -	.ascii	"Broken ISO.$"
    3.29 +	.ascii	"Broken ISO$"
    3.30  realmodemsg:
    3.31 -	.ascii	"Real mode\r$"
    3.32 +	.ascii	"Real mode$"
    3.33  vm86modemsg:
    3.34 -	.ascii	"Vm86\r$"
    3.35 +	.ascii	"VM86 mode$"
    3.36  help:
    3.37 -	.ascii	"Linux kickstarter.\r\n$"
    3.38 +	.ascii	"SliTaz GNU/Linux bootloader$"
    3.39 +
    3.40  fixseg:
    3.41 -#if 1
    3.42  	movb	$EXESTR(help), %dl
    3.43 -	movw	0x82, %ax
    3.44 -	cmpw	$0x3F2F, %ax		# /?
    3.45 +	movw	$0x100, %si
    3.46 +	cmpw	$0x3F2F, -126(%si)	# /? 
    3.47  	je	abort
    3.48 -#endif
    3.49 +	movw	(%si), %cx
    3.50 +	jcxz	skip
    3.51 +	xorw	%dx, %dx
    3.52 +	movw	$0x7FE0/2, %cx
    3.53 +chklp:
    3.54 +	lodsw
    3.55 +	addw	%ax, %dx
    3.56 +	loop	chklp
    3.57 +	orw	%dx, %dx
    3.58 +	movb	$EXESTR(chkerr), %dl
    3.59 +	jne	abort
    3.60 +skip:
    3.61  	pushf
    3.62  	popw	%ax
    3.63  	movw	$0xF0F0, %cx
    3.64  	orb	%ah, %ch
    3.65  	andb	$0xF, %ah
    3.66 -	
    3.67  	pushw	%ax
    3.68  	popf
    3.69  	pushf
    3.70  	popw	%ax
    3.71  	andb	%cl, %ah
    3.72 -	
    3.73  	cmp	%cl, %ah
    3.74  	je	NotSupported	// 8086 family
    3.75 -	
    3.76  	pushw	%cx
    3.77  	popf
    3.78  	pushf
    3.79  	popw	%ax
    3.80  	andb	%cl, %ah
    3.81 -	
    3.82  	jnz	is386		// 80286 family
    3.83  NotSupported:
    3.84  	movb	$EXESTR(no386), %dl
    3.85  abort:
    3.86  puts:
    3.87  	movb	$1, %dh
    3.88 +	call	puts2
    3.89 +	movw	$EXEADRS(eol), %dx
    3.90 +puts2:
    3.91  	movb	$9, %ah
    3.92  	int	$0x21
    3.93  	ret
    3.94 @@ -155,13 +167,13 @@
    3.95  	cmpb	$3, %al
    3.96  	movb	$EXESTR(noDOS3), %dl
    3.97  	jb	abort
    3.98 -	smsw	%ax
    3.99 +	movl	%cr0, %eax
   3.100  	andb	$1, %al
   3.101  	jne	tstvcpi
   3.102 -	movl	%cr0, %eax
   3.103  	movb	$EXESTR(rmPaging), %dl
   3.104  	shll	$1, %eax
   3.105  	jc	abort
   3.106 +	movb	$EXESTR(realmodemsg), %dl
   3.107  	jmp	realmode
   3.108  
   3.109  tstvcpi:
   3.110 @@ -182,7 +194,6 @@
   3.111  	jne	abort
   3.112  	shll	$8, %eax
   3.113  	cmpl	$0x4D4D4500, %eax	// [XQ]MME
   3.114 -#if 1
   3.115  	movw	$EXEADRS(CmdVCPI), %si
   3.116  ChkVCPI:
   3.117  	jne	NoVCPI
   3.118 @@ -191,55 +202,20 @@
   3.119  	je	VersionVCPI
   3.120  	int	$0x67
   3.121  	jmp	ChkVCPI
   3.122 +
   3.123  CmdVCPI:
   3.124  	.byte	0x40			// status
   3.125  	.byte	0xDE			// vcpi present ?
   3.126  	.byte	0x46			// version
   3.127  	.byte	0
   3.128 +	
   3.129  VersionVCPI:
   3.130  	cmpb	$0x40, %al		// >= 4.0 ?
   3.131  	jb	NoVCPI
   3.132 -#else
   3.133 -	jne	NoVCPI
   3.134 -	movb	$0x40, %ah		// status
   3.135 -	int	$0x67
   3.136 -	testb	%ah, %ah
   3.137 -	jne	NoVCPI
   3.138 -	movb	$0x46, %ah		// version
   3.139 -	int	$0x67
   3.140 -	testb	%ah, %ah
   3.141 -	jne	NoVCPI
   3.142 -	cmpb	$0x40, %al		// >= 4.0 ?
   3.143 -	jb	NoVCPI
   3.144 -	movw	$0xDE00, %ax		// vcpi present ?
   3.145 -	int	$0x67
   3.146 -	testb	%ah, %ah
   3.147 -	jne	NoVCPI
   3.148 -#endif
   3.149 +	movb	$EXESTR(vm86modemsg), %dl
   3.150  realmode:
   3.151 -	movw	$0x100, %si
   3.152 -	lodsl
   3.153 -	xchgl	%eax, %edx
   3.154 -	orl	%edx, %edx
   3.155 -	jz	skip
   3.156 -	movw	$0x7FDC/4, %cx
   3.157 -chklp:
   3.158 -	lodsl
   3.159 -	addl	%eax, %edx
   3.160 -	loop	chklp
   3.161 -	orl	%edx, %edx
   3.162 -	movb	$EXESTR(chkerr), %dl
   3.163 -	jne	goabort
   3.164 -skip:
   3.165 -	movb	$EXESTR(realmodemsg), %dl
   3.166 -	smsww	%ax
   3.167 -	andb	$1, %al
   3.168 -	jz	isrealmode
   3.169 -	movb	$EXESTR(vm86modemsg), %dl
   3.170 -isrealmode:
   3.171  	call	puts
   3.172  	movw	EXEADRS(comstart), %ax			// .com address
   3.173 -
   3.174  	cld
   3.175  	movw	$moveend-move, %cx
   3.176  	movw	$EXEADRS(move), %si
     4.1 --- a/syslinux/stuff/iso2exe/bootlinux.c	Fri Dec 14 15:53:34 2012 +0000
     4.2 +++ b/syslinux/stuff/iso2exe/bootlinux.c	Fri Dec 14 15:43:12 2012 +0100
     4.3 @@ -162,17 +162,23 @@
     4.4  		xor	si, si
     4.5  		xor	di, di
     4.6  		rep
     4.7 -		  movsw
     4.8 +		  movsw			// move 64K data
     4.9  		push	es
    4.10  		pop	ds
    4.11  		push	es
    4.12  		pop	ss
    4.13 +		mov	ch, #0x70
    4.14 +		mov	es, cx
    4.15 +		mov	ch, #0x80
    4.16 +		rep
    4.17 +		 seg	cs
    4.18 +		  movsw			// move 64K code
    4.19  		popa
    4.20 -		jmpi	relocated, #0x8000
    4.21 +		jmpi	relocated, #0x7000
    4.22  relocated:
    4.23  #endasm
    4.24  				kernelmem.base = 0x10000;
    4.25 -				if (syssize > 0x70000)
    4.26 +				if (syssize > 0x60000)	/* 384K max */
    4.27  #endif
    4.28  				die("Not a bzImage format");
    4.29  			}
     5.1 --- a/syslinux/stuff/iso2exe/init	Fri Dec 14 15:53:34 2012 +0000
     5.2 +++ b/syslinux/stuff/iso2exe/init	Fri Dec 14 15:43:12 2012 +0100
     5.3 @@ -15,7 +15,7 @@
     5.4  gettazboot()
     5.5  {
     5.6  	echo "Creating $(basename $1) ..."
     5.7 -	O=$(($(get 36 /mnt/$ISO 2) - 0xE0))
     5.8 +	O=$(($(get 34 /mnt/$ISO 2) - 0xE0))
     5.9  	L=$((0x8000 - $(get 28 /mnt/$ISO 2) - $O))
    5.10  	S=$((32+$L))
    5.11  	P=$((($S+511)/512))
    5.12 @@ -157,7 +157,7 @@
    5.13  You can start SliTaz with \\slitaz\\boot\\tazboot.exe\n\n
    5.14  To uninstall SliTaz, you have only to remove this directory.
    5.15  The file \\boot.ini or \\config.sys may be modified too.\n\n
    5.16 -To do a traditional installation with disk partitioning -
    5.17 +To do a traditional installation with disk partitioning,
    5.18  start SliTaz Live with 'SliTaz RAM boot' menu.\n
    5.19  " 16 70
    5.20  	[ $? -eq 0 -a -x /usr/sbin/mount.posixovl ] || return
    5.21 @@ -172,7 +172,7 @@
    5.22  		--title " SliTaz bootloader for DOS " \
    5.23  		--yes-label "Install" --yesno \
    5.24  "\nThe file TAZBOOT.EXE will be created in the top directory. It supports
    5.25 -a bzImage linux kernel, multiple initramfs', a kernel command line and
    5.26 +a bzImage linux kernel, multiple initramfs, a kernel command line and
    5.27  an ISO image file loopback (retrieves files from an ISO file).\n\n
    5.28  Usage: tazboot.exe [[@commands]|[kernel=<bzimage>] 
    5.29  [initrd=<rootfs>[,<rootfs2>...]] [iso=<isofile>] cmdline args ...]\n\n
    5.30 @@ -189,6 +189,142 @@
    5.31  	gettazboot /mnt/tazboot.exe
    5.32  }
    5.33  
    5.34 +md5()
    5.35 +{
    5.36 +	( cd /media/cdrom ; md5sum -c md5sum ) | tee /tmp/data
    5.37 +	$DIALOG --clear \
    5.38 +		--title " Checked files " \
    5.39 +		--textbox /tmp/data 24 78
    5.40 +	rm -f /tmp/data
    5.41 +}
    5.42 +
    5.43 +readme()
    5.44 +{
    5.45 +	$DIALOG --clear \
    5.46 +		--title " Readme " \
    5.47 +		--textbox /media/cdrom/README 24 78
    5.48 +}
    5.49 +
    5.50 +bootlog()
    5.51 +{
    5.52 +	$DIALOG --clear \
    5.53 +		--title " Linux boot messages " \
    5.54 +		--textbox /tmp/dmesg 24 78
    5.55 +}
    5.56 +
    5.57 +memtest()
    5.58 +{
    5.59 +	$DIALOG --clear \
    5.60 +		--title " Memtest86 " \
    5.61 +		--yes-label "Install" --yesno \
    5.62 +"\nMemtest86 is a thorough, stand alone memory test for x86 architecture
    5.63 +computers. BIOS based memory tests are a quick, cursory check and often
    5.64 +miss many of the failures that are detected by Memtest86.\n
    5.65 +" 12 70
    5.66 +	[ $? -eq 0 ] || return
    5.67 +	cp /media/cdrom/boot/memtest /mnt
    5.68 +}
    5.69 +
    5.70 +fdmemtest()
    5.71 +{
    5.72 +	$DIALOG --clear \
    5.73 +		--title " Create a Memtest86 boot floppy " \
    5.74 +		--yes-label "Create floppy" --yesno \
    5.75 +"\nMemtest86 is a thorough, stand alone memory test for x86 architecture
    5.76 +computers. BIOS based memory tests are a quick, cursory check and often
    5.77 +miss many of the failures that are detected by Memtest86.\n\n
    5.78 +Please insert a blank disk in floppy drive.\n
    5.79 +" 12 70
    5.80 +	[ $? -eq 0 ] || return
    5.81 +	dd if=/media/cdrom/boot/memtest of=/dev/fd0
    5.82 +}
    5.83 +
    5.84 +gpxe()
    5.85 +{
    5.86 +	$DIALOG --clear \
    5.87 +		--title " SliTaz Web boot " \
    5.88 +		--yes-label "Install" --yesno \
    5.89 +"\nBoot your operating system from the internet and enjoy a full system
    5.90 +working entirely in RAM with speed and stability in mind. The Linux Kernel
    5.91 +and the complete SliTaz compressed root filesystem will be loaded into RAM
    5.92 +from the Web using PXE and HTTP protocols.\n
    5.93 +" 12 70
    5.94 +	[ $? -eq 0 ] || return
    5.95 +	cp /media/cdrom/boot/gpxe /mnt
    5.96 +}
    5.97 +
    5.98 +fdgpxe()
    5.99 +{
   5.100 +	$DIALOG --clear \
   5.101 +		--title " Create a SliTaz Web boot floppy " \
   5.102 +		--yes-label "Create floppy" --yesno \
   5.103 +"\nBoot your operating system from the internet and enjoy a full system
   5.104 +working entirely in RAM with speed and stability in mind. The Linux Kernel
   5.105 +and the complete SliTaz compressed root filesystem will be loaded into RAM
   5.106 +from the Web using PXE and HTTP protocols.\n\n
   5.107 +Please insert a blank disk in floppy drive.\n
   5.108 +" 12 70
   5.109 +	[ $? -eq 0 ] || return
   5.110 +	dd if=/media/cdrom/boot/gpxe of=/dev/fd0
   5.111 +}
   5.112 +
   5.113 +cdfile()
   5.114 +{
   5.115 +	[ -s /media/cdrom/$1 ] && echo -en "$2	${3// /.}"
   5.116 +}
   5.117 +
   5.118 +usbkey()
   5.119 +{
   5.120 +	$DIALOG --clear \
   5.121 +		--title " Create a SliTaz USB key " \
   5.122 +		--yes-label "Continue" --yesno \
   5.123 +"\nUnlike a hard drive install, the filesystem is kept in a compressed
   5.124 +rootfs.gz. The filesystem is loaded entirely into memory upon boot.
   5.125 +This should increase responsiveness, protect the filesystem against
   5.126 +accidental corruption and reduce read/writes to the USB drive.
   5.127 +Once setup, the tazusb utility can rewrite the root filesystem
   5.128 +with any changes you have made since booting up, 
   5.129 +giving the effective benefits of a hard drive install.\n\n
   5.130 +/home is mounted on boot using the UUID of your particular flash drive.
   5.131 +Unlike a device name, the UUID has the benefit of never changing from machine
   5.132 +to machine.\n\n
   5.133 +Please plug your USB stick in now.\n 
   5.134 +" 18 70
   5.135 +	[ $? -eq 0 ] || return
   5.136 +	DEV="$(grep -l 1 /sys/block/*/removable | \
   5.137 +		sed 's|/sys/block/\(.*\)/removable|\1|')"
   5.138 +	[ -n "$DEV" ] || return
   5.139 +	exec 3>&1
   5.140 +	sleep 5
   5.141 +	device=`$DIALOG  --clear \
   5.142 +	--title " Select your USB key " \
   5.143 +	--menu "\nPlease select the USB key according its known size.\n\n" \
   5.144 +	14 70 4 \
   5.145 +	$(for i in $DEV ; do
   5.146 +		echo "/dev/$i $(( $(cat /sys/block/$i/size) / 1024 ))MB"	 
   5.147 +	done) \
   5.148 +	2>&1 1>&3`
   5.149 +	retval=$?
   5.150 +	exec 3>&-
   5.151 +	[ $retval -eq 0 ] || continue
   5.152 +	exec 3>&1
   5.153 +	format=`$DIALOG  --clear \
   5.154 +	--title " Select the filesystem " \
   5.155 +	--menu "\nPlease select the filesystem type to create.\n\n\
   5.156 +The filesystem creation will erase all the datas \
   5.157 +in the USB key." 14 70 4 \
   5.158 +		"none"	"Do not erase the USB key" \
   5.159 +		"ext3"	"Ext3 journaling filesystem" \
   5.160 +		"ext2"	"Ext2 filesystem" \
   5.161 +		"fat32"	"Window FAT32 filesystem" \
   5.162 +	2>&1 1>&3`
   5.163 +	retval=$?
   5.164 +	exec 3>&-
   5.165 +	[ $retval -eq 0 ] || continue
   5.166 +	[ "$format" != "none" ] && tazusb format $device "SliTaz" $format
   5.167 +	tazusb gen-iso2usb /mnt/$ISO $device
   5.168 +}
   5.169 +
   5.170  text()
   5.171  {
   5.172  	umount -d /media/cdrom
   5.173 @@ -220,9 +356,15 @@
   5.174  	/sbin/poweroff -f
   5.175  }
   5.176  
   5.177 +shell()
   5.178 +{
   5.179 +	/sbin/getty -n -l /bin/ash 38400 tty1
   5.180 +}
   5.181 +
   5.182  [ -x /usr/sbin/mount.posixovl ] ||
   5.183  mv /usr/sbin/mount.posixovl.iso2exe /usr/sbin/mount.posixovl
   5.184  mount -t proc /proc /proc
   5.185 +dmesg > /tmp/dmesg
   5.186  ISO="$(getarg iso | sed 's/.://;s|\\|/|g')"
   5.187  getiso
   5.188  case "$(basename $ISO | tr [A-Z] [a-z])$(getarg mode)" in
   5.189 @@ -235,14 +377,22 @@
   5.190  	exec 3>&1
   5.191  	value=`$DIALOG  --clear \
   5.192  	--title " Welcome to SliTaz " \
   5.193 -	--menu "\nPlease select" 15 70 7 \
   5.194 -		"live"		"SliTaz RAM boot" \
   5.195 -		"text"		"SliTaz RAM boot (text mode only)" \
   5.196 -		"install"	"Hard disk installation" \
   5.197 -		"tazboot"	"Get tazboot.exe Linux loader" \
   5.198 -		"reboot"	"Restart the computer" \
   5.199 -		"poweroff"	"Power off" \
   5.200 -		"ash"		"Shell prompt" \
   5.201 +	--menu "\nPlease select" 17 70 9 \
   5.202 +			"live"		"SliTaz RAM boot" \
   5.203 +			"text"		"SliTaz RAM boot (text mode only)" \
   5.204 +$(cdfile README		"readme"	"Show the README file") \
   5.205 +$(cdfile md5sum		"md5"		"Check ISO files") \
   5.206 +			"install"	"Hard disk installation" \
   5.207 +			"usbkey"	"USB key installation" \
   5.208 +			"tazboot"	"Get tazboot.exe Linux loader" \
   5.209 +$(cdfile Xboot/memtest	"memtest"	"Get Memtest86") \
   5.210 +$(cdfile boot/memtest	"fdmemtest"	"Create a Memtest86 boot floppy") \
   5.211 +$(cdfile Xboot/gpxe	"gpxe"		"Get SliTaz Web boot utility") \
   5.212 +$(cdfile boot/gpxe	"fdgpxe"	"Create a SliTaz Web boot floppy") \
   5.213 +			"reboot"	"Restart the computer" \
   5.214 +			"poweroff"	"Power off" \
   5.215 +			"bootlog"	"Linux boot messages" \
   5.216 +			"shell"		"Shell prompt" \
   5.217  	2>&1 1>&3`
   5.218  	retval=$?
   5.219  	exec 3>&-
     6.1 --- a/syslinux/stuff/iso2exe/iso2exe.sh	Fri Dec 14 15:53:34 2012 +0000
     6.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh	Fri Dec 14 15:43:12 2012 +0100
     6.3 @@ -66,8 +66,17 @@
     6.4  	OFS=$(( $OFS - $SIZE ))
     6.5  	printf "Adding DOS boot file at %04X...\n" $OFS
     6.6  	$0 --get lzcom.bin boot.com.lzma | ddq of=$1 bs=1 seek=$OFS conv=notrunc
     6.7 -	store 36 $(($OFS+0xE0)) $1
     6.8 +	store 34 $(($OFS+0xE0)) $1
     6.9  	store 30 ${RANDOM:-0} $1
    6.10 +	i=34
    6.11 +	n=0
    6.12 +	echo -n "Adding checksum..."
    6.13 +	while [ $i -lt 32768 ]; do
    6.14 +		n=$(($n + $(od -j $i -N 2 -t u2 -An $1) ))
    6.15 +		i=$(($i + 2))
    6.16 +	done
    6.17 +	store 32 -$n $1
    6.18 +	echo " done."
    6.19  }
    6.20  
    6.21  main $@ <<EOT