X-Git-Url: https://spindle.queued.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=mkjffs2.sh;h=216c6bdf79a1c1270c183e728fa75963df08e3f7;hb=422dba9c3658d13b95b89f66b8d5e509230c7e90;hp=99573d477554b4cd1a01a07a9f3f00f6c1225a15;hpb=d06837ed39fdb2ef3b63708011bc4ed05dcb53f0;p=xodist diff --git a/mkjffs2.sh b/mkjffs2.sh index 99573d4..216c6bd 100755 --- a/mkjffs2.sh +++ b/mkjffs2.sh @@ -27,6 +27,7 @@ usage() echo "" 1>&2 echo "Options:" 1>&2 echo " --config-type directory name in configs/ to use" 1>&2 + echo " --help display this help screen" 1>&2 echo "" 1>&2 exit 1 } @@ -42,6 +43,9 @@ do } shift ;; + --help|-h) + usage + ;; *) if [ "$#" != "2" ]; then echo "Unknown option $1" 1>&2 @@ -93,53 +97,93 @@ create_jffs2() rm -f ${out}.pre } -do_sha256() -{ - f=$1 - eblocks=$((`stat --printf "%s\n" $f` / (128*1024))) - for b in $(seq 0 $(($eblocks - 1))); do - sha=$(dd status=noxfer bs=128KiB skip=$b count=1 if=$f 2>/dev/null | sha256sum | cut -d\ -f1) - echo "eblock: `printf '%x' $b` sha256 $sha" >> ${IMG_NAME} - done -} - partition_map() { - # 0x190 * 128KiB = 50MiB boot, and the rest for root cat >${IMG_NAME}<>${IMG_NAME}<> ${IMG_NAME} + sed -ne 's/^mtd://p' configs/${CONFIG_TYPE}/fstab-jffs2 | \ + while read name mntpt fstype extra; do + size=$(echo $extra | sed -ne 's/.*[[:space:]]\+#[[:space:]]\+//p') + if [ "${size}" = "" ]; then + size="-1" + else + # size in fstab is in MB; convert to 128KiB chunks (in hex) + # MB * (1024/128) + size=$((size * 8)) + size=`printf "%x\n" $size` + fi + printf " $name $size" >> ${IMG_NAME} + done + printf "\n" >> ${IMG_NAME} + + # individual partitions + sed -ne 's/^mtd://p' configs/${CONFIG_TYPE}/fstab-jffs2 | \ + while read name mntpt fstype extra; do + cat >>${IMG_NAME}<>${IMG_NAME}</dev/null \ + | sha256sum | cut -d\ -f1) + echo "eblock: `printf '%x' $b` sha256 $sha" >> ${IMG_NAME} + done + cat >>${IMG_NAME}< ${DAT_NAME} -rm -f _boot.img _root.img + +# concat partitions, finish up +rm -f ${DAT_NAME} +sed -ne 's/^mtd://p' configs/${CONFIG_TYPE}/fstab-jffs2 | \ + while read name mntpt fstype extra; do + cat "_${name}.img" >> ${DAT_NAME} + rm -f "_${name}.img" +done + +exit 0