33 lines
973 B
Bash
Executable File
33 lines
973 B
Bash
Executable File
#!/bin/sh
|
|
# my-mkimage
|
|
# This will pad given files to 64k boundaries to make a single u-boot image.
|
|
# we have to be fancy because u-boot mkimage is going to add 64 byte header, ...
|
|
# and i only know basic arithmetic.. ;)
|
|
#
|
|
# Copyright (C) 2010 Scott Nicholas <neutronscott@scottn.us>
|
|
[ $# -lt 2 ] && {
|
|
echo usage: $0 loader.bin [rootfs.squashfs [fs_mark [...]]] output.bin
|
|
}
|
|
|
|
OLDSIZE=$(stat -c%s $1)
|
|
NEWSIZE=$(((OLDSIZE / 65536 + 1) * 65536 - 64))
|
|
|
|
dd if=$1 of=vmlinuz.tmp bs=$NEWSIZE conv=sync >/dev/null 2>&1
|
|
shift
|
|
appends=$(($# - 1))
|
|
echo
|
|
while [ $appends -gt 0 ]; do
|
|
dd if=$1 of=temp bs=64k conv=sync >/dev/null 2>&1
|
|
printf "### '%s' starts at 0x%x\n" "`basename $1`" "$((NEWSIZE+64))"
|
|
cat temp >>vmlinuz.tmp
|
|
shift
|
|
appends=$((appends-1))
|
|
NEWSIZE=$(stat -c%s vmlinuz.tmp)
|
|
done
|
|
echo
|
|
../../../../staging_dir/host/bin/mkimage -A mips -O linux -T kernel \
|
|
-C none -a 0x80400000 -e 0x80400000 -n "ADM8668 Linux Kernel(2.4.31)" \
|
|
-d vmlinuz.tmp $1
|
|
|
|
rm temp vmlinuz.tmp
|