Home | History | Annotate | Download | only in ext4_utils
      1 #!/bin/bash
      2 #
      3 # To call this script, make sure make_ext4fs is somewhere in PATH
      4 
      5 function usage() {
      6 cat<<EOT
      7 Usage:
      8 mkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE
      9              [-T TIMESTAMP] [-C FS_CONFIG] [-B BLOCK_LIST_FILE] [FILE_CONTEXTS]
     10 EOT
     11 }
     12 
     13 ENABLE_SPARSE_IMAGE=
     14 if [ "$1" = "-s" ]; then
     15   ENABLE_SPARSE_IMAGE="-s"
     16   shift
     17 fi
     18 
     19 if [ $# -lt 5 ]; then
     20   usage
     21   exit 1
     22 fi
     23 
     24 SRC_DIR=$1
     25 if [ ! -d $SRC_DIR ]; then
     26   echo "Can not find directory $SRC_DIR!"
     27   exit 2
     28 fi
     29 
     30 OUTPUT_FILE=$2
     31 EXT_VARIANT=$3
     32 MOUNT_POINT=$4
     33 SIZE=$5
     34 shift; shift; shift; shift; shift
     35 
     36 TIMESTAMP=-1
     37 if [[ "$1" == "-T" ]]; then
     38   TIMESTAMP=$2
     39   shift; shift
     40 fi
     41 
     42 FS_CONFIG=
     43 if [[ "$1" == "-C" ]]; then
     44   FS_CONFIG=$2
     45   shift; shift
     46 fi
     47 
     48 BLOCK_LIST=
     49 if [[ "$1" == "-B" ]]; then
     50   BLOCK_LIST=$2
     51   shift; shift
     52 fi
     53 
     54 FC=$1
     55 
     56 case $EXT_VARIANT in
     57   ext4) ;;
     58   *) echo "Only ext4 is supported!"; exit 3 ;;
     59 esac
     60 
     61 if [ -z $MOUNT_POINT ]; then
     62   echo "Mount point is required"
     63   exit 2
     64 fi
     65 
     66 if [ -z $SIZE ]; then
     67   echo "Need size of filesystem"
     68   exit 2
     69 fi
     70 
     71 OPT=""
     72 if [ -n "$FC" ]; then
     73   OPT="$OPT -S $FC"
     74 fi
     75 if [ -n "$FS_CONFIG" ]; then
     76   OPT="$OPT -C $FS_CONFIG"
     77 fi
     78 if [ -n "$BLOCK_LIST" ]; then
     79   OPT="$OPT -B $BLOCK_LIST"
     80 fi
     81 
     82 MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE -T $TIMESTAMP $OPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
     83 echo $MAKE_EXT4FS_CMD
     84 $MAKE_EXT4FS_CMD
     85 if [ $? -ne 0 ]; then
     86   exit 4
     87 fi
     88