Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions classes/ubi_multi_vol-chip.bbclass
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
inherit image_types

multiubivol_mkfs () {
local mkubifs_args="$1"
local additional_mkubifs_args="$2"
local additional_ubinize_args="$3"
local name="$4"
if [ -z "$5" ]; then
local vname=""
else
local vname="_$5"
fi

echo \[${name}\] >> ubinize${vname}.cfg
echo ${additional_ubinize_args} >> ubinize${vname}.cfg
mkfs.ubifs ${additional_mkubifs_args} ${mkubifs_args}
}

multiubivol_ubinize() {
if [ -z "$1" ]; then
local vname=""
else
local vname="_$1"
fi
ubinize -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}.rootfs.ubi ${UBINIZE_ARGS} ubinize${vname}.cfg

# Cleanup cfg file
mv ubinize${vname}.cfg ${DEPLOY_DIR_IMAGE}/

# Create own symlinks for 'named' volumes
if [ -n "$vname" ]; then
cd ${DEPLOY_DIR_IMAGE}
if [ -e ${IMAGE_NAME}${vname}.rootfs.ubifs ]; then
ln -sf ${IMAGE_NAME}${vname}.rootfs.ubifs \
${IMAGE_LINK_NAME}${vname}.ubifs
fi
if [ -e ${IMAGE_NAME}${vname}.rootfs.ubi ]; then
ln -sf ${IMAGE_NAME}${vname}.rootfs.ubi \
${IMAGE_LINK_NAME}${vname}.ubi
fi
cd -
fi
}

IMAGE_CMD_multiubivol () {

# Split MKUBIFS_ARGS_<name> and UBINIZE_ARGS_<name>
for name in ${UBIMULTIVOL_BUILD}; do
eval local mkubifs_args=\"\$MKUBIFS_ARGS_${name}\"
eval local additional_ubinize_args=\"\$ADDITIONAL_UBINIZE_ARGS_${name}\"
eval local additional_mkubifs_args=\"\$ADDITIONAL_MKUBIFS_ARGS_${name}\"

multiubivol_mkfs "${mkubifs_args}" "${additional_mkubifs_args}" "${additional_ubinize_args}" "${name}" "${UBI_VOLNAME}"
done
multiubivol_ubinize ${UBI_VOLNAME}
}

IMAGE_DEPENDS_multiubivol = "mtd-utils-native"

# This variable is available to request which values are suitable for IMAGE_FSTYPES
IMAGE_TYPES = " \
multiubivol \
"
16 changes: 16 additions & 0 deletions conf/machine/chip.conf
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,19 @@ UBI_VOLNAME = "rootfs"
CHIP_UBI_PAGE_SIZE = "16384"
MKUBIFS_ARGS = "--min-io-size ${CHIP_UBI_PAGE_SIZE} --leb-size 2064384 --max-leb-cnt 2000"
UBINIZE_ARGS = "--min-io-size ${CHIP_UBI_PAGE_SIZE} --peb-size 2097152 --sub-page-size 16384"

# # Required for multi_ubi_class
# IMAGE_CLASSES += "ubi_multi_vol-chip"

# IMAGE_FSTYPES += "multiubivol"

# UBIMULTIVOL_BUILD = "rootfs boot"
# UBI_VOLNAME = "ubi"
# UBINIZE_ARGS = "-m 0x4000 -p 0x200000 -s 16384"
# export MKUBIFS_ARGS_rootfs = "-e 0x1f8000 -c 500 -m 0x4000 -x lzo"
# export ADDITIONAL_MKUBIFS_ARGS_rootfs = "-r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubifs"
# export ADDITIONAL_UBINIZE_ARGS_rootfs = "mode=ubi\nimage=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubifs\nvol_id=0\nvol_type=dynamic\nvol_name=rootfs\nvol_flags=autoresize"

# export MKUBIFS_ARGS_boot = "-e 0x1f8000 -c 500 -m 0x4000 -x lzo"
# export ADDITIONAL_MKUBIFS_ARGS_boot = "-r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.ubifs"
# export ADDITIONAL_UBINIZE_ARGS_boot = "mode=ubi\nimage=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.ubifs\nvol_id=3\nvol_type=dynamic\nvol_name=boot"