#!/bin/bash err_handler() { ret=$? [ "$ret" -eq 0 ] && return msg_error "Running ${FUNCNAME[1]} failed!" msg_error "exit code $ret from line ${BASH_LINENO[0]}:" msg_info " $BASH_COMMAND" exit $ret } trap 'err_handler' ERR # source files src=$1 # generate image dst=$2 if [ -z "$3" -o -z "$dst" -o ! -d "$src" ]; then echo "command format: $(basename $0) " exit 0 fi # the size of generate image, get info from parameter.txt # eg. 0x00040000@0x00016000(rootfs) # calculate size fo rootfs partition: 0x00040000 * 512 = 128*0x100000 (Bytes) dst_size="$(( $3 / 1024 / 1024 ))M" cwd=$(dirname $(readlink -f $0)) export PATH=$cwd:$PATH rm -f $dst bin_dir=./ if [ -f $cwd/bin/mkfs.ext4 ];then bin_dir=bin fi mkdir -p $(dirname $dst) echo mkfs.ext4 -d $src -r 1 -N 0 -m 5 -L \"\" -O ^64bit,^huge_file $dst \"$dst_size\" mkfs.ext4 -d $src -r 1 -N 0 -m 5 -L "" -O ^64bit,^huge_file $dst "$dst_size" if [ $? != 0 ]; then echo "*** Maybe you need to increase the filesystem size " exit 1 fi echo "resize2fs -M $dst" resize2fs -M $dst echo "e2fsck -fy $dst" e2fsck -fy $dst echo "tune2fs -m 5 $dst" tune2fs -m 5 $dst echo "resize2fs -M $dst" resize2fs -M $dst