blob: 56535a3e05100384b36281e412d3bc5c4dca73ee [file] [log] [blame]
rjw1f884582022-01-06 17:20:42 +08001STATE_DIR_IMAGE_SIZE ?= "131072"
2STATE_DIR_IMAGE_PATH = "${DEPLOY_DIR_IMAGE}/state"
3STATE_DIR_CONTENT ?= "${IMAGE_ROOTFS}/home ${IMAGE_ROOTFS}/var ${IMAGE_ROOTFS}/usr/lib/tmpfiles.d ${STATE_DIR_IMAGE_PATH}/usr/local ${STATE_DIR_IMAGE_PATH}/srv"
4IMAGE_FSTYPES_NO_WHITESPACE="$(echo "${IMAGE_FSTYPES}" | tr -d '[:space:]')"
5DEPENDS += "mtd-utils-native"
6
7mk_state_image() {
8 rm -rf ${STATE_DIR_IMAGE_PATH}
9 install -d ${STATE_DIR_CONTENT}
10 for i in ${STATE_DIR_CONTENT}; do
11 STATE_DIR_FILE_PATH=${STATE_DIR_IMAGE_PATH}/${i##${IMAGE_ROOTFS}}
12 install -d ${STATE_DIR_FILE_PATH}
13 cp -a ${i}/. ${STATE_DIR_FILE_PATH}
14 done
15
16 if test "${IMAGE_FSTYPES_NO_WHITESPACE}" = "ubi"; then
17 STATE_PARTITION="userdata.ubifs"
18 STATE_UBI="userdata.ubi"
19 STATE_UBINIZE_CFG="ubinize-state.cfg"
20 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${STATE_PARTITION} seek=${STATE_DIR_IMAGE_SIZE} count=0 bs=1k
21 cat << EOF > ${STATE_UBINIZE_CFG}
22[ubifs]
23mode=ubi
24image=${DEPLOY_DIR_IMAGE}/${STATE_PARTITION}
25vol_id=0
26vol_type=dynamic
27vol_name=state
28vol_flags=autoresize
29EOF
30 mkfs.ubifs -r ${STATE_DIR_IMAGE_PATH} -o ${DEPLOY_DIR_IMAGE}/${STATE_PARTITION} ${MKUBIFS_ARGS}
31 ubinize -o ${DEPLOY_DIR_IMAGE}/${STATE_UBI} ${UBINIZE_ARGS} ${STATE_UBINIZE_CFG}
32 elif test "${IMAGE_FSTYPES_NO_WHITESPACE}" = "ext4"; then
33 STATE_PARTITION="userdata.ext4"
34 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${STATE_PARTITION} seek=${STATE_DIR_IMAGE_SIZE} count=0 bs=1k
35 mkfs.ext4 -F -i 4096 ${DEPLOY_DIR_IMAGE}/${STATE_PARTITION} -d ${STATE_DIR_IMAGE_PATH}
36 else
37 echo "No method to make ${IMAGE_FSTYPES_NO_WHITESPACE} type state image"
38 fi
39}
40
41ROOTFS_POSTPROCESS_COMMAND += " mk_state_image;"
42
43mk_rootfs_folder() {
44 install -d ${IMAGE_ROOTFS}/mnt/userdata ${IMAGE_ROOTFS}/srv
45 if test "${DISTRO}" != "poky-agl"; then
46 install -d ${IMAGE_ROOTFS}/usr/local
47 fi
48}
49
50ROOTFS_PREPROCESS_COMMAND += " mk_rootfs_folder;"