OSDN Git Service

ANRdaemon: move trace result from /sdcard to /data am: d93aa41807
[android-x86/system-extras.git] / ext4_utils / 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] [-D PRODUCT_OUT] [-B BLOCK_LIST_FILE] [-d BASE_ALLOC_FILE_IN ] [-A BASE_ALLOC_FILE_OUT ] [-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 PRODUCT_OUT=
59 if [[ "$1" == "-D" ]]; then
60   PRODUCT_OUT=$2
61   shift; shift
62 fi
63
64 BLOCK_LIST=
65 if [[ "$1" == "-B" ]]; then
66   BLOCK_LIST=$2
67   shift; shift
68 fi
69
70 BASE_ALLOC_FILE_IN=
71 if [[ "$1" == "-d" ]]; then
72   BASE_ALLOC_FILE_IN=$2
73   shift; shift
74 fi
75
76 BASE_ALLOC_FILE_OUT=
77 if [[ "$1" == "-A" ]]; then
78   BASE_ALLOC_FILE_OUT=$2
79   shift; shift
80 fi
81
82 LABEL=
83 if [[ "$1" == "-L" ]]; then
84   LABEL=$2
85   shift; shift
86 fi
87
88 FC=$1
89
90 case $EXT_VARIANT in
91   ext4) ;;
92   *) echo "Only ext4 is supported!"; exit 3 ;;
93 esac
94
95 if [ -z $MOUNT_POINT ]; then
96   echo "Mount point is required"
97   exit 2
98 fi
99
100 if [ -z $SIZE ]; then
101   echo "Need size of filesystem"
102   exit 2
103 fi
104
105 OPT=""
106 if [ -n "$FC" ]; then
107   OPT="$OPT -S $FC"
108 fi
109 if [ -n "$FS_CONFIG" ]; then
110   OPT="$OPT -C $FS_CONFIG"
111 fi
112 if [ -n "$BLOCK_LIST" ]; then
113   OPT="$OPT -B $BLOCK_LIST"
114 fi
115 if [ -n "$BASE_ALLOC_FILE_IN" ]; then
116   OPT="$OPT -d $BASE_ALLOC_FILE_IN"
117 fi
118 if [ -n "$BASE_ALLOC_FILE_OUT" ]; then
119   OPT="$OPT -D $BASE_ALLOC_FILE_OUT"
120 fi
121 if [ -n "$LABEL" ]; then
122   OPT="$OPT -L $LABEL"
123 fi
124
125 MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE -T $TIMESTAMP $OPT -l $SIZE $JOURNAL_FLAGS -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR $PRODUCT_OUT"
126 echo $MAKE_EXT4FS_CMD
127 $MAKE_EXT4FS_CMD
128 if [ $? -ne 0 ]; then
129   exit 4
130 fi