system/extras
修订版 | 18a2974d6cf3c26ec82cb0b660f9a322369cadb6 (tree) |
---|---|
时间 | 2017-09-28 06:48:26 |
作者 | Jin Qian <jinqian@goog...> |
Commiter | Tao Bao |
ext4_utils: make file system image reproducible
Add flags to set filesystem uuid, hash_seed and mke2fs time.
Bug: 64994964
Change-Id: I38369a3a9dfffefead11c4b8fdd1e6984e61b938
(cherry picked from commit 407a7de4c499ede24dbbeb22d2efe6490a974b0d)
@@ -8,7 +8,8 @@ Usage: | ||
8 | 8 | mkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE [-j <journal_size>] |
9 | 9 | [-T TIMESTAMP] [-C FS_CONFIG] [-D PRODUCT_OUT] [-B BLOCK_LIST_FILE] |
10 | 10 | [-d BASE_ALLOC_FILE_IN ] [-A BASE_ALLOC_FILE_OUT ] [-L LABEL] |
11 | - [-i INODES ] [-e ERASE_BLOCK_SIZE] [-o FLASH_BLOCK_SIZE] [FILE_CONTEXTS] | |
11 | + [-i INODES ] [-e ERASE_BLOCK_SIZE] [-o FLASH_BLOCK_SIZE] | |
12 | + [-U MKE2FS_UUID] [-S MKE2FS_HASH_SEED] [FILE_CONTEXTS] | |
12 | 13 | EOT |
13 | 14 | } |
14 | 15 |
@@ -17,6 +18,7 @@ BLOCKSIZE=4096 | ||
17 | 18 | MKE2FS_OPTS="" |
18 | 19 | MKE2FS_EXTENDED_OPTS="" |
19 | 20 | E2FSDROID_OPTS="" |
21 | +E2FSPROGS_FAKE_TIME="" | |
20 | 22 | |
21 | 23 | if [ "$1" = "-s" ]; then |
22 | 24 | MKE2FS_EXTENDED_OPTS+="android_sparse" |
@@ -53,6 +55,7 @@ fi | ||
53 | 55 | |
54 | 56 | if [[ "$1" == "-T" ]]; then |
55 | 57 | E2FSDROID_OPTS+=" -T $2" |
58 | + E2FSPROGS_FAKE_TIME=$2 | |
56 | 59 | shift; shift |
57 | 60 | fi |
58 | 61 |
@@ -108,6 +111,19 @@ if [[ "$1" == "-o" ]]; then | ||
108 | 111 | shift; shift |
109 | 112 | fi |
110 | 113 | |
114 | +if [[ "$1" == "-U" ]]; then | |
115 | + MKE2FS_OPTS+=" -U $2" | |
116 | + shift; shift | |
117 | +fi | |
118 | + | |
119 | +if [[ "$1" == "-S" ]]; then | |
120 | + if [[ $MKE2FS_EXTENDED_OPTS ]]; then | |
121 | + MKE2FS_EXTENDED_OPTS+="," | |
122 | + fi | |
123 | + MKE2FS_EXTENDED_OPTS+="hash_seed=$2" | |
124 | + shift; shift | |
125 | +fi | |
126 | + | |
111 | 127 | if [[ $MKE2FS_EXTENDED_OPTS ]]; then |
112 | 128 | MKE2FS_OPTS+=" -E $MKE2FS_EXTENDED_OPTS" |
113 | 129 | fi |
@@ -141,16 +157,25 @@ SIZE=$((SIZE / BLOCKSIZE)) | ||
141 | 157 | # truncate output file since mke2fs will keep verity section in existing file |
142 | 158 | cat /dev/null >$OUTPUT_FILE |
143 | 159 | |
160 | +MAKE_EXT4FS_ENV="MKE2FS_CONFIG=./system/extras/ext4_utils/mke2fs.conf" | |
161 | +if [[ $E2FSPROGS_FAKE_TIME ]]; then | |
162 | + MAKE_EXT4FS_ENV+=" E2FSPROGS_FAKE_TIME=$E2FSPROGS_FAKE_TIME" | |
163 | +fi | |
164 | + | |
144 | 165 | MAKE_EXT4FS_CMD="mke2fs $MKE2FS_OPTS -t $EXT_VARIANT -b $BLOCKSIZE $OUTPUT_FILE $SIZE" |
145 | -echo $MAKE_EXT4FS_CMD | |
146 | -MKE2FS_CONFIG=./system/extras/ext4_utils/mke2fs.conf $MAKE_EXT4FS_CMD | |
166 | +echo $MAKE_EXT4FS_ENV $MAKE_EXT4FS_CMD | |
167 | +env $MAKE_EXT4FS_ENV $MAKE_EXT4FS_CMD | |
147 | 168 | if [ $? -ne 0 ]; then |
148 | 169 | exit 4 |
149 | 170 | fi |
150 | 171 | |
172 | +if [[ $E2FSPROGS_FAKE_TIME ]]; then | |
173 | + E2FSDROID_ENV="E2FSPROGS_FAKE_TIME=$E2FSPROGS_FAKE_TIME" | |
174 | +fi | |
175 | + | |
151 | 176 | E2FSDROID_CMD="e2fsdroid $E2FSDROID_OPTS -f $SRC_DIR -a $MOUNT_POINT $OUTPUT_FILE" |
152 | -echo $E2FSDROID_CMD | |
153 | -$E2FSDROID_CMD | |
177 | +echo $E2FSDROID_ENV $E2FSDROID_CMD | |
178 | +env $E2FSDROID_ENV $E2FSDROID_CMD | |
154 | 179 | if [ $? -ne 0 ]; then |
155 | 180 | rm -f $OUTPUT_FILE |
156 | 181 | exit 4 |