From 62d937df42a82ee5f7a1f1521dbf730d46fc286f Mon Sep 17 00:00:00 2001 From: David Escalona Date: Thu, 23 Mar 2023 14:09:07 +0100 Subject: [PATCH] e2fsprogs: extend recipe to format data partition on first boot for block based devices Signed-off-by: David Escalona --- .../e2fsprogs/e2fsprogs_%.bbappend | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 meta-digi-dey/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend diff --git a/meta-digi-dey/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend b/meta-digi-dey/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend new file mode 100644 index 000000000..4ef05d017 --- /dev/null +++ b/meta-digi-dey/recipes-devtools/e2fsprogs/e2fsprogs_%.bbappend @@ -0,0 +1,36 @@ +# Copyright (C) 2023 Digi International. + +pkg_postinst_ontarget:${PN}-mke2fs() { + get_emmc_block_device() { + for emmc_number in $(seq 0 9); do + if [ -b "/dev/mmcblk${emmc_number}" ] && + [ -b "/dev/mmcblk${emmc_number}boot0" ] && + [ -b "/dev/mmcblk${emmc_number}boot1" ] && + [ -c "/dev/mmcblk${emmc_number}rpmb" ]; then + echo "/dev/mmcblk${emmc_number}" + break + fi + done + } + + get_emmc_data_device() { + local EMMC_BLOCK_DEVICE="$(get_emmc_block_device)" + if [ -n "${EMMC_BLOCK_DEVICE}" ]; then + local DATA_DEVICE="$(blkid ${EMMC_BLOCK_DEVICE}p* | sed -ne "{s,\(^${EMMC_BLOCK_DEVICE}[^:]\+\):.*PARTLABEL=\"data\".*,\1,g;T;p}" | sort -u)" + [ -n "${DATA_DEVICE}" ] && echo "${DATA_DEVICE}" + fi + } + + # Format and mount 'data' partition in block system based devices only if it has no format. + EMMC_DATA_DEVICE="$(get_emmc_data_device)" + if [ -n "${EMMC_DATA_DEVICE}" ] && ! blkid ${EMMC_DATA_DEVICE} | grep -q "TYPE="; then + # Format the partition. + echo "WARNING: 'data' partition has no format or it is invalid. Formatting..." + if ! mkfs.ext4 "${EMMC_DATA_DEVICE}"; then + echo "ERROR: Could not format 'data' partition" + else + # Trigger 'add' event for the partition. + echo -n add > "/sys/class/block/${EMMC_DATA_DEVICE##*/}/uevent" + fi + fi +}