Partition layout issue with wic tool on yocto build image

The error indicates that the tdx-tezi-data-partition class is not available in your current BSP layer setup. This class is part of the meta-toradex-security layer, not the standard BSP layers.

Correct Configuration Setup

1. Remove Problematic Configuration from local.conf

Remove these lines from your local.conf file:

# Remove these lines - they require meta-toradex-security layer
INHERIT += "tdx-tezi-data-partition"
TDX_TEZI_DATA_PARTITION_TYPE = "ext4"
TDX_TEZI_DATA_PARTITION_LABEL = "data"

2. Fix Your bbappend File Path

Update your tdx-reference-multimedia-image.bbappend file path in the TEZI_IMAGE_JSON line:

# Change this line:
TEZI_IMAGE_JSON:${IMAGE_BASENAME} = "${THISDIR}/images/files/lokbest-tezi-image.json"

# To this:
TEZI_IMAGE_JSON = "${THISDIR}/files/lokbest-tezi-image.json"

3. Complete bbappend File Configuration

Your corrected tdx-reference-multimedia-image.bbappend should be:

# Add custom applications
IMAGE_INSTALL:append = " display-qr-launch"

# Remove default Wayland demos
APP_LAUNCH_WAYLAND = ""
IMAGE_INSTALL:remove = " wayland-qtdemo-launch-cinematicexperience"
IMAGE_INSTALL:remove = " wayland-qtdemo-launch-analogclock"
IMAGE_INSTALL:remove = " wayland-qtdemo-launch-qtsmarthome"
IMAGE_INSTALL:remove = " wayland-terminal-launch"

# Enable TEZI image format
IMAGE_FSTYPES += "teziimg"

# Use custom TEZI JSON configuration
TEZI_IMAGE_JSON = "${THISDIR}/files/lokbest-tezi-image.json"

# Keep default bootfs and rootfs for your A/B layout
TEZI_DEFAULT_BOOTFS = "Reference-Multimedia-Image-${MACHINE}.rootfs.bootfs.tar.xz"
TEZI_DEFAULT_ROOTFS = "Reference-Multimedia-Image-${MACHINE}.rootfs.tar.xz"

4. Updated image.json Configuration

Create your lokbest-tezi-image.json file with the correct structure(1):

{
    "config_format": "4",
    "autoinstall": false,
    "name": "Lokbest Custom Partition Layout",
    "description": "Custom multimedia image with A/B boot partitions",
    "version": "1.0.0",
    "supported_product_ids": [
        "0070"
    ],
    "blockdevs": [
        {
            "name": "emmc",
            "partitions": [
                {
                    "partition_size_nominal": 64,
                    "want_maximised": false,
                    "content": {
                        "label": "boot_A",
                        "filesystem_type": "fat",
                        "mkfs_options": "",
                        "filename": "Reference-Multimedia-Image-verdin-imx8mp.rootfs.bootfs.tar.xz",
                        "uncompressed_size": 8.671875
                    }
                },
                {
                    "partition_size_nominal": 64,
                    "want_maximised": false,
                    "content": {
                        "label": "boot_B",
                        "filesystem_type": "fat",
                        "mkfs_options": ""
                    }
                },
                {
                    "partition_size_nominal": 2048,
                    "want_maximised": false,
                    "content": {
                        "label": "rootfs_A",
                        "filesystem_type": "ext4",
                        "mkfs_options": "-E nodiscard",
                        "filename": "Reference-Multimedia-Image-verdin-imx8mp.rootfs.tar.xz",
                        "uncompressed_size": 1272.7109375
                    }
                },
                {
                    "partition_size_nominal": 2048,
                    "want_maximised": false,
                    "content": {
                        "label": "rootfs_B",
                        "filesystem_type": "ext4",
                        "mkfs_options": "-E nodiscard"
                    }
                },
                {
                    "partition_size_nominal": 2048,
                    "want_maximised": false,
                    "content": {
                        "label": "factory",
                        "filesystem_type": "ext4",
                        "mkfs_options": "-E nodiscard"
                    }
                },
                {
                    "partition_size_nominal": 512,
                    "want_maximised": false,
                    "content": {
                        "label": "recovery",
                        "filesystem_type": "ext4",
                        "mkfs_options": "-E nodiscard"
                    }
                },
                {
                    "want_maximised": true,
                    "content": {
                        "label": "data",
                        "filesystem_type": "ext4",
                        "mkfs_options": "-E nodiscard"
                    }
                }
            ]
        },
        {
            "name": "emmc-boot0",
            "erase": true,
            "content": {
                "filesystem_type": "raw",
                "rawfiles": [
                    {
                        "filename": "imx-boot",
                        "dd_options": "seek=0"
                    }
                ]
            }
        }
    ]
}

5. Simplified local.conf Configuration

Your local.conf should only contain:

# Machine and distro settings
MACHINE = "verdin-imx8mp"
DISTRO = "tdx-xwayland"

# Your custom applications
IMAGE_INSTALL:append = " test-suite"
IMAGE_INSTALL:append = " lokbest-project"

# Enable TEZI image format
IMAGE_FSTYPES += "teziimg"

# GStreamer preferences (keep your existing ones)
PREFERRED_VERSION_gstreamer1.0-plugins-ugly = "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-ugly-dev = "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-ugly-meta = "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-ugly-asf = "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-libav = "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-libav-dev = "1.24.0.imx"

6. Build Commands

Clean and rebuild with these commands:

# Clean the image completely
$ bitbake -c cleanall tdx-reference-multimedia-image

# Build the image
$ bitbake tdx-reference-multimedia-image

Key Points:

  1. The tdx-tezi-data-partition class requires the meta-toradex-security layer(2), which is not included in your standard BSP build
  2. Use direct TEZI JSON configuration instead of relying on specialized classes(1)
  3. The partition layout is defined entirely in the image.json file(1), not through Yocto variables
  4. File paths in bbappend files should use ${THISDIR}/files/ format

This configuration will create your custom partition layout without requiring additional security layers.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.