wok view memtest/stuff/pack @ rev 15189

Add memtest-serial (again)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Aug 25 18:12:50 2013 +0000 (2013-08-25)
parents b0e9e83532e2
children b6771e9696d7
line source
1 #!/bin/sh
2 if [ "$1" == "--build" ]; then
3 set -- ${2:-bootloader.bin} ${3:-unpack.bin}
4 cat >> $0 <<EOM
5 $(dd if=$1 bs=512 count=1 conv=sync | cat - $2 | gzip -9 | uuencode -m -)
6 EOT
7 EOM
8 x=$(grep -s packed_syssize ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
9 [ -n "$x" ] && sed -i "s/XXXP/$((513+0x$x))/" $0 || sed -i s="/XXXP$/d" $0
10 x=$(grep -s original_syssize ${2/.bin/.lst}|sed '$!d;s/.*t:\([^ ]*\).*/\1/')
11 [ -n "$x" ] && sed -i "s/XXXO/$((513+0x$x))/" $0 || sed -i s="/XXXO$/d" $0
12 helpmsg=$(sed '/helpmsg:/!d{n;s/ [0-9]* \([^ ]*\).*/\1/}' ${1/.bin/.lst} | sed '$!d')
13 sed -i "s/YYY/$((0x$helpmsg))/" $0
14 sed -i "s/ZZZ/$((496-0x$helpmsg))/" $0
15 sed -i '/--build/,/^fi/d' $0
16 exit
17 fi
19 store()
20 {
21 n=$1
22 for i in $(seq 1 ${4:-2}); do
23 printf '\\\\x%02X' $(($n & 255))
24 n=$(($n >> 8))
25 done | xargs echo -en | dd conv=notrunc bs=1 of=$2 seek=$3
26 }
28 compress()
29 {
30 xz -z -e --format=lzma --lzma1=mode=normal --stdout
31 }
33 main()
34 {
35 uudecode | gunzip >$2
36 dd if=$1 bs=1 skip=497 seek=497 count=15 of=$2 conv=notrunc
37 setup="$(echo $(od -j 497 -N 1 -dAn $1))"
38 syssize="$(echo $(od -j 500 -N 2 -dAn $1))"
39 dd if=$1 bs=512 count=$setup skip=1 | compress >>$2
40 dd if=$1 bs=16 count=$syssize skip=$((32*(1+$setup))) | compress >>$2
41 size=$(stat -c %s $2)
42 store $((($size-2560+15)/16)) $2 XXXP
43 store $syssize $2 XXXO
44 store $((($size-2560+15)/16)) $2 500
45 store 4 $2 497 1
46 store $((($size+511)/512)) $2 4
47 store $((($size+15)/16)) $2 14
48 echo -en "$3" | dd conv=notrunc bs=1 seek=YYY of=$2 count=ZZZ
49 }
51 HELP="$(unix2dos <<EOT
52 Memtest86+ is an endless advanced memory diagnostic tool released under the
53 terms of the Gnu Public License (GPL).
55 EOT
56 )"
57 main $1 ${2:-$1.packed} "${3:-$HELP}" 2>/dev/null <<EOT