wok-tiny view linux/stuff/bundle @ rev 102

keyboard: add kernel cmdline optional support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Jan 05 14:44:30 2016 +0100 (2016-01-05)
parents 84dee9f78001
children 2cc2f08d75b7
line source
1 #!/bin/sh
3 ddq()
4 {
5 dd "$@" 2> /dev/null
6 }
8 store()
9 {
10 n=$2; for i in $(seq 8 8 32); do
11 printf '\\\\x%02X' $(($n & 255))
12 n=$(($n >> 8))
13 done | xargs echo -en | ddq bs=1 conv=notrunc of="$3" seek=$(($1))
14 }
16 get()
17 {
18 echo $(od -j $(($1)) -N ${3:-4} -t u${3:-4} -An "$2")
19 }
21 end()
22 {
23 echo $(( $(get 0x1F1 "$1" 1)*32 +($(get 0x1F4 "$1") +31 +${2:-1})&-${2:-1} ))
24 }
26 if [ ! -s "$1" ]; then
27 cat <<EOT
28 Usage: $0 kernel [initrd] [@]
29 EOT
30 elif [ -s "$2" ]; then
31 base_initrd=$((0x00300000))
32 size_initrd=$(stat -c %s "$2")
33 [ $(($base_initrd + $size_initrd)) -gt $((0x1000000)) ] &&
34 base_initrd=$((0x01400000))
35 [ "$3" ] && base_initrd=$(($3))
36 printf "initrd @%X %X\n" $base_initrd $size_initrd
37 store 0x218 $base_initrd "$1"
38 store 0x21C $size_initrd "$1"
39 ddq bs=16 seek=$(end "$1" 32) of="$1" if="$2"
40 ls -l "$1"
41 else
42 base_initrd=$(get 0x218 "$1")
43 size_initrd=$(get 0x21C "$1")
44 [ $base_initrd -ne 0 ] &&
45 printf "initrd @%X\n" $base_initrd &&
46 ddq bs=1 skip=$(($(end "$1" 32) * 16)) count=$size_initrd \
47 if="$1" of=initrd && ls -l initrd
48 store 0x218 0 "$1"
49 store 0x21C 0 "$1"
50 ddq bs=16 count=0 seek=$(end "$1") of="$1"
51 ls -l "$1"
52 fi