set -e BURNING_IMG=ok62lxx-linux-fs.sdcard SDK_PATH=$1 DESTDIR=$2 FS_SIZE=$(du -s -k $DESTDIR | grep -o "^[0-9]*" | tail -n 1) # uboot size 8*1024 KB rawsize=1024 # boot partition 120 * 1024 KB fatsize=85184 # rootfs partition ext4size=$(((($FS_SIZE) + $FS_SIZE / 8) & ~(32-1))) totalsize=`expr $rawsize + $fatsize + $ext4size + 1` echo totalsize $totalsize # pack boot if [ -e $SDK_PATH/images/boot.img ];then rm $SDK_PATH/images/boot.img fi mkfs.vfat -n "Boot" -S 512 -C $SDK_PATH/images/boot.img $fatsize mcopy -i $SDK_PATH/images/boot.img $SDK_PATH/images/tiboot3.bin ::/tiboot3.bin mcopy -i $SDK_PATH/images/boot.img $SDK_PATH/images/tispl.bin ::/tispl.bin mcopy -i $SDK_PATH/images/boot.img $SDK_PATH/images/u-boot.img ::/u-boot.img # pack rootfs if [ -e $SDK_PATH/images/rootfs.ext4 ];then rm $SDK_PATH/images/rootfs.ext4 fi dd if=/dev/zero of=$SDK_PATH/images/rootfs.ext4 bs=1K count=0 seek=$ext4size #chown -h -R 0:0 $DESTDIR #find $DESTDIR -name .gitignore -exec rm {} \; mkfs.ext4 -F -i 4096 $SDK_PATH/images/rootfs.ext4 -d $DESTDIR fsck.ext4 -pvfD $SDK_PATH/images/rootfs.ext4 # create burning image fatstart=$rawsize fatend=`expr $rawsize + $fatsize` ext4start=`expr $fatend` ext4end=`expr $fatend + $ext4size` echo ext4end $ext4end dd if=/dev/zero of=$SDK_PATH/images/$BURNING_IMG bs=1K count=0 seek=$totalsize parted -s $SDK_PATH/images/$BURNING_IMG mklabel msdos parted -s $SDK_PATH/images/$BURNING_IMG unit KiB mkpart primary fat32 $fatstart $fatend parted -s $SDK_PATH/images/$BURNING_IMG unit KiB mkpart primary $ext4start $ext4end parted $SDK_PATH/images/$BURNING_IMG unit B print # pack uboot kernel rootfs to burning img dd if=$SDK_PATH/images/boot.img of=$SDK_PATH/images/$BURNING_IMG bs=1K seek=$fatstart conv=notrunc,fsync dd if=$SDK_PATH/images/rootfs.ext4 of=$SDK_PATH/images/$BURNING_IMG bs=1K seek=$ext4start conv=notrunc,fsync split -b 2G $SDK_PATH/images/$BURNING_IMG $SDK_PATH/images/${BURNING_IMG}. rm -rf $SDK_PATH/images/boot.img rm -rf $SDK_PATH/images/rootfs.ext4 rm -rf $SDK_PATH/images/$BURNING_IMG