OSDN Git Service

2643e2b17f4dfdc9e677939851f2cc53bd010b6a
[android-x86/system-extras.git] / ext4_utils / mkuserimg.sh
1 #!/bin/bash -x
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 [FILE_CONTEXTS]
9 EOT
10 }
11
12 echo "in mkuserimg.sh PATH=$PATH"
13
14 ENABLE_SPARSE_IMAGE=
15 if [ "$1" = "-s" ]; then
16   ENABLE_SPARSE_IMAGE="-s"
17   shift
18 fi
19
20 if [ $# -ne 5 -a $# -ne 6 ]; then
21   usage
22   exit 1
23 fi
24
25 SRC_DIR=$1
26 if [ ! -d $SRC_DIR ]; then
27   echo "Can not find directory $SRC_DIR!"
28   exit 2
29 fi
30
31 OUTPUT_FILE=$2
32 EXT_VARIANT=$3
33 MOUNT_POINT=$4
34 SIZE=$5
35 FC=$6
36
37 case $EXT_VARIANT in
38   ext4) ;;
39   *) echo "Only ext4 is supported!"; exit 3 ;;
40 esac
41
42 if [ -z $MOUNT_POINT ]; then
43   echo "Mount point is required"
44   exit 2
45 fi
46
47 if [ -z $SIZE ]; then
48   echo "Need size of filesystem"
49   exit 2
50 elif [ 0 -eq 0$SIZE ]; then
51   s=$(du -sm $SRC_DIR | cut -f1)
52   e=$(($s / 10))
53   [ $e -lt 80 ] && e=80
54   SIZE=$(($s + $e))M
55 fi
56
57 if [ -n "$FC" ]; then
58     FCOPT="-S $FC"
59 fi
60
61 MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE $FCOPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
62 echo $MAKE_EXT4FS_CMD
63 $MAKE_EXT4FS_CMD
64 if [ $? -ne 0 ]; then
65   exit 4
66 fi