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