slitaz-dev-tools rev 232

bootloader: fix multi initrd case
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Jul 30 12:24:08 2014 +0200 (2014-07-30)
parents f53fe44e1e70
children 3780599349cd
files mirror-tools/slitaz/mirror/floppies/builder/bootloader mirror-tools/slitaz/mirror/floppies/floppies
line diff
     1.1 --- a/mirror-tools/slitaz/mirror/floppies/builder/bootloader	Thu Jun 26 09:27:03 2014 +0200
     1.2 +++ b/mirror-tools/slitaz/mirror/floppies/builder/bootloader	Wed Jul 30 12:24:08 2014 +0200
     1.3 @@ -256,7 +256,7 @@
     1.4  		size=$(( ($(stat -c %s "$i") + $INITRDPAD - 1) & -$INITRDPAD ))
     1.5  		[ -n "$DEBUG" ] && echo "initrd $i $size " 1>&2
     1.6  		initrdlen=$(( $initrdlen + $size ))
     1.7 -		[ -n "$ADRSRD" ] || ADRSRD=$(( (($MEM * 0x100000) - $initrdlen) & -$INITRDALIGN ))
     1.8 +		ADRSRD=$(( (($MEM * 0x100000) - $initrdlen) & -$INITRDALIGN ))
     1.9  		store 32 $RamfsAdrOfs $(( $ADRSRD )) $bs initrd adrs
    1.10  		store 32 $RamfsLenOfs $initrdlen $bs initrdlen
    1.11  	done
     2.1 --- a/mirror-tools/slitaz/mirror/floppies/floppies	Thu Jun 26 09:27:03 2014 +0200
     2.2 +++ b/mirror-tools/slitaz/mirror/floppies/floppies	Wed Jul 30 12:24:08 2014 +0200
     2.3 @@ -1,31 +1,30 @@
     2.4  #!/bin/sh
     2.5  
     2.6 -read32()
     2.7 +rd()
     2.8  {
     2.9 -	dd if=kernel bs=1 skip=$((0x$1)) count=4 2> /dev/null | \
    2.10 -		hexdump -e '"" 1/4 "%d" "\n"'
    2.11 +	echo $(od -j $((0x$1)) -N ${2:-4} -t u${2:-4} -An kernel)
    2.12 +}
    2.13 +
    2.14 +ds()
    2.15 +{
    2.16 +	dd count=$1 bs=${2:-512} 2>/dev/null
    2.17  }
    2.18  
    2.19  case "$1" in
    2.20 -extract)
    2.21 -	dd bs=512 count=2 > kernel 2> /dev/null
    2.22 -	setupsz=$(($(read32 1F1) & 255))
    2.23 -	dd bs=512 count=$(($setupsz - 1)) >> kernel 2> /dev/null
    2.24 -	[ $(read32 228) -ne 0 ] &&
    2.25 -	dd bs=512 count=1 2> /dev/null | strings > cmdline
    2.26 -	syssz=$(read32 1F4)
    2.27 -	syssz=$(( ($syssz + 31) / 32 ))
    2.28 -	dd bs=512 count=$syssz >> kernel 2> /dev/null
    2.29 -	ramsz=$(read32 21C)
    2.30 -	dd bs=512 count=$((($ramsz + 511) / 512)) of=rootfs 2> /dev/null
    2.31 -	dd bs=1 seek=$ramsz count=0 of=rootfs 2> /dev/null
    2.32 +extract) (
    2.33 +	ds 1
    2.34 +	ds $(rd 1F1 1)
    2.35 +	[ $(rd 228) -ne 0 ] && ds 1 | strings >cmdline
    2.36 +	ds $(( ($(rd 1F4) +31) /32)) ) >kernel
    2.37 +	ds $(( ($(rd 21C) +3) /4)) 4 >rootfs
    2.38  	;;
    2.39  *)	cat <<EOT
    2.40  usage: 
    2.41  # cat fd0*.img | $0 extract
    2.42  	creates kernel, rootfs and cmdline files
    2.43 -# cat fd1*.img | unlzma | cpio -i
    2.44 -# cat fd2*.img | unlzma | cpio -i
    2.45 -...
    2.46  EOT
    2.47 +	for i in 1 2 3; do
    2.48 +		j=" cat fd$i*.img |"
    2.49 +		echo "#$j cpio -i 2>/dev/null ||$j unlzma | cpio -idmu"
    2.50 +	done
    2.51  esac