slitaz-forge rev 366

mirror/floppies: updates from web site, add loram for 1.0 & 2.0
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu May 09 18:16:08 2013 +0200 (2013-05-09)
parents 28c1b40cf593
children 3d98f09d077b
files mirror/floppies/4.0/description.html mirror/floppies/builder/bootloader mirror/floppies/builder/index.html mirror/floppies/builder/index.php mirror/floppies/download.php mirror/floppies/floppies mirror/floppies/loram-1.0/description.html mirror/floppies/loram-1.0/title mirror/floppies/loram-2.0/description.html mirror/floppies/loram-2.0/title mirror/floppies/loram-3.0/title mirror/floppies/loram-4.0/description.html mirror/floppies/mkindex.sh
line diff
     1.1 --- a/mirror/floppies/4.0/description.html	Wed May 01 10:50:21 2013 +0200
     1.2 +++ b/mirror/floppies/4.0/description.html	Thu May 09 18:16:08 2013 +0200
     1.3 @@ -3,7 +3,7 @@
     1.4  </p>
     1.5  <ul>
     1.6    <li>
     1.7 -  <b>base</b> needs 48Mb of RAM and 7 floppies: <i>fd001.img</i> to <i>fd006.img</i>.<br />
     1.8 +  <b>base</b> needs 48Mb of RAM and 6 floppies: <i>fd001.img</i> to <i>fd006.img</i>.<br />
     1.9    base provides the minimum slitaz distribution subset in text mode. 
    1.10    </li>
    1.11    <li>
     2.1 --- a/mirror/floppies/builder/bootloader	Wed May 01 10:50:21 2013 +0200
     2.2 +++ b/mirror/floppies/builder/bootloader	Thu May 09 18:16:08 2013 +0200
     2.3 @@ -9,187 +9,274 @@
     2.4  usage()
     2.5  {
     2.6  cat <<EOT
     2.7 -Usage: $0 bzImage [--prefix image_prefix] [--cmdline 'args']
     2.8 +Usage: $0 bzImage [--prefix image_prefix] [--info file ]
     2.9 +       [--format 1200|1440|1680|1920|2880|... ] [--mem mb]
    2.10         [--rdev device] [--video mode] [--flags rootflags] [--tracks cnt]
    2.11 -       [--format 1440|1680|1920|2880 ] [--initrd initrdfile]...
    2.12 +       [--cmdline 'args'] [--dont-edit-cmdline] [--no-syssize-fix]
    2.13 +       [--address-initrd address] [--initrd initrdfile]...
    2.14  
    2.15 -Default values: --format 1440 --tracks 80 --prefix floppy.
    2.16 +Default values: --format 1440 --tracks 80 --rdev /dev/fd0 --prefix floppy. --mem 16
    2.17  
    2.18  Example:
    2.19 -$0 /boot/vmlinuz-2.6.30.6 --rdev /dev/ram0 --video -3 --cmdline 'rw lang=fr_FR kmap=fr-latin1 laptop autologin' --initrd /boot/rootfs.gz --initrd ./myconfig.gz
    2.20 +$0 /boot/bzImage --rdev /dev/ram0 --video -3 --cmdline 'rw lang=fr_FR kmap=fr-latin1 laptop autologin' --initrd /boot/rootfs.gz --initrd ./myconfig.gz
    2.21  EOT
    2.22  exit 1
    2.23  }
    2.24  
    2.25  KERNEL=""
    2.26  INITRD=""
    2.27 +ADRSRD=""
    2.28  CMDLINE=""
    2.29  PREFIX="floppy."
    2.30  FORMAT="1440"
    2.31  RDEV=""
    2.32  VIDEO=""
    2.33  FLAGS=""
    2.34 -TRACKS=""
    2.35 +TRACKS="80"
    2.36 +MEM="16"
    2.37 +NOEDIT=""
    2.38 +NOSYSSIZEFIX=""
    2.39 +INFOFILE=""
    2.40  DEBUG=""
    2.41  while [ -n "$1" ]; do
    2.42 -	case "$1" in
    2.43 -	--c*|-c*)  CMDLINE="$2"; shift;;
    2.44 -	--i*|-i*)  INITRD="$INITRD $2"; shift;;
    2.45 -	--p*|-p*)  PREFIX="$2"; shift;;
    2.46 -	--fo*|-f*) FORMAT="$2"; shift;;
    2.47 -	--fl*)     FLAGS="$2"; shift;;	# 1 read-only, 0 read-write
    2.48 -	--r*|-r*)  RDEV="$2"; shift;;	# /dev/???
    2.49 -	--v*|-v*)  VIDEO="$2"; shift;;	# -3 .. n
    2.50 -	--t*|-t*)  TRACKS="$2"; shift;; # likely 81 .. 84
    2.51 -	--debug)   DEBUG="1";;
    2.52 +	case "${1/--/-}" in
    2.53 +	-c*) CMDLINE="$2"; shift;;
    2.54 +	-inf*) INFOFILE="$2"; shift;;
    2.55 +	-i*) INITRD="$INITRD $2"; shift;;
    2.56 +	-a*) ADRSRD="$2"; shift;;
    2.57 +	-h*) HEAP="$2"; shift;;
    2.58 +	-l*) LOADERTYPE="$2"; shift;;
    2.59 +	-p*) PREFIX="$2"; shift;;
    2.60 +	-fl*)FLAGS="$2"; shift;;	# 1 read-only, 0 read-write
    2.61 +	-f*) FORMAT="$2"; shift;;
    2.62 +	-m*) MEM="$(echo $2 | sed 's/[^0-9]//g')"; shift;;
    2.63 +	-r*) RDEV="$2"; shift;;
    2.64 +	-v*) VIDEO="$2"; shift;;	# -3 .. n
    2.65 +	-t*) TRACKS="$2"; shift;; # likely 81 .. 84
    2.66 +	-n*) NOSYSSIZEFIX="1";;
    2.67 +	-debug) DEBUG="1";;
    2.68 +	-d*) NOEDIT="1";;
    2.69  	*) KERNEL="$1";;
    2.70  	esac
    2.71  	shift
    2.72  done
    2.73  [ -n "$KERNEL" -a -f "$KERNEL" ] || usage
    2.74 -if [ -n "$TRACKS" ]; then
    2.75 -	if [ $(( $FORMAT % $TRACKS )) -ne 0 ]; then
    2.76 -		echo "Invalid track count for format $FORMAT."
    2.77 -		usage
    2.78 -	fi
    2.79 +while [ -L "$KERNEL" ]; do KERNEL="$(readlink "$KERNEL")"; done
    2.80 +if [ $(( $FORMAT % $TRACKS )) -ne 0 ]; then
    2.81 +	echo "Invalid track count for format $FORMAT."
    2.82 +	usage
    2.83  fi
    2.84 +[ 0$MEM -lt 4  ] && MEM=4
    2.85 +[ $MEM -gt 16 ] && MEM=16
    2.86  
    2.87 -# write a 16 bits data
    2.88 -# usage: store16 offset data16 file
    2.89 -store16()
    2.90 +ddq() { dd $@ 2> /dev/null; }
    2.91 +
    2.92 +patch()
    2.93  {
    2.94 -	echo $(( $2 + 0x10000 )) | \
    2.95 -		awk '{ printf "\\\\x%02X\\\\x%02X",$1%256,($1/256)%256 }' | \
    2.96 -		xargs echo -en | \
    2.97 -	dd bs=2 conv=notrunc of=$3 seek=$(( $1 / 2 )) 2> /dev/null
    2.98 -	[ -n "$DEBUG" ] && printf "store16(%04X) = %04X\n" $1 $2 1>&2
    2.99 +	echo -en $(echo ":$2" | sed 's/:/\\x/g') | \
   2.100 +		ddq bs=1 conv=notrunc of=$3 seek=$((0x$1))
   2.101 +	[ -n "$DEBUG" ] && echo "patch $1 $2		$4" 1>&2
   2.102  }
   2.103  
   2.104 -# write a 32 bits data
   2.105 -# usage: storelong offset data32 file
   2.106 -storelong()
   2.107 +# usage: store bits offset data file
   2.108 +store()
   2.109  {
   2.110 -	echo $2 | awk '{ printf "\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X",
   2.111 -		 $1%256,($1/256)%256,($1/256/256)%256,($1/256/256/256)%256 }' | \
   2.112 -		xargs echo -en | \
   2.113 -		dd bs=4 conv=notrunc of=$3 seek=$(( $1 / 4 )) 2> /dev/null
   2.114 -	[ -n "$DEBUG" ] && printf "storelong(%04X) = %08X\n" $1 $2 1>&2
   2.115 +	n=$3; for i in $(seq 8 8 $1); do
   2.116 +		printf '\\\\x%02X' $(($n & 255))
   2.117 +		n=$(($n >> 8))
   2.118 +	done | xargs echo -en | ddq bs=1 conv=notrunc of=$4 seek=$(($2))
   2.119 +	[ -n "$DEBUG" ] && printf "store%d(%03X) = %0$(($1/4))X	%s\n" $1 $2 $3 "$5" 1>&2
   2.120  }
   2.121  
   2.122 -# read a 32 bits data
   2.123  # usage: getlong offset file
   2.124  getlong()
   2.125  {
   2.126 -	dd if=$2 bs=1 skip=$(( $1 )) count=4 2> /dev/null | \
   2.127 -		hexdump -e '"" 1/4 "%d" "\n"'
   2.128 +	ddq if=$2 bs=1 skip=$(($1)) count=4 | hexdump -e '"" 1/4 "%d" "\n"'
   2.129 +}
   2.130 +
   2.131 +error()
   2.132 +{
   2.133 +	echo $@ 1>&2
   2.134 +	rm -f $bs
   2.135 +	exit 1
   2.136  }
   2.137  
   2.138  floppyset()
   2.139  {
   2.140  	# bzImage offsets
   2.141 -	CylinderCount=496
   2.142  	SetupSzOfs=497
   2.143  	FlagsOfs=498
   2.144 -	SyssizeOfs=500
   2.145  	VideoModeOfs=506
   2.146  	RootDevOfs=508
   2.147 -	CodeAdrOfs=0x214
   2.148 +	Magic=0x202
   2.149  	RamfsAdrOfs=0x218
   2.150  	RamfsLenOfs=0x21C
   2.151 -	ArgPtrOfs=0x228
   2.152  
   2.153  	# boot+setup address
   2.154  	SetupBase=0x90000
   2.155  
   2.156 -	stacktop=0x9E00
   2.157 -
   2.158  	bs=/tmp/bs$$
   2.159  
   2.160  	# Get and patch boot sector
   2.161 -	# See  http://hg.slitaz.org/wok/raw-file/711d076b277c/linux/stuff/linux-header-2.6.34.u
   2.162 -	dd if=$KERNEL bs=512 count=1 of=$bs 2> /dev/null
   2.163 -	uudecode <<EOT | dd of=$bs conv=notrunc 2> /dev/null
   2.164 +	# See http://hg.slitaz.org/wok/raw-file/66e38bd6a132/linux/stuff/linux-header.u
   2.165 +	[ -n "$DEBUG" ] && echo "Read bootsector..." 1>&2
   2.166 +	ddq if=$KERNEL bs=512 count=1 of=$bs
   2.167 +
   2.168 +	[ $(( $(getlong 0x1FE $bs) & 0xFFFF )) -eq 43605 ] ||
   2.169 +		error "Not bootable"
   2.170 +	
   2.171 +	uudecode <<EOT | ddq of=$bs conv=notrunc
   2.172  begin-base64 644 -
   2.173 -/L+6nWgAkAcGF4n8McC5HQDzq1sfD6mg8X1ABlfFd3ixBvOlZWaPR3gGH8ZF
   2.174 -+D/6l1hB6DQBvgACA3QO6HYBWwseKAJ0LFNH6AoBXuhmAbAgzRCwCM0QTuhl
   2.175 -ATwIdAOIBK05NigCdPDoPgE8CnXgiHz+ieb/TBD/TBi/9AGBTRz/gMdFMACc
   2.176 -sBCxBUi0k4lEHLABiUQUmGaY0+BIZgMFZtPoaAAQB7+AACn4nHMCAccx21BW
   2.177 -6J4AXrkAgLSH/kQczRVYnXfcoRoCvxwCsQk4RBxyuJPNE+oAACCQsEYoyL7b
   2.178 -AejSAF3rI4D5E3IEOMF3a4D+AnIEOOZ3bGCB/QAGdCoGUlFTlrQCULEGtQTB
   2.179 -xQSwDyHoBJAnFEAn6IwA/s117LAgzRDitOiWAJjNE2FSUCjIdwKwAZg5+HIC
   2.180 -ifhQtALNE5VeWFpyoJVBjuGAxwJPdFFOdfSM4ZU4wXVFiMj+xrEBOOZ1O4j0
   2.181 -/sW2AID9UHIwOi7wAXIqtQBgvt4B/kQMU+gxAFvoOAB1FlKYzRO4AQLNE1rQ
   2.182 -1Dpk/nXqRgjkdeVh64sWB7AxLAO0DrsHAM0QPA1088OwDejv/6wIwHX4w79s
   2.183 -BLFbZQINuA0BZToNdArNFnT0mM0Wju9Hw1g6AEluc2VydCBkaXNrIDEuBw0A
   2.184 -AA==
   2.185 +/L+4nWgAkBeJ/BYHMcC5HgDzq1sfD6Gg8X1AxXd4BlexBvOlFh9kZo9HeMZF
   2.186 ++D/6l1hB6DwBvgACgUwQIIDGRCWbA3QO6GoBWwseKAJ0LFNH6AYBXuhaAbAg
   2.187 +zRCwCM0QTuhZATwIdAOIBK05NigCdPDoMgE8CnXgiHz+W4nm/0gQxkAVk4Dz
   2.188 +CHX0u/QBoRUCsQVmix9mS2bT60NoAAgHv4AAiXwTiUQbAfjR7yn7nHMCAd9Q
   2.189 +V1ZTMdvongBbXlmGzbSHFgfNFVidd9ChGQK7HAKxCTlEG3K6l80T6gAAIJCw
   2.190 +RijIvtgB6MoAXesjgPkTcgQ4wXdrgP4CcgQ45ndsYIH9AAZ0KgZSUVOWtAJQ
   2.191 +sQa1BMHFBLAPIegEkCcUQCfohAD+zXXssCDNEOK06I4AmM0TYVJQKMh3ArAB
   2.192 +mDn4cgKJ+FC0As0TlV5YWnKglUGO6YDHAk90S0519IzplTjBdT+IyP7GsQE4
   2.193 +5nU1iPT+xYD9ULYAdSq1AGC+2wH+RAxT6C8AW+g2AHUWUpjNE7gBAs0TWtDU
   2.194 +OmT+depGCOR15WHrkbAxLAO0DrsHAM0QPA1088OwDejv/6wIwHX4w79sBLFb
   2.195 +ZAINuA0BZDoNdArNFnT0mM0WjudHw1g6AEluc2VydCBkaXNrIDEHDQA=
   2.196  ====
   2.197  EOT
   2.198 +	# Get setup
   2.199 +	setupsz=$(( $(getlong $SetupSzOfs $bs) & 0xFF ))
   2.200 +	if [ $setupsz -eq 0 ]; then
   2.201 +		setupsz=4
   2.202 +		store 8 $SetupSzOfs $setupsz $bs "setup size $setupsz"
   2.203 +	fi
   2.204 +	[ -n "$DEBUG" ] && echo "Read setup ($setupsz sectors) ..." 1>&2
   2.205 +	ddq if=$KERNEL bs=512 skip=1 count=$setupsz >> $bs
   2.206  
   2.207 -	# Get setup
   2.208 -	setupsz=$(getlong $SetupSzOfs $bs)
   2.209 -	setupszb=$(( $setupsz & 255 ))
   2.210 -	dd if=$KERNEL bs=512 skip=1 count=$setupszb 2> /dev/null >> $bs
   2.211 +	Version=$(( $(getlong 0x206 $bs) & 0xFFFF ))
   2.212 +	[ $(getlong $Magic $bs) -ne 1400005704 ] && Version=0
   2.213 +	feature=""
   2.214 +	while read prot kern info ; do
   2.215 +		[ $Version -lt $((0x$prot)) ] && continue
   2.216 +		feature="features $prot starting from kernel $kern "
   2.217 +	done <<EOT
   2.218 +200	1.3.73	kernel_version, bzImage, initrd, loadflags/type_of_loader
   2.219 +201	1.3.76	heap_end_ptr
   2.220 +202	2.4.0	new cmdline
   2.221 +204	2.6.14	long syssize
   2.222 +EOT
   2.223 +	[ -n "$DEBUG" ] && printf "Protocol %X $feature\n" $Version 1>&2
   2.224 +	
   2.225 +	# Old kernels need bootsector patches to disable rescent features
   2.226 +	while read minversion maxversion offset bytes rem; do
   2.227 +		[ $Version -gt $(( 0x$maxversion )) ] && continue
   2.228 +		[ $Version -lt $(( 0x$minversion )) ] && continue
   2.229 +		patch $offset $bytes $bs "$rem"
   2.230 +	done <<EOT
   2.231 +000 1FF 08D	B8:00:01			force zImage (movw \$0x100, %ax)
   2.232 +000 1FF 0CB	EB:0B				skip initrd code 
   2.233 +000 201 01E	EB:1E:00:00:00:00		room for the cmdline magic
   2.234 +000 201 036	BE:00:00:E8:76:01:EB:0A:06:57:B1:06:F3:A5:EB:DE	code in cmdline magic moved
   2.235 +000 1FF 039	90:90:90			no kernel version
   2.236 +000 201 04B	22:00				old cmdline ptr 1
   2.237 +000 201 06D	22:00				old cmdline ptr 2
   2.238 +000 203 1F6	00:00 				syssize32
   2.239 +200 FFF 210	FF				type_of_loader=FF
   2.240 +201 FFF 224	00:9B				heap_end_ptr
   2.241 +EOT
   2.242 +	if [ $Version -lt 514 ]; then
   2.243 +		version_string=$((0x200 + ($(getlong 0x20E $bs) & 65535) ))
   2.244 +		store	16	0x0037	$version_string	$bs version_string
   2.245 +	fi
   2.246 +	if [ $Version -ge 512 -a $(getlong 0x214 $bs) -ge $((0x100000)) ]; then 
   2.247 +		patch	211	81	$bs	loadflags=can_use_heap+loadhigh
   2.248 +		patch	09D	10	$bs	LOADSEG=0x1000
   2.249 +		patch	0A0	00:01	$bs	LOADSZ=0x10000
   2.250 +	fi
   2.251 +	[ -n "$CMDLINE" ] || patch 04D EB $bs "No cmdline"
   2.252 +	[ -n "$NOEDIT" ] && patch 059 0D:46:EB:14 $bs 'mov CR,%al ; inc %si; jmp putal'
   2.253 +	[ 1$TRACKS -ne 180 ] &&	store	8	0x171		$TRACKS $bs TRACKS
   2.254 +	
   2.255 +	[ -n "$FLAGS" ] &&	store	16	$FlagsOfs	$FLAGS $bs FLAGS
   2.256 +	[ -n "$VIDEO" ] &&	store	16	$VideoModeOfs	$VIDEO $bs VIDEO
   2.257 +	[ -n "$RDEV" ] || case "$FORMAT" in
   2.258 +		1200)	RDEV=0x0208 ;;
   2.259 +		1440)	RDEV=0x021C ;;
   2.260 +		2880)	RDEV=0x0220 ;;
   2.261 +		*)	RDEV=0x0200 ;;
   2.262 +	esac
   2.263 +	while [ -L "$RDEV" ]; do RDEV="$(readlink "$RDEV")"; done
   2.264 +	[ -b "$RDEV" ] && RDEV=$(stat -c '0x%02t%02T' $RDEV 2> /dev/null)
   2.265 +	store 16 $RootDevOfs $RDEV $bs RDEV
   2.266  
   2.267 -	if [ -n "$TRACKS" ]; then
   2.268 -		[ -n "$DEBUG" ] && echo -n "--tracks " 1>&2
   2.269 -		n=$(getlong $CylinderCount $bs)
   2.270 -		store16 $CylinderCount $(( ($n & -256) + $TRACKS )) $bs
   2.271 -	fi
   2.272 -	if [ -n "$FLAGS" ]; then
   2.273 -		[ -n "$DEBUG" ] && echo -n "--flags " 1>&2
   2.274 -		store16 $FlagsOfs $FLAGS $bs
   2.275 -	fi
   2.276 -	if [ -n "$VIDEO" ]; then
   2.277 -		[ -n "$DEBUG" ] && echo -n "--video " 1>&2
   2.278 -		store16 $VideoModeOfs $VIDEO $bs
   2.279 -	fi
   2.280 -	if [ -n "$RDEV" ]; then
   2.281 -		if [ "$(dirname $RDEV)" == "/dev" -a -b $RDEV ]; then
   2.282 -			[ -n "$DEBUG" ] && echo -n "--rdev " 1>&2
   2.283 -			RDEV=$(stat -c '0x%02t%02T' $RDEV 2> /dev/null)
   2.284 -			store16 $RootDevOfs $RDEV $bs
   2.285 +	[ $FORMAT -lt 1440 ] && store 8 0xEF  16	 $bs	1.2M
   2.286 +	[ $FORMAT -lt 1200 ] && store 8 0xEF  10	 $bs	720K
   2.287 +	[ $FORMAT -lt 720  ] && store 8 0x171 40	 $bs	360K
   2.288 +	[ $FORMAT -lt 360  ] && store 8 0xEF  9		 $bs	320K
   2.289 +	[ $FORMAT -lt 320  ] && store 8 0xF8  2		 $bs	160K
   2.290 +	
   2.291 +	# Info text after setup
   2.292 +	if [ -s "$INFOFILE" ]; then
   2.293 +		patch	048	9a:00:00:00:90	$bs	lcall displayinfo
   2.294 +		uudecode >$bs.infotext <<EOT
   2.295 +begin-base64 644 -
   2.296 +MdsGYI7D6AAAXoHGSgCJ8MHoCUii8QGwDbQOuwcAzRCsPAx1I79sBLFbJgIN
   2.297 +uBsBJjoNdAnNFnT0mM0Wjsc8IHPjPBt0BuvPCMB1zWEHCx4oAss=
   2.298 +====
   2.299 +EOT
   2.300 +		cat "$INFOFILE" >>$bs.infotext
   2.301 +		if [ $Version -lt 514 ]; then
   2.302 +			store 16 0x050 0x0022 $bs.infotext 
   2.303  		fi
   2.304 +		ddq if=/dev/zero bs=512 count=1 >>$bs.infotext
   2.305 +		n=$(($(stat -c %s $bs.infotext)/512))
   2.306 +		ddq if=$bs.infotext count=$n bs=512 >> $bs
   2.307 +		rm -f $bs.infotext
   2.308 +		store 8 0x1F1  $(($setupsz+$n))	 $bs	update setup size
   2.309 +		store 8 0x04A  $((2+2*$setupsz)) $bs	update displayinfo call
   2.310  	fi
   2.311  
   2.312 -	# Store cmdline after setup
   2.313 +	# Store cmdline after setup for kernels >= 0.99
   2.314  	if [ -n "$CMDLINE" ]; then
   2.315 -		[ -n "$DEBUG" ] && echo -n "--cmdline '$CMDLINE' " 1>&2
   2.316 -		echo -n "$CMDLINE" | dd bs=512 count=1 conv=sync 2> /dev/null >> $bs
   2.317 -		storelong $ArgPtrOfs $(( $SetupBase + $stacktop )) $bs
   2.318 +		echo -n "$CMDLINE" | ddq bs=512 count=1 conv=sync >> $bs
   2.319 +		CmdlineOfs=0x9E00	# Should be in 0x8000 .. 0xA000
   2.320 +		ArgPtrOfs=0x228
   2.321 +		ArgPtrVal=$(( $SetupBase + $CmdlineOfs ))
   2.322 +		if [ $Version -lt 514 ]; then
   2.323 +			ArgPtrOfs=0x0020
   2.324 +			ArgPtrVal=$(( 0xA33F + ($CmdlineOfs << 16) ))
   2.325 +		fi
   2.326 +		store 32 $ArgPtrOfs $ArgPtrVal $bs "Cmdline '$CMDLINE'"
   2.327  	fi
   2.328  
   2.329 -	# Compute initramfs size
   2.330 +	# Compute initramfs size (protocol >= 2.00)
   2.331 +	[ $Version -lt 512 ] && INITRD=""
   2.332  	initrdlen=0
   2.333 +INITRDPAD=4
   2.334 +INITRDALIGN=0x1000
   2.335  	for i in $( echo $INITRD | sed 's/,/ /' ); do
   2.336  		[ -s "$i" ] || continue
   2.337 -		[ -n "$DEBUG" ] && echo "--initrd $i " 1>&2
   2.338 -		initrdlen=$(( ($initrdlen + $(stat -c %s $i) + 3) & -4 ))
   2.339 +		while [ -L "$i" ]; do i="$(readlink $i)"; done
   2.340 +		size=$(( ($(stat -c %s "$i") + $INITRDPAD - 1) & -$INITRDPAD ))
   2.341 +		[ -n "$DEBUG" ] && echo "initrd $i $size " 1>&2
   2.342 +		initrdlen=$(( $initrdlen + $size ))
   2.343 +		[ -n "$ADRSRD" ] || ADRSRD=$(( (($MEM * 0x100000) - $initrdlen) & -$INITRDALIGN ))
   2.344 +		store 32 $RamfsAdrOfs $(( $ADRSRD )) $bs initrd adrs
   2.345 +		store 32 $RamfsLenOfs $initrdlen $bs initrdlen
   2.346  	done
   2.347 -	if [ $initrdlen -ne 0 ]; then
   2.348 -		[ -n "$DEBUG" ] && echo "initrdlen = $initrdlen " 1>&2
   2.349 -		storelong $RamfsAdrOfs \
   2.350 -			$(( (0x1000000 - $initrdlen) & 0xFFFF0000 )) $bs
   2.351 -		storelong $RamfsLenOfs $initrdlen $bs
   2.352 -	fi
   2.353 +
   2.354 +	[ -n "$NOSYSSIZEFIX" ] || store 32 0x1F4 \
   2.355 +		$(( ($(stat -c %s $KERNEL)+15)/16 - ($setupsz+1)*32)) $bs fix system size
   2.356  
   2.357  	# Output boot sector + setup + cmdline
   2.358 -	dd if=$bs 2> /dev/null
   2.359 +	ddq if=$bs
   2.360  
   2.361  	# Output kernel code
   2.362 -	dd if=$KERNEL bs=512 skip=$(( $setupszb + 1 )) 2> /dev/null
   2.363 -
   2.364 -	# Pad to next sector
   2.365 -	Kpad=$(( 512 - ($(stat -c %s $KERNEL) & 511) ))
   2.366 -	[ $Kpad -eq 512 ] || dd if=/dev/zero bs=1 count=$Kpad 2> /dev/null
   2.367 +	syssz=$(( ($(getlong 0x1F4 $bs)+31)/32 ))
   2.368 +	cat $KERNEL /dev/zero | ddq bs=512 skip=$(( $setupsz+1 )) count=$syssz conv=sync
   2.369  
   2.370  	# Output initramfs
   2.371 -	padding=0
   2.372  	for i in $( echo $INITRD | sed 's/,/ /' ); do
   2.373  		[ -s "$i" ] || continue
   2.374 -		[ $padding -ne 0 ] && dd if=/dev/zero bs=1 count=$padding 2> /dev/null
   2.375 -		dd if=$i 2> /dev/null
   2.376 -		padding=$(( 4 - ($(stat -c %s $i) & 3) ))
   2.377 -		[ $padding -eq 4 ] && padding=0
   2.378 +		ddq if=$i
   2.379 +		padding=$(( $INITRDPAD - ($(stat -c %s $i) % $INITRDPAD) ))
   2.380 +		[ $padding -eq $INITRDPAD ] || ddq if=/dev/zero bs=1 count=$padding
   2.381  	done
   2.382  
   2.383  	# Cleanup
   2.384 @@ -199,14 +286,14 @@
   2.385  if [ "$FORMAT" == "0" ]; then # unsplitted
   2.386  	floppyset > $PREFIX
   2.387  	PAD=$(( 512 - ($(stat -c %s $PREFIX) % 512) ))
   2.388 -	[ $PAD -ne 512 ] && dd if=/dev/zero bs=1 count=$PAD >> $PREFIX 2> /dev/null
   2.389 +	[ $PAD -ne 512 ] && ddq if=/dev/zero bs=1 count=$PAD >> $PREFIX
   2.390  	exit
   2.391  fi
   2.392  floppyset | split -b ${FORMAT}k /dev/stdin floppy$$
   2.393  i=1
   2.394 -ls floppy$$* | while read file ; do
   2.395 +ls floppy$$* 2> /dev/null | while read file ; do
   2.396  	output=$PREFIX$(printf "%03d" $i)
   2.397 -	cat $file /dev/zero | dd bs=1k count=$FORMAT conv=sync of=$output 2> /dev/null
   2.398 +	cat $file /dev/zero | ddq bs=1k count=$FORMAT conv=sync of=$output
   2.399  	echo $output
   2.400  	rm -f $file
   2.401  	i=$(( $i + 1 ))
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/mirror/floppies/builder/index.html	Thu May 09 18:16:08 2013 +0200
     3.3 @@ -0,0 +1,1 @@
     3.4 +index.php
     3.5 \ No newline at end of file
     4.1 --- a/mirror/floppies/builder/index.php	Wed May 01 10:50:21 2013 +0200
     4.2 +++ b/mirror/floppies/builder/index.php	Thu May 09 18:16:08 2013 +0200
     4.3 @@ -12,6 +12,7 @@
     4.4  	<meta name="author" content="SliTaz Contributors" />
     4.5  	<meta http-equiv="Refresh" content="0;url=http://mirror.slitaz.org/floppies/builder/index.php">
     4.6  </head>
     4.7 +</html>
     4.8  <?php
     4.9  }
    4.10  ini_set('upload_max_filesize','16M');
    4.11 @@ -46,8 +47,8 @@
    4.12  	<meta name="description" content="slitaz boot floppies builder" />
    4.13  	<meta name="robots" content="index, nofollow" />
    4.14  	<meta name="author" content="SliTaz Contributors" />
    4.15 -	<link rel="shortcut icon" href="/static/favicon.ico" />
    4.16 -	<link rel="stylesheet" type="text/css" href="/static/slitaz.css" />
    4.17 +	<link rel="shortcut icon" href="../static/favicon.ico" />
    4.18 +	<link rel="stylesheet" type="text/css" href="../static/slitaz.css" />
    4.19  	<style type="text/css">
    4.20  	
    4.21  input[type=text] {
    4.22 @@ -80,7 +81,7 @@
    4.23  	<div id="logo"></div>
    4.24  	<div id="network">
    4.25  		<a href="http://www.slitaz.org/">
    4.26 -		<img src="/static/home.png" alt="[ home ]" /></a>
    4.27 +		<img src="../static/home.png" alt="[ home ]" /></a>
    4.28  		<a href="bootloader" title="Build your floppy sets without Internet">Shell builder</a> |
    4.29  		<a href="../floppy-grub4dos" title="Boot tools">Generic boot floppy</a>
    4.30  	</div>
    4.31 @@ -129,6 +130,7 @@
    4.32  
    4.33  	$size = 0;
    4.34  	$initrd_size = 0;
    4.35 +	$info_size = 0;
    4.36  	
    4.37  	// Upload kernel
    4.38  	
    4.39 @@ -162,24 +164,21 @@
    4.40  				   $tmp_dir."kernel");
    4.41  		$kernel = $tmp_dir."kernel";
    4.42  		$boot_version = get_long($kernel,0x206) & 255;
    4.43 +		if (get_long($kernel,0x202) != 0x53726448) // 'HdrS' magic
    4.44 +			$boot_version = 0;
    4.45  		$size = get_long($kernel,0x1F4);	// syssize paragraphs
    4.46  		if ($boot_version < 4) $size &= 0xFFFF;	// 16 bits before 2.4
    4.47  		$size = ($size + 0xFFF) & 0xFFFF000;	// round up to 64K
    4.48  		$size <<= 4;				// paragraphs -> bytes
    4.49 -		if (get_long($kernel,0x202) != 0x53726448 ||	// 'HdrS' magic
    4.50 -		    (get_long($kernel,0x211) & 1 != 1)) {	// bzImage flag
    4.51 -			error("The file ".$_FILES["kernel"]['name'].
    4.52 -			      " is not a bzImage Linux kernel.");
    4.53 -			$size = 0;
    4.54 -		}
    4.55 -		else if ($boot_version < 2 && $_POST['cmdline']) { // before 2.2
    4.56 -			unset($_POST['cmdline']);
    4.57 -			error("This boot loader does not support Linux kernel ".
    4.58 -			      "prior 2.4.0-test3-pre3 command line.",
    4.59 -			      "Warning");
    4.60 -		}
    4.61  		$msg = "The size of the file ".$_FILES["kernel"]['name'];
    4.62  	}
    4.63 +
    4.64 +	if ($size && isset($_FILES["info"]['tmp_name']) &&
    4.65 +	    is_uploaded_file($_FILES["info"]['tmp_name'])) {
    4.66 +		move_uploaded_file($_FILES["info"]['tmp_name'],
    4.67 +				   $tmp_dir."info");
    4.68 +		$info_size = $_FILES["info"]['size'];
    4.69 +	}
    4.70  	
    4.71  	// Upload initrd
    4.72  	
    4.73 @@ -213,9 +212,13 @@
    4.74  	else {
    4.75  		$cmd = "./bootloader ".$tmp_dir."kernel --prefix "
    4.76  		     . $tmp_dir."fd --format 0 --flags ".$_POST['flags']
    4.77 -		     . " --video ".$_POST['video'];
    4.78 +		     . " --video ".$_POST['video']." --mem ".$_POST['ram'];
    4.79 +		if ($_POST['edit'] == "")
    4.80 +			$cmd .= " --dont-edit-cmdline";
    4.81  		if ($_POST['cmdline'])
    4.82  			$cmd .= " --cmdline '".$_POST['cmdline']."'";
    4.83 +		if ($info_size)
    4.84 +			$cmd .= " --info ".$tmp_dir."info";
    4.85  		if (file_exists($_POST['rdev']))
    4.86  			$cmd .= " --rdev ".$_POST['rdev'];
    4.87  		if ($initrd_size)
    4.88 @@ -278,7 +281,7 @@
    4.89  		$max = rtrim(ini_get('upload_max_filesize'),"M");
    4.90  		$max_post = rtrim(ini_get('post_max_size'),"M");
    4.91  		if ($max_post < $max) $max = $max_post;
    4.92 -		$msg = "the tiny boot loader can't load more than 15 MB";
    4.93 +		$msg = "the <acronym title=\"The linux kernel boot sector\">tiny boot loader</acronym> can't load more than 15 MB";
    4.94  		if ($max < 16)
    4.95  			$msg = "the web server can't upload more than $max MB";
    4.96  ?>
    4.97 @@ -286,21 +289,26 @@
    4.98  <table>
    4.99  	<tr>
   4.100  	<td>Linux kernel:</td>
   4.101 -	<td><input type="file" name="kernel" size="25" /> <i>required</i></td>
   4.102 +	<td><input type="file" name="kernel" size="37" /> <i>required</i></td>
   4.103  	</tr>
   4.104  	<tr>
   4.105  	<td>Initramfs / Initrd:</td>
   4.106 -	<td><input type="file" name="initrd" size="25" /> <i>optional</i></td>
   4.107 +	<td><input type="file" name="initrd" size="37" /> <i>optional</i></td>
   4.108  	</tr>
   4.109  	<tr>
   4.110  	<td>Extra initramfs:</td>
   4.111 -	<td><input type="file" name="initrd2" size="25" /> <i>optional</i></td>
   4.112 +	<td><input type="file" name="initrd2" size="37" /> <i>optional</i></td>
   4.113 +	</tr>
   4.114 +	<tr>
   4.115 +	<td>Boot message:</td>
   4.116 +	<td><input type="file" name="info" size="37" /> <i>optional</i></td>
   4.117  	</tr>
   4.118  	<tr>
   4.119  	<td>Default cmdline:</td>
   4.120  	<td><input type="text" name="cmdline" size="36" <?php 
   4.121  		if (isset($_GET['cmdline'])) echo 'value="'.$_GET['cmdline'].'"';
   4.122 -	?>/> <i>optional</i></td>
   4.123 +	?>/> <input type="checkbox" name="edit" checked="checked" />edit
   4.124 +	<i>optional</i></td>
   4.125  	</tr>
   4.126  	<tr>
   4.127  	<td>Root device:</td>
   4.128 @@ -333,41 +341,89 @@
   4.129  			$options[0xF07] = "80x60";
   4.130  			$options[0x30A] = "132x43";
   4.131  			$options[0x309] = "132x25";
   4.132 -			$options[0x338] = "320x200x8";
   4.133 +			$options[0x338] = "320x200x8"; // 382?
   4.134  			$options[0x30D] = "320x200x15";
   4.135  			$options[0x30E] = "320x200x16";
   4.136 -			$options[0x332] = "320x240x8";
   4.137 -			$options[0x335] = "320x240x16";
   4.138 -			$options[0x333] = "400x300x8";
   4.139 -			$options[0x336] = "400x300x16";
   4.140 -			$options[0x334] = "512x384x8";
   4.141 -			$options[0x337] = "512x384x16";
   4.142 +			$options[0x30F] = "320x200x24";
   4.143 +			$options[0x320] = "320x200x32";
   4.144 +			$options[0x332] = "320x240x8"; // 392?
   4.145 +			$options[0x393] = "320x240x15";
   4.146 +			$options[0x335] = "320x240x16";// 394?
   4.147 +			$options[0x395] = "320x240x24";
   4.148 +			$options[0x396] = "320x240x32";
   4.149 +			$options[0x333] = "400x300x8";// 3A2?
   4.150 +			$options[0x3A3] = "400x300x15";
   4.151 +			$options[0x336] = "400x300x16";// 3A4?
   4.152 +			$options[0x3A5] = "400x300x24";
   4.153 +			$options[0x3A6] = "400x300x32";
   4.154 +			$options[0x334] = "512x384x8";// 3B2?
   4.155 +			$options[0x3B3] = "512x384x15";
   4.156 +			$options[0x337] = "512x384x16";// 3B4?
   4.157 +			$options[0x3B5] = "512x384x24";
   4.158 +			$options[0x3B6] = "512x384x32";
   4.159 +			$options[0x3C2] = "640x350x8";
   4.160 +			$options[0x3C3] = "640x350x15";
   4.161 +			$options[0x3C4] = "640x350x16";
   4.162 +			$options[0x3C5] = "640x350x24";
   4.163 +			$options[0x3C6] = "640x350x32";
   4.164  			$options[0x300] = "640x400x8";
   4.165 -			$options[0x339] = "640x400x16";
   4.166 +			$options[0x383] = "640x400x15";
   4.167 +			$options[0x339] = "640x400x16";// 384?
   4.168 +			$options[0x385] = "640x400x24";
   4.169 +			$options[0x386] = "640x400x32";
   4.170  			$options[0x301] = "640x480x8";
   4.171  			$options[0x310] = "640x480x15";
   4.172  			$options[0x311] = "640x480x16";
   4.173  			$options[0x312] = "640x480x24";
   4.174 -			$options[0x33A] = "640x480x32";
   4.175 +			$options[0x33A] = "640x480x32";// 321?
   4.176 +			$options[879]   = "800x500x8";
   4.177 +			$options[880]   = "800x500x15";
   4.178 +			$options[881]   = "800x500x16";
   4.179 +			$options[882]   = "800x500x24";
   4.180 +			$options[883]   = "800x500x32";
   4.181  			//$options[770] = "800x600x4";
   4.182  			$options[0x303] = "800x600x8";
   4.183  			$options[0x313] = "800x600x15";
   4.184  			$options[0x314] = "800x600x16";
   4.185  			$options[0x315] = "800x600x24";
   4.186 -			$options[0x33B] = "800x600x32";
   4.187 +			$options[0x33B] = "800x600x32";//322?
   4.188 +			$options[815]   = "896x672x8";
   4.189 +			$options[816]   = "896x672x15";
   4.190 +			$options[817]   = "896x672x16";
   4.191 +			$options[818]   = "896x672x24";
   4.192 +			$options[819]   = "896x672x32";
   4.193 +			$options[874]   = "1024x640x8";
   4.194 +			$options[875]   = "1024x640x15";
   4.195 +			$options[876]   = "1024x640x16";
   4.196 +			$options[877]   = "1024x640x24";
   4.197 +			$options[878]   = "1024x640x32";
   4.198  			//$options[772] = "1024x768x4";
   4.199  			$options[0x305] = "1024x768x8";
   4.200  			$options[0x316] = "1024x768x15";
   4.201  			$options[0x317] = "1024x768x16";
   4.202  			$options[0x318] = "1024x768x24";
   4.203 -			$options[0x33C] = "1024x768x32";
   4.204 +			$options[0x33C] = "1024x768x32";//323?
   4.205 +			$options[869]   = "1152x720x8";
   4.206 +			$options[870]   = "1152x720x15";
   4.207 +			$options[871] =   "1152x720x16";
   4.208 +			$options[872] =   "1152x720x24";
   4.209 +			$options[873] =   "1152x720x32";
   4.210  			$options[0x307] = "1280x1024x8";
   4.211  			$options[0x319] = "1280x1024x15";
   4.212  			$options[0x31A] = "1280x1024x16";
   4.213  			$options[0x31B] = "1280x1024x24";
   4.214  			$options[0x33D] = "1280x1024x32";
   4.215 +			$options[835]   = "1400x1050x8";
   4.216 +			$options[837] =   "1400x1050x16";
   4.217 +			$options[838] =   "1400x1040x24";
   4.218 +			$options[864]   = "1440x900x8";
   4.219 +			$options[864]   = "1440x900x15";
   4.220 +			$options[866] =   "1440x900x16";
   4.221 +			$options[867] =   "1440x900x24";
   4.222 +			$options[868] =   "1440x900x32";
   4.223  			$options[0x330] = "1600x1200x8";
   4.224  			$options[0x331] = "1600x1200x16";
   4.225 +			$options[893]   = "1920x1200x8";
   4.226  			foreach ($options as $key => $value) {
   4.227  				echo '<option value="'.$key.'"';
   4.228  				if ($key == $selected || $value == $selected)
   4.229 @@ -383,12 +439,42 @@
   4.230  	<td><select name="size">
   4.231  <?php
   4.232  	foreach ($sizes as $key => $value) {
   4.233 +		switch ($key) {
   4.234 +		case "368640" :
   4.235 +			echo "		<optgroup label=\"5&frac14; SD\">\n";
   4.236 +			break;
   4.237 +		case "737280" :
   4.238 +			echo "		</optgroup>\n";
   4.239 +			echo "		<optgroup label=\"3&frac12; SD\">\n";
   4.240 +			break;
   4.241 +		case "1228800" :
   4.242 +			echo "		</optgroup>\n";
   4.243 +			echo "		<optgroup label=\"5&frac14; HD\">\n";
   4.244 +			break;
   4.245 +		case "1474560" :
   4.246 +			echo "		</optgroup>\n";
   4.247 +			echo "		<optgroup label=\"3&frac12; HD\">\n";
   4.248 +			break;
   4.249 +		case "2949120" :
   4.250 +			echo "		</optgroup>\n";
   4.251 +			echo "		<optgroup label=\"3&frac12; ED\">\n";
   4.252 +			break;
   4.253 +		case "0" :
   4.254 +			echo "		</optgroup>\n";
   4.255 +			break;
   4.256 +		}
   4.257  		echo "		<option value=\"$key\"";
   4.258  		if ($key == "1474560") echo " selected='selected'";
   4.259  		echo ">$value</option>\n";
   4.260  	}
   4.261  ?>
   4.262  	</select>&nbsp;
   4.263 +	RAM used&nbsp;<select name="ram">
   4.264 +<?php
   4.265 +	for ($i = 16; $i >= 4; $i--)
   4.266 +		echo "		<option value=\"$i\">$i MB</option>\n";
   4.267 +?>
   4.268 +	</select>&nbsp;
   4.269  		<input name="build" value="Build floppy set" type="submit" />
   4.270  	</td>
   4.271  	</tr>
   4.272 @@ -402,6 +488,9 @@
   4.273  <p>
   4.274  Note 2: the extra initramfs may be useful to add your own configuration files.
   4.275  </p>
   4.276 +<p>
   4.277 +Note 3: the keyboard is read for ESC or ENTER on every form feed (ASCII 12) in the boot message.
   4.278 +</p>
   4.279  EOT;
   4.280  	}
   4.281  	else {
   4.282 @@ -455,13 +544,13 @@
   4.283  <h4>How does it work ?</h4>
   4.284  <p>
   4.285  This tool updates the boot sector of your kernel with
   4.286 -<a href="http://hg.slitaz.org/wok/raw-file/b84ff32e3457/linux/stuff/linux-header-2.6.34.u">this patch</a>.
   4.287 +<a href="http://hg.slitaz.org/wok/raw-file/66e38bd6a132/linux/stuff/linux-header.u">this patch</a>.
   4.288  You may add a default cmdline and an initramfs. The cmdline can be edited at boot
   4.289 -time but the keyboard is not mandatory.
   4.290 +time but the <acronym title="Check for disk swap every 5 seconds">keyboard is not mandatory</acronym>.
   4.291  A <a href="bootloader"> standalone version</a> is available.
   4.292  </p>
   4.293  <p>
   4.294 -Each part (boot, setup, cmdline, kernel, initramfs) is aligned to 512 bytes.
   4.295 +Each part (boot, setup, boot message, cmdline, kernel, initramfs) is aligned to 512 bytes.
   4.296  The result is split to fit the floppy size.
   4.297  The last floppy image is padded with zeros.
   4.298  </p>
   4.299 @@ -490,13 +579,13 @@
   4.300  <!-- Bottom and logo's -->
   4.301  <div id="bottom">
   4.302  <p>
   4.303 -<a href="http://validator.w3.org/check?uri=referer"><img src="/static/xhtml10.png" alt="Valid XHTML 1.0" title="Code validé XHTML 1.0" style="width: 80px; height: 15px;" /></a>
   4.304 +<a href="http://validator.w3.org/check?uri=referer"><img src="../static/xhtml10.png" alt="Valid XHTML 1.0" title="Code validé XHTML 1.0" style="width: 80px; height: 15px;" /></a>
   4.305  </p>
   4.306  <p>
   4.307  	<img src="#" id="qrcodeimg" alt="#" width="60" height="60"
   4.308 -	     onmouseover= "this.title = location.href"
   4.309 -	     onclick= "this.width = this.height = 300" />
   4.310 -	<script type="text/javascript" src="/static/qrcode.js"></script>
   4.311 +	     onmouseover= "this.title = location.href" 
   4.312 +	     onclick= "this.width = this.height = 300;" />
   4.313 +	<script type="text/javascript" src="../static/qrcode.js"></script>
   4.314  	<script type="text/javascript">
   4.315  		document.getElementById('qrcodeimg').src =
   4.316  			QRCode.generatePNG(location.href, {ecclevel: 'H'});
     5.1 --- a/mirror/floppies/download.php	Wed May 01 10:50:21 2013 +0200
     5.2 +++ b/mirror/floppies/download.php	Thu May 09 18:16:08 2013 +0200
     5.3 @@ -45,9 +45,13 @@
     5.4  	<meta name="description" content="slitaz boot floppies" />
     5.5  	<meta name="robots" content="index, nofollow" />
     5.6  	<meta name="author" content="SliTaz Contributors" />
     5.7 -	<link rel="shortcut icon" href="../css/favicon.ico" />
     5.8 -	<link rel="stylesheet" type="text/css" href="../css/slitaz.css" />
     5.9 +	<link rel="shortcut icon" href="static/favicon.ico" />
    5.10 +	<link rel="stylesheet" type="text/css" href="static/slitaz.css" />
    5.11  	<style type="text/css">
    5.12 +table {
    5.13 +	background-color: inherit;
    5.14 +	margin: 10px 0px 0px 0px;
    5.15 +}
    5.16  #copy {
    5.17  	text-align: center;
    5.18  }
    5.19 @@ -65,11 +69,10 @@
    5.20  	<div id="logo"></div>
    5.21  	<div id="network">
    5.22  		<a href="http://www.slitaz.org/">
    5.23 -		<img src="/css/pics/network.png" alt="network.png" /></a>
    5.24 -		<a href="floppy-grub4dos" title="Boot tools">Generic boot floppy</a> |
    5.25 -		<a href="http://tiny.slitaz.org/" title="SliTaz in one floppy !">Tiny SliTaz</a> |
    5.26 -		<a href="index-loram.html" title="Floppy image sets for low ram systems">Loram floppies</a> |
    5.27 -		<a href="builder/index.php" title="Build floppies with your own kernel and initramfs">Floppy set web builder</a> |
    5.28 +		<img src="static/home.png" alt="[ home ]" /></a>
    5.29 +		<a href="floppy-grub4dos" title="Boot tools">Generic boot floppy</a>
    5.30 +		<a href="http://tiny.slitaz.org/" title="SliTaz in one floppy !">Tiny SliTaz</a>
    5.31 +		<a href="builder/index.php" title="Build floppies with your own kernel and initramfs">Floppy set web builder</a>
    5.32  		<a href="builder/bootloader" title="Build your floppy sets without Internet">Shell builder</a>
    5.33  	</div>
    5.34  	<h1><a href="http://www.slitaz.org/">Boot floppies</a></h1>
    5.35 @@ -84,19 +87,18 @@
    5.36  <?php
    5.37  $max = floor((my_filesize("../".$_POST["iso"]) + $fdsz - 1 + $cpiopad) / $fdsz);
    5.38  for ($i = 1; $i <= $max ; $i++) {
    5.39 -	if ($i % 4 == 1) echo "<tr>\n";
    5.40 -	echo "	<td><a href=\"download.php?file=$i&amp;iso=".
    5.41 +	if ($i % 6 == 1) echo "<tr>\n";
    5.42 +	echo "	<td> <a href=\"download.php?file=$i&amp;iso=".
    5.43  		urlencode($_POST["iso"])."\">fdiso".sprintf("%02d",$i);
    5.44 -	if ($max < 100) echo ".img";
    5.45 -	echo "</a></td>\n";
    5.46 -	if ($i % 4 == 0) echo "</tr>\n";
    5.47 +	echo "</a> </td>\n";
    5.48 +	if ($i % 6 == 0) echo "</tr>\n";
    5.49  }
    5.50 -if ($max % 4 != 0) {
    5.51 -	while ($max % 4 != 3) { echo "<td></td>"; $max++; }
    5.52 +if ($max % 6 != 0) {
    5.53 +	while ($max % 6 != 5) { echo "<td></td>"; $max++; }
    5.54  }
    5.55  else echo "<tr>\n";
    5.56  echo "	<td><a href=\"download.php?file=md5sum&amp;iso=".
    5.57 -	urlencode($_POST["iso"])."\">md5sum</a></td>\n</tr>";
    5.58 +	urlencode($_POST["iso"])."\">md5</a></td>\n</tr>";
    5.59  ?>
    5.60  </table>
    5.61  	</div>
    5.62 @@ -104,12 +106,15 @@
    5.63  	<div id="block_info">
    5.64  		<h4>Available boot floppies</h4>
    5.65  		<ul>
    5.66 -	<li><a href="index-4.0.html">SliTaz 4.0</a></li>
    5.67 -	<li><a href="index-loram-4.0.html">SliTaz loram 4.0</a></li>
    5.68 -	<li><a href="index-3.0.html">SliTaz 3.0</a></li>
    5.69 -	<li><a href="index-loram-3.0.html">SliTaz loram 3.0</a></li>
    5.70 -	<li><a href="index-2.0.html">SliTaz 2.0</a></li>
    5.71 -	<li><a href="index-1.0.html">SliTaz 1.0</a></li>
    5.72 +<?php
    5.73 +for ($i = 1; file_exists("index-$i.0.html") ; $i++);
    5.74 +while (--$i > 0) {
    5.75 +	echo "	<li><a href=\"index-$i.0.html\">SliTaz $i.0</a>";
    5.76 +	if (file_exists("index-loram-".$i.".0.html"))
    5.77 +		echo " - <a href=\"index-loram-$i.0.html\">loram</a>";
    5.78 +	echo "</li>\n";
    5.79 +}
    5.80 +?>
    5.81  		</ul>
    5.82  	</div>
    5.83  </div>
     6.1 --- a/mirror/floppies/floppies	Wed May 01 10:50:21 2013 +0200
     6.2 +++ b/mirror/floppies/floppies	Thu May 09 18:16:08 2013 +0200
     6.3 @@ -2,22 +2,26 @@
     6.4  
     6.5  read32()
     6.6  {
     6.7 -	dd if=kernel bs=1 skip=$((0x$1)) count=4 2> /dev/null | \
     6.8 -		hexdump -e '"" 1/4 "%d" "\n"'
     6.9 +	echo $(od -j $((0x$1)) -N 4 -t u4 -An kernel)
    6.10 +}
    6.11 +
    6.12 +ddsect()
    6.13 +{
    6.14 +	dd bs=512 count=$@ 2> /dev/null
    6.15  }
    6.16  
    6.17  case "$1" in
    6.18  extract)
    6.19 -	dd bs=512 count=2 > kernel 2> /dev/null
    6.20 +	ddsect 2 > kernel
    6.21  	setupsz=$(($(read32 1F1) & 255))
    6.22 -	dd bs=512 count=$(($setupsz - 1)) >> kernel 2> /dev/null
    6.23 +	ddsect $(($setupsz - 1)) >> kernel
    6.24  	[ $(read32 228) -ne 0 ] &&
    6.25 -	dd bs=512 count=1 2> /dev/null | strings > cmdline
    6.26 +	ddsect 1 | strings > cmdline
    6.27  	syssz=$(read32 1F4)
    6.28  	syssz=$(( ($syssz + 31) / 32 ))
    6.29 -	dd bs=512 count=$syssz >> kernel 2> /dev/null
    6.30 +	ddsect $syssz >> kernel
    6.31  	ramsz=$(read32 21C)
    6.32 -	dd bs=512 count=$((($ramsz + 511) / 512)) of=rootfs 2> /dev/null
    6.33 +	ddsect $((($ramsz + 511) / 512)) of=rootfs
    6.34  	dd bs=1 seek=$ramsz count=0 of=rootfs 2> /dev/null
    6.35  	;;
    6.36  *)	cat <<EOT
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/mirror/floppies/loram-1.0/description.html	Thu May 09 18:16:08 2013 +0200
     7.3 @@ -0,0 +1,12 @@
     7.4 +<p>
     7.5 +Start your computer with <i>fd001.img</i>. It will show the kernel version string and
     7.6 +the kernel cmdline line. You can edit the cmdline. Most users can just press Enter.
     7.7 +</p>
     7.8 +<p>
     7.9 +The floppy is then loaded into memory (one dot each 64k) and you will be prompted to
    7.10 +insert the next floppy, <i>fd002.img</i>.
    7.11 +</p>
    7.12 +<p>
    7.13 +The bootstrap will then start and you will be prompted to insert extra floppies
    7.14 +from <i>fd100.img</i> to <i>fd121.img</i>.
    7.15 +</p>
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/mirror/floppies/loram-1.0/title	Thu May 09 18:16:08 2013 +0200
     8.3 @@ -0,0 +1,1 @@
     8.4 +Released on 22 March 2008, needs 80Mb RAM
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/mirror/floppies/loram-2.0/description.html	Thu May 09 18:16:08 2013 +0200
     9.3 @@ -0,0 +1,29 @@
     9.4 +<p>
     9.5 +You can start with one of the 3 following flavors :
     9.6 +</p>
     9.7 +<ul>
     9.8 +  <li>
     9.9 +  <b>base</b> needs 22Mb of RAM and 6 floppies: <i>fd001.img</i> to <i>fd103.img</i>.<br />
    9.10 +  base provides the minimum slitaz distribution subset in text mode. 
    9.11 +  </li>
    9.12 +  <li>
    9.13 +  <b>justx</b> needs 64M of RAM and 13 floppies: <i>fd001.img</i> to <i>fd206.img</i>.<br />
    9.14 +  justx provides the minimum slitaz distribution subset with X11 support. 
    9.15 +  </li>
    9.16 +  <li>
    9.17 +  <b>core</b> needs 92M of RAM and 25 floppies: <i>fd001.img</i> to <i>fd311.img</i>.<br />
    9.18 +  core provides the default slitaz distribution. 
    9.19 +  </li>
    9.20 +</ul>
    9.21 +<p>
    9.22 +Start your computer with <i>fd001.img</i>. It will show the kernel version string and
    9.23 +the kernel cmdline line. You can edit the cmdline. Most users can just press Enter.
    9.24 +</p>
    9.25 +<p>
    9.26 +The floppy is then loaded into memory (one dot each 64k) and you will be prompted to
    9.27 +insert the next floppy, <i>fd002.img</i>.
    9.28 +</p>
    9.29 +<p>
    9.30 +The loram bootstrap will then start and you will be prompted to insert extra floppies
    9.31 +for base, justx and core flavors. You can bypass this by using Q and Enter.
    9.32 +</p>
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/mirror/floppies/loram-2.0/title	Thu May 09 18:16:08 2013 +0200
    10.3 @@ -0,0 +1,1 @@
    10.4 +Released on 16 April 2009, needs 80Mb RAM
    11.1 --- a/mirror/floppies/loram-3.0/title	Wed May 01 10:50:21 2013 +0200
    11.2 +++ b/mirror/floppies/loram-3.0/title	Thu May 09 18:16:08 2013 +0200
    11.3 @@ -1,1 +1,1 @@
    11.4 -Released on 28 March 2010, needs 80b RAM
    11.5 +Released on 28 March 2010, needs 80Mb RAM
    12.1 --- a/mirror/floppies/loram-4.0/description.html	Wed May 01 10:50:21 2013 +0200
    12.2 +++ b/mirror/floppies/loram-4.0/description.html	Thu May 09 18:16:08 2013 +0200
    12.3 @@ -11,7 +11,7 @@
    12.4    justx provides the minimum slitaz distribution subset with X11 support. 
    12.5    </li>
    12.6    <li>
    12.7 -  <b>gtkonly</b> needs 111M of RAM and 19 floppies: <i>fd001.img</i> to <i>fd304.img</i>.<br />
    12.8 +  <b>gtkonly</b> needs 111M of RAM and 18 floppies: <i>fd001.img</i> to <i>fd304.img</i>.<br />
    12.9    gtkonly provides the minimum slitaz distribution subset with Gtk+ support. 
   12.10    </li>
   12.11    <li>
    13.1 --- a/mirror/floppies/mkindex.sh	Wed May 01 10:50:21 2013 +0200
    13.2 +++ b/mirror/floppies/mkindex.sh	Thu May 09 18:16:08 2013 +0200
    13.3 @@ -84,24 +84,24 @@
    13.4  <!-- Block -->
    13.5  <div id="block">
    13.6  	<!-- Navigation -->
    13.7 -	<div id="block_nav">
    13.8 +	<div id="block_nav" style="height: 126px;">
    13.9  		<h4><img src="pics/floppy.png" alt="@" />1.44Mb SliTaz$LORAM $VERSION floppy images</h4>
   13.10  <table width="100%">
   13.11  $(
   13.12  n=0
   13.13  for f in $DIR/fd*img ; do
   13.14  	[ $n -eq 0 ] && echo "<tr>"
   13.15 -	echo "	<td> <a href=\"$f\">$(basename $f)</a> </td>"
   13.16 -	n=$(( ($n+1)&3 ))
   13.17 +	echo "	<td> <a href=\"$f\">$(basename $f .img)</a> </td>"
   13.18 +	n=$(( ($n+1)%6 ))
   13.19  	[ $n -eq 0 ] && echo "</tr>"
   13.20  done
   13.21  [ $n -eq 0 ] && echo "<tr>"
   13.22 -while [ $n -ne 3 ]; do
   13.23 +while [ $n -ne 5 ]; do
   13.24  	echo "	<td> </td>"
   13.25  	n=$(($n+1))
   13.26  done
   13.27  )
   13.28 -	<td> <a href="$DIR/md5sum">md5sum</a> </td>
   13.29 +	<td> <a href="$DIR/md5sum">md5</a> </td>
   13.30  </tr>
   13.31  </table>
   13.32  	</div>
   13.33 @@ -113,7 +113,7 @@
   13.34  tail=""
   13.35  list_version | while read dir; do
   13.36  	case "$dir" in
   13.37 -	loram*)	echo -en "\n	<a href=\"index-$dir.html\">loram</a>" ;;
   13.38 +	loram*)	echo -en "\n	- <a href=\"index-$dir.html\">loram</a>" ;;
   13.39  	*) 	echo -en "$tail	<li><a href=\"index-$dir.html\">SliTaz $dir</a>" ;;
   13.40  	esac
   13.41  	tail="</li>\n"
   13.42 @@ -216,16 +216,6 @@
   13.43  Copyright &copy; <span class="year"></span> <a href="http://www.slitaz.org/">SliTaz</a> -
   13.44  <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>
   13.45  </p>
   13.46 -<p>
   13.47 -	<img src="#" id="qrcodeimg" alt="#" width="60" height="60"
   13.48 -	     onmouseover= "this.title = location.href"
   13.49 -	     onclick= "this.width = this.height = 300" />
   13.50 -	<script type="text/javascript" src="static/qrcode.js"></script>
   13.51 -	<script type="text/javascript">
   13.52 -		document.getElementById('qrcodeimg').src =
   13.53 -			QRCode.generatePNG(location.href, {ecclevel: 'H'});
   13.54 -	</script>
   13.55 -</p>
   13.56  <!-- End of copy -->
   13.57  </div>
   13.58  
   13.59 @@ -234,6 +224,16 @@
   13.60  <p>
   13.61  <a href="http://validator.w3.org/check?uri=referer"><img src="static/xhtml10.png" alt="Valid XHTML 1.0" title="Code validé XHTML 1.0" style="width: 80px; height: 15px;" /></a>
   13.62  </p>
   13.63 +<p>
   13.64 +	<img src="#" id="qrcodeimg" alt="#" width="60" height="60"
   13.65 +	     onmouseover= "this.title = location.href" 
   13.66 +	     onclick= "this.width = this.height = 300;" />
   13.67 +	<script type="text/javascript" src="static/qrcode.js"></script>
   13.68 +	<script type="text/javascript">
   13.69 +		document.getElementById('qrcodeimg').src =
   13.70 +			QRCode.generatePNG(location.href, {ecclevel: 'H'});
   13.71 +	</script>
   13.72 +</p>
   13.73  </div>
   13.74  
   13.75  </body>