rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [diff] [blame] | 1 | STATE_DIR_IMAGE_SIZE ?= "131072" |
| 2 | STATE_DIR_IMAGE_PATH = "${DEPLOY_DIR_IMAGE}/state" |
| 3 | STATE_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" |
| 4 | IMAGE_FSTYPES_NO_WHITESPACE="$(echo "${IMAGE_FSTYPES}" | tr -d '[:space:]')" |
| 5 | DEPENDS += "mtd-utils-native" |
| 6 | |
| 7 | mk_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] |
| 23 | mode=ubi |
| 24 | image=${DEPLOY_DIR_IMAGE}/${STATE_PARTITION} |
| 25 | vol_id=0 |
| 26 | vol_type=dynamic |
| 27 | vol_name=state |
| 28 | vol_flags=autoresize |
| 29 | EOF |
| 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 | |
| 41 | ROOTFS_POSTPROCESS_COMMAND += " mk_state_image;" |
| 42 | |
| 43 | mk_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 | |
| 50 | ROOTFS_PREPROCESS_COMMAND += " mk_rootfs_folder;" |