xref: /aosp_15_r20/system/extras/squashfs_utils/mksquashfsimage.sh (revision 288bf5226967eb3dac5cce6c939ccc2a7f2b4fe5)
1*288bf522SAndroid Build Coastguard Worker#!/bin/bash
2*288bf522SAndroid Build Coastguard Worker#
3*288bf522SAndroid Build Coastguard Worker# To call this script, make sure mksquashfs is somewhere in PATH
4*288bf522SAndroid Build Coastguard Worker
5*288bf522SAndroid Build Coastguard Workerfunction usage() {
6*288bf522SAndroid Build Coastguard Workercat<<EOT
7*288bf522SAndroid Build Coastguard WorkerUsage:
8*288bf522SAndroid Build Coastguard Worker${0##*/} SRC_DIR OUTPUT_FILE [-s] [-m MOUNT_POINT] [-d PRODUCT_OUT] [-C FS_CONFIG ] [-c FILE_CONTEXTS] [-B BLOCK_MAP_FILE] [-b BLOCK_SIZE] [-z COMPRESSOR] [-zo COMPRESSOR_OPT] [-t COMPRESS_THRESHOLD] [-w WHITELIST_FILE] [-a]
9*288bf522SAndroid Build Coastguard WorkerEOT
10*288bf522SAndroid Build Coastguard Worker}
11*288bf522SAndroid Build Coastguard Worker
12*288bf522SAndroid Build Coastguard Workerecho "in mksquashfsimage.sh PATH=$PATH"
13*288bf522SAndroid Build Coastguard Worker
14*288bf522SAndroid Build Coastguard Workerif [ $# -lt 2 ]; then
15*288bf522SAndroid Build Coastguard Worker    usage
16*288bf522SAndroid Build Coastguard Worker    exit 1
17*288bf522SAndroid Build Coastguard Workerfi
18*288bf522SAndroid Build Coastguard Worker
19*288bf522SAndroid Build Coastguard WorkerSRC_DIR=$1
20*288bf522SAndroid Build Coastguard Workerif [ ! -d $SRC_DIR ]; then
21*288bf522SAndroid Build Coastguard Worker  echo "Can not find directory $SRC_DIR!"
22*288bf522SAndroid Build Coastguard Worker  exit 2
23*288bf522SAndroid Build Coastguard Workerfi
24*288bf522SAndroid Build Coastguard WorkerOUTPUT_FILE=$2
25*288bf522SAndroid Build Coastguard Workershift; shift
26*288bf522SAndroid Build Coastguard Worker
27*288bf522SAndroid Build Coastguard WorkerSPARSE=false
28*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-s" ]]; then
29*288bf522SAndroid Build Coastguard Worker    SPARSE=true
30*288bf522SAndroid Build Coastguard Worker    shift;
31*288bf522SAndroid Build Coastguard Workerfi
32*288bf522SAndroid Build Coastguard Worker
33*288bf522SAndroid Build Coastguard WorkerMOUNT_POINT=
34*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-m" ]]; then
35*288bf522SAndroid Build Coastguard Worker    MOUNT_POINT=$2
36*288bf522SAndroid Build Coastguard Worker    shift; shift
37*288bf522SAndroid Build Coastguard Workerfi
38*288bf522SAndroid Build Coastguard Worker
39*288bf522SAndroid Build Coastguard WorkerPRODUCT_OUT=
40*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-d" ]]; then
41*288bf522SAndroid Build Coastguard Worker    PRODUCT_OUT=$2
42*288bf522SAndroid Build Coastguard Worker    shift; shift
43*288bf522SAndroid Build Coastguard Workerfi
44*288bf522SAndroid Build Coastguard Worker
45*288bf522SAndroid Build Coastguard WorkerFS_CONFIG=
46*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-C" ]]; then
47*288bf522SAndroid Build Coastguard Worker    FS_CONFIG=$2
48*288bf522SAndroid Build Coastguard Worker    shift; shift
49*288bf522SAndroid Build Coastguard Workerfi
50*288bf522SAndroid Build Coastguard Worker
51*288bf522SAndroid Build Coastguard WorkerFILE_CONTEXTS=
52*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-c" ]]; then
53*288bf522SAndroid Build Coastguard Worker    FILE_CONTEXTS=$2
54*288bf522SAndroid Build Coastguard Worker    shift; shift
55*288bf522SAndroid Build Coastguard Workerfi
56*288bf522SAndroid Build Coastguard Worker
57*288bf522SAndroid Build Coastguard WorkerBLOCK_MAP_FILE=
58*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-B" ]]; then
59*288bf522SAndroid Build Coastguard Worker    BLOCK_MAP_FILE=$2
60*288bf522SAndroid Build Coastguard Worker    shift; shift
61*288bf522SAndroid Build Coastguard Workerfi
62*288bf522SAndroid Build Coastguard Worker
63*288bf522SAndroid Build Coastguard WorkerBLOCK_SIZE=131072
64*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-b" ]]; then
65*288bf522SAndroid Build Coastguard Worker    BLOCK_SIZE=$2
66*288bf522SAndroid Build Coastguard Worker    shift; shift
67*288bf522SAndroid Build Coastguard Workerfi
68*288bf522SAndroid Build Coastguard Worker
69*288bf522SAndroid Build Coastguard WorkerCOMPRESSOR="lz4"
70*288bf522SAndroid Build Coastguard WorkerCOMPRESSOR_OPT="-Xhc"
71*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-z" ]]; then
72*288bf522SAndroid Build Coastguard Worker    COMPRESSOR=$2
73*288bf522SAndroid Build Coastguard Worker    COMPRESSOR_OPT=
74*288bf522SAndroid Build Coastguard Worker    shift; shift
75*288bf522SAndroid Build Coastguard Workerfi
76*288bf522SAndroid Build Coastguard Worker
77*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-zo" ]]; then
78*288bf522SAndroid Build Coastguard Worker    COMPRESSOR_OPT=$2
79*288bf522SAndroid Build Coastguard Worker    shift; shift
80*288bf522SAndroid Build Coastguard Workerfi
81*288bf522SAndroid Build Coastguard Worker
82*288bf522SAndroid Build Coastguard WorkerCOMPRESS_THRESHOLD=0
83*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-t" ]]; then
84*288bf522SAndroid Build Coastguard Worker    COMPRESS_THRESHOLD=$2
85*288bf522SAndroid Build Coastguard Worker    shift; shift
86*288bf522SAndroid Build Coastguard Workerfi
87*288bf522SAndroid Build Coastguard Worker
88*288bf522SAndroid Build Coastguard WorkerWHITELIST_FILE=
89*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-w" ]]; then
90*288bf522SAndroid Build Coastguard Worker    WHITELIST_FILE=$2
91*288bf522SAndroid Build Coastguard Worker    shift; shift
92*288bf522SAndroid Build Coastguard Workerfi
93*288bf522SAndroid Build Coastguard Worker
94*288bf522SAndroid Build Coastguard WorkerDISABLE_4K_ALIGN=false
95*288bf522SAndroid Build Coastguard Workerif [[ "$1" == "-a" ]]; then
96*288bf522SAndroid Build Coastguard Worker    DISABLE_4K_ALIGN=true
97*288bf522SAndroid Build Coastguard Worker    shift;
98*288bf522SAndroid Build Coastguard Workerfi
99*288bf522SAndroid Build Coastguard Worker
100*288bf522SAndroid Build Coastguard WorkerOPT=""
101*288bf522SAndroid Build Coastguard Workerif [ -n "$MOUNT_POINT" ]; then
102*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -mount-point $MOUNT_POINT"
103*288bf522SAndroid Build Coastguard Workerfi
104*288bf522SAndroid Build Coastguard Workerif [ -n "$PRODUCT_OUT" ]; then
105*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -product-out $PRODUCT_OUT"
106*288bf522SAndroid Build Coastguard Workerfi
107*288bf522SAndroid Build Coastguard Workerif [ -n "$FS_CONFIG" ]; then
108*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -fs-config-file $FS_CONFIG"
109*288bf522SAndroid Build Coastguard Workerfi
110*288bf522SAndroid Build Coastguard Workerif [ -n "$FILE_CONTEXTS" ]; then
111*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -context-file $FILE_CONTEXTS"
112*288bf522SAndroid Build Coastguard Workerfi
113*288bf522SAndroid Build Coastguard Workerif [ -n "$BLOCK_MAP_FILE" ]; then
114*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -block-map $BLOCK_MAP_FILE"
115*288bf522SAndroid Build Coastguard Workerfi
116*288bf522SAndroid Build Coastguard Workerif [ -n "$BLOCK_SIZE" ]; then
117*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -b $BLOCK_SIZE"
118*288bf522SAndroid Build Coastguard Workerfi
119*288bf522SAndroid Build Coastguard Workerif [ -n "$COMPRESS_THRESHOLD" ]; then
120*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -t $COMPRESS_THRESHOLD"
121*288bf522SAndroid Build Coastguard Workerfi
122*288bf522SAndroid Build Coastguard Workerif [ "$DISABLE_4K_ALIGN" = true ]; then
123*288bf522SAndroid Build Coastguard Worker  OPT="$OPT -disable-4k-align"
124*288bf522SAndroid Build Coastguard Workerfi
125*288bf522SAndroid Build Coastguard Workerif [ -n "$WHITELIST_FILE" ]; then
126*288bf522SAndroid Build Coastguard Worker    OPT="$OPT -whitelist $WHITELIST_FILE"
127*288bf522SAndroid Build Coastguard Workerfi
128*288bf522SAndroid Build Coastguard Worker
129*288bf522SAndroid Build Coastguard WorkerMAKE_SQUASHFS_CMD="mksquashfs $SRC_DIR/ $OUTPUT_FILE -no-progress -comp $COMPRESSOR $COMPRESSOR_OPT -no-exports -noappend -no-recovery -no-fragments -no-duplicates -android-fs-config $OPT"
130*288bf522SAndroid Build Coastguard Workerecho $MAKE_SQUASHFS_CMD
131*288bf522SAndroid Build Coastguard Worker$MAKE_SQUASHFS_CMD
132*288bf522SAndroid Build Coastguard Worker
133*288bf522SAndroid Build Coastguard Workerif [ $? -ne 0 ]; then
134*288bf522SAndroid Build Coastguard Worker    exit 4
135*288bf522SAndroid Build Coastguard Workerfi
136*288bf522SAndroid Build Coastguard Worker
137*288bf522SAndroid Build Coastguard WorkerSPARSE_SUFFIX=".sparse"
138*288bf522SAndroid Build Coastguard Workerif [ "$SPARSE" = true ]; then
139*288bf522SAndroid Build Coastguard Worker    img2simg $OUTPUT_FILE $OUTPUT_FILE$SPARSE_SUFFIX
140*288bf522SAndroid Build Coastguard Worker    if [ $? -ne 0 ]; then
141*288bf522SAndroid Build Coastguard Worker        exit 4
142*288bf522SAndroid Build Coastguard Worker    fi
143*288bf522SAndroid Build Coastguard Worker    mv $OUTPUT_FILE$SPARSE_SUFFIX $OUTPUT_FILE
144*288bf522SAndroid Build Coastguard Workerfi
145*288bf522SAndroid Build Coastguard Worker
146