1 #!/bin/sh 2 # $NetBSD: walnut-mkimg.sh,v 1.1 2002/12/09 12:15:50 scw Exp $ 3 4 # Convert a kernel to an tftp image loadable by the walnut IBM openbios. 5 6 if [ $# -ne 2 ] ; then 7 echo usage: $0 kernel image 1>&2 8 exit 1 9 fi 10 11 kernel=$1; shift 12 output=$1; shift 13 14 : ${OBJDUMP=objdump} 15 : ${OBJCOPY=objcopy} 16 17 start=`${OBJDUMP} -f ${kernel} | awk '/start address/ { print $NF }'` 18 start=`printf "%d" $start` 19 ${OBJCOPY} -O binary ${kernel} ${kernel}.bin.$$ 20 size=`/bin/ls -l ${kernel}.bin.$$ | awk '{ printf "%d", ( $5 + 511 ) / 512 }'` 21 22 printf "%d\n%d\n0\n%d\n0\n0\n0\n" $start $size $start | 23 awk 'BEGIN { printf "\x00\x52\x50\x4f" } 24 { 25 printf "%c", $0 / 256 / 256 / 256 ; 26 printf "%c", $0 / 256 / 256 ; 27 printf "%c", $0 / 256 ; 28 printf "%c", $0 ; 29 } 30 ' > ${output} 31 32 cat ${kernel}.bin.$$ >> ${output} 33 34 rm -f ${kernel}.bin.$$ 35 exit 36