3a6006e3a647cefe0b7d4803bbe4a2c8d7c3c0c5
[project/make_ext4fs.git] / mkuserimg.sh
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] [-L LABEL] [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 LABEL=
65 if [[ "$1" == "-L" ]]; then
66   LABEL=$2
67   shift; shift
68 fi
69
70 FC=$1
71
72 case $EXT_VARIANT in
73   ext4) ;;
74   *) echo "Only ext4 is supported!"; exit 3 ;;
75 esac
76
77 if [ -z $MOUNT_POINT ]; then
78   echo "Mount point is required"
79   exit 2
80 fi
81
82 if [ -z $SIZE ]; then
83   echo "Need size of filesystem"
84   exit 2
85 fi
86
87 OPT=""
88 if [ -n "$FC" ]; then
89   OPT="$OPT -S $FC"
90 fi
91 if [ -n "$FS_CONFIG" ]; then
92   OPT="$OPT -C $FS_CONFIG"
93 fi
94 if [ -n "$BLOCK_LIST" ]; then
95   OPT="$OPT -B $BLOCK_LIST"
96 fi
97 if [ -n "$LABEL" ]; then
98   OPT="$OPT -L $LABEL"
99 fi
100
101 MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE -T $TIMESTAMP $OPT -l $SIZE $JOURNAL_FLAGS -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
102 echo $MAKE_EXT4FS_CMD
103 $MAKE_EXT4FS_CMD
104 if [ $? -ne 0 ]; then
105   exit 4
106 fi