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 [-j <journal_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 JOURNAL_FLAGS=
     37 if [ "$1" = "-j" ]; then
     38   if [ "$2" = "0" ]; then
     39     JOURNAL_FLAGS="-J"
     40   else
     41     JOURNAL_FLAGS="-j $2"
     42   fi
     43   shift; shift
     44 fi
     45 
     46 TIMESTAMP=-1
     47 if [[ "$1" == "-T" ]]; then
     48   TIMESTAMP=$2
     49   shift; shift
     50 fi
     51 
     52 FS_CONFIG=
     53 if [[ "$1" == "-C" ]]; then
     54   FS_CONFIG=$2
     55   shift; shift
     56 fi
     57 
     58 BLOCK_LIST=
     59 if [[ "$1" == "-B" ]]; then
     60   BLOCK_LIST=$2
     61   shift; shift
     62 fi
     63 
     64 FC=$1
     65 
     66 case $EXT_VARIANT in
     67   ext4) ;;
     68   *) echo "Only ext4 is supported!"; exit 3 ;;
     69 esac
     70 
     71 if [ -z $MOUNT_POINT ]; then
     72   echo "Mount point is required"
     73   exit 2
     74 fi
     75 
     76 if [ -z $SIZE ]; then
     77   echo "Need size of filesystem"
     78   exit 2
     79 fi
     80 
     81 OPT=""
     82 if [ -n "$FC" ]; then
     83   OPT="$OPT -S $FC"
     84 fi
     85 if [ -n "$FS_CONFIG" ]; then
     86   OPT="$OPT -C $FS_CONFIG"
     87 fi
     88 if [ -n "$BLOCK_LIST" ]; then
     89   OPT="$OPT -B $BLOCK_LIST"
     90 fi
     91 
     92 MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE -T $TIMESTAMP $OPT -l $SIZE $JOURNAL_FLAGS -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
     93 echo $MAKE_EXT4FS_CMD
     94 $MAKE_EXT4FS_CMD
     95 if [ $? -ne 0 ]; then
     96   exit 4
     97 fi
     98