mkuserimg.sh revision 1ec61e7ac5fd7553b143231e8d650ef4ba432344
173e933f1f57002d2e593aa7b471811d8837f8767Earl Ou#!/bin/bash 273e933f1f57002d2e593aa7b471811d8837f8767Earl Ou# 373e933f1f57002d2e593aa7b471811d8837f8767Earl Ou# To call this script, make sure make_ext4fs is somewhere in PATH 473e933f1f57002d2e593aa7b471811d8837f8767Earl Ou 573e933f1f57002d2e593aa7b471811d8837f8767Earl Oufunction usage() { 673e933f1f57002d2e593aa7b471811d8837f8767Earl Oucat<<EOT 773e933f1f57002d2e593aa7b471811d8837f8767Earl OuUsage: 873e933f1f57002d2e593aa7b471811d8837f8767Earl Oumkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE [-j <journal_size>] 973e933f1f57002d2e593aa7b471811d8837f8767Earl Ou [-T TIMESTAMP] [-C FS_CONFIG] [-B BLOCK_LIST_FILE] [FILE_CONTEXTS] 1073e933f1f57002d2e593aa7b471811d8837f8767Earl OuEOT 1173e933f1f57002d2e593aa7b471811d8837f8767Earl Ou} 1273e933f1f57002d2e593aa7b471811d8837f8767Earl Ou 1373e933f1f57002d2e593aa7b471811d8837f8767Earl OuENABLE_SPARSE_IMAGE= 1473e933f1f57002d2e593aa7b471811d8837f8767Earl Ouif [ "$1" = "-s" ]; then 1573e933f1f57002d2e593aa7b471811d8837f8767Earl Ou ENABLE_SPARSE_IMAGE="-s" 1673e933f1f57002d2e593aa7b471811d8837f8767Earl Ou shift 1773e933f1f57002d2e593aa7b471811d8837f8767Earl Oufi 1873e933f1f57002d2e593aa7b471811d8837f8767Earl Ou 191792070857f96943ae110869d66f092001ad526eEarl Ouif [ $# -lt 5 ]; then 206e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk usage 216e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk exit 1 221792070857f96943ae110869d66f092001ad526eEarl Oufi 2373e933f1f57002d2e593aa7b471811d8837f8767Earl Ou 2473e933f1f57002d2e593aa7b471811d8837f8767Earl OuSRC_DIR=$1 256e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkif [ ! -d $SRC_DIR ]; then 2673e933f1f57002d2e593aa7b471811d8837f8767Earl Ou echo "Can not find directory $SRC_DIR!" 2773e933f1f57002d2e593aa7b471811d8837f8767Earl Ou exit 2 286e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkfi 296e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk 306e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben BrunkOUTPUT_FILE=$2 316e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben BrunkEXT_VARIANT=$3 326e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben BrunkMOUNT_POINT=$4 336e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben BrunkSIZE=$5 3473e933f1f57002d2e593aa7b471811d8837f8767Earl Oushift; shift; shift; shift; shift 356e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk 3673e933f1f57002d2e593aa7b471811d8837f8767Earl OuJOURNAL_FLAGS= 3773e933f1f57002d2e593aa7b471811d8837f8767Earl Ouif [ "$1" = "-j" ]; then 3873e933f1f57002d2e593aa7b471811d8837f8767Earl Ou if [ "$2" = "0" ]; then 396e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk JOURNAL_FLAGS="-J" 406e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk else 416e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk JOURNAL_FLAGS="-j $2" 426e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk fi 436e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk shift; shift 446e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkfi 456e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk 466e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben BrunkTIMESTAMP=-1 476e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkif [[ "$1" == "-T" ]]; then 486e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk TIMESTAMP=$2 491792070857f96943ae110869d66f092001ad526eEarl Ou shift; shift 506e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkfi 516e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk 5273e933f1f57002d2e593aa7b471811d8837f8767Earl OuFS_CONFIG= 5373e933f1f57002d2e593aa7b471811d8837f8767Earl Ouif [[ "$1" == "-C" ]]; then 546e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk FS_CONFIG=$2 551792070857f96943ae110869d66f092001ad526eEarl Ou shift; shift 561792070857f96943ae110869d66f092001ad526eEarl Oufi 5773e933f1f57002d2e593aa7b471811d8837f8767Earl Ou 5873e933f1f57002d2e593aa7b471811d8837f8767Earl OuBLOCK_LIST= 5973e933f1f57002d2e593aa7b471811d8837f8767Earl Ouif [[ "$1" == "-B" ]]; then 60cde6ac521216801e835df1c20b68dd21d4fd04a4Earl Ou BLOCK_LIST=$2 616e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk shift; shift 626e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkfi 636e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk 646e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben BrunkFC=$1 656e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk 666e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkcase $EXT_VARIANT in 676e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk ext4) ;; 686e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk *) echo "Only ext4 is supported!"; exit 3 ;; 69cde6ac521216801e835df1c20b68dd21d4fd04a4Earl Ouesac 70cde6ac521216801e835df1c20b68dd21d4fd04a4Earl Ou 716e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkif [ -z $MOUNT_POINT ]; then 726e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk echo "Mount point is required" 736e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk exit 2 746e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkfi 756e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk 766e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkif [ -z $SIZE ]; then 77cde6ac521216801e835df1c20b68dd21d4fd04a4Earl Ou echo "Need size of filesystem" 78cde6ac521216801e835df1c20b68dd21d4fd04a4Earl Ou exit 2 796e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkfi 80cde6ac521216801e835df1c20b68dd21d4fd04a4Earl Ou 81cde6ac521216801e835df1c20b68dd21d4fd04a4Earl OuOPT="" 82cde6ac521216801e835df1c20b68dd21d4fd04a4Earl Ouif [ -n "$FC" ]; then 83ca56f8e30a4d91c7b7e6f75a39a1a69801e49cbbEarl Ou OPT="$OPT -S $FC" 84ca56f8e30a4d91c7b7e6f75a39a1a69801e49cbbEarl Oufi 85ca56f8e30a4d91c7b7e6f75a39a1a69801e49cbbEarl Ouif [ -n "$FS_CONFIG" ]; then 866e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk OPT="$OPT -C $FS_CONFIG" 87ca56f8e30a4d91c7b7e6f75a39a1a69801e49cbbEarl Oufi 886e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunkif [ -n "$BLOCK_LIST" ]; then 89 OPT="$OPT -B $BLOCK_LIST" 90fi 91 92MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE -T $TIMESTAMP $OPT -l $SIZE $JOURNAL_FLAGS -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR" 93echo $MAKE_EXT4FS_CMD 94$MAKE_EXT4FS_CMD 95if [ $? -ne 0 ]; then 96 exit 4 97fi 98