diff options
author | Ying Wang <wangying@google.com> | 2010-06-16 11:53:52 -0700 |
---|---|---|
committer | Ying Wang <wangying@google.com> | 2010-06-16 14:57:20 -0700 |
commit | 212bd3e547d4720784d82900ec843b104f65e0d9 (patch) | |
tree | b9d69a546d97a7ed1a85161f06dbedd76e0c95e5 /mkuserimg.sh | |
parent | 4c6c6f56ec399911c3722c4eb06b346905a57b02 (diff) | |
download | genext2fs-212bd3e547d4720784d82900ec843b104f65e0d9.tar.gz |
Split commands out of Config.mk
So that we can call the commands in release tools (in Python) later.
The function definition in Config.mk is moved to build/core/Makefile.
Change-Id: I23b9780fd4dac6a7f34ebf8837e2fa839e4bbf30
Diffstat (limited to 'mkuserimg.sh')
-rwxr-xr-x | mkuserimg.sh | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/mkuserimg.sh b/mkuserimg.sh new file mode 100755 index 0000000..c0efdb8 --- /dev/null +++ b/mkuserimg.sh @@ -0,0 +1,105 @@ +#!/bin/bash +# + +function usage() { +cat<<EOT +Usage: +mkuserimg.sh MKEXT2IMG TUNE2FS E2FSCK SRC_DIR OUTPUT_FILE EXT_VARIANT [LABEL] +EOT +} + +if [ $# -ne 6 -a $# -ne 7 ]; then + usage + exit 1 +fi + +MKEXT2IMG=$1 +if [ ! -x $MKEXT2IMG -o ! -f $MKEXT2IMG ]; then + echo "Can not find executable $MKEXT2IMG!" + exit 2 +fi + +TUNE2FS=$2 +if [ ! -x $TUNE2FS -o ! -f $TUNE2FS ]; then + echo "Can not find executable $TUNE2FS!" + exit 3 +fi + +E2FSCK=$3 +if [ ! -x $E2FSCK -o ! -f $E2FSCK ]; then + echo "Can not find executable $E2FSCK!" + exit 4 +fi + +SRC_DIR=$4 +if [ ! -d $SRC_DIR ]; then + echo "Can not find directory $SRC_DIR!" + exit 5 +fi + +OUTPUT_FILE=$5 +EXT_VARIANT=$6 +LABEL=$7 + +case $EXT_VARIANT in + ext2) ;; + ext3) ;; + ext4) ;; + *) echo "Only ext2, ext3, ext4 are supported!"; exit 6 ;; +esac + +num_blocks=`du -sk $SRC_DIR | tail -n1 | awk '{print $1;}'` +if [ $num_blocks -lt 20480 ]; then + extra_blocks=3072 +else + extra_blocks=20480 +fi +num_blocks=`expr $num_blocks + $extra_blocks` +num_inodes=`find $SRC_DIR | wc -l` +num_inodes=`expr $num_inodes + 500` + +echo "num_blocks=$num_blocks" +echo "num_inodes=$num_inodes" + +echo "$MKEXT2IMG -a -d $SRC_DIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT_FILE" +$MKEXT2IMG -a -d $SRC_DIR -b $num_blocks -N $num_inodes -m 0 $OUTPUT_FILE +if [ $? -ne 0 ]; then + exit 7 +fi + +if [ -n $LABEL ]; then + echo "$TUNE2FS -L $LABEL $OUTPUT_FILE" + $TUNE2FS -L $LABEL $OUTPUT_FILE + if [ $? -ne 0 ]; then + exit 8 + fi +fi + +if [ $EXT_VARIANT = "ext3" ]; then + echo "$TUNE2FS -j $OUTPUT_FILE" + $TUNE2FS -j $OUTPUT_FILE + if [ $? -ne 0 ]; then + exit 9 + fi +elif [ $EXT_VARIANT = "ext4" ]; then + echo "$TUNE2FS -j -O extents,uninit_bg,dir_index $OUTPUT_FILE" + $TUNE2FS -j -O extents,uninit_bg,dir_index $OUTPUT_FILE + if [ $? -ne 0 ]; then + exit 10 + fi +fi + +echo "$TUNE2FS -C 1 $OUTPUT_FILE" +$TUNE2FS -C 1 $OUTPUT_FILE +if [ $? -ne 0 ]; then + exit 11 +fi + +echo "$E2FSCK -fy $OUTPUT_FILE" +$E2FSCK -fy $OUTPUT_FILE +if [ $? -ge 4 ]; then + echo "$E2FSCK returns value $?, no less than 4!" + exit 12 +else + exit 0 +fi |