custom wic partition layout not reflected in tezi image build

Hi,
I try to create the separate partition as dual bootload and dual rootfs and some partition for also need the factory.

By manually partition separation is done by the cmdline inside the device terminal shell it was working good, but I need to implement in the yocto build to affect .wks in the wic tool at the build instead of the toradex default rootfs and bootfs are creating while I update the json, image tdx append file not affecting at the build tar.

only the toradex default rootfs and bootfs are created at the build succes, Instead of I need my custom partiton need to affect in the emmc at the SD card has the OS booting time and at the build the tar folder needs my custion partition in after the build success.

Device Info:

Software summary
------------------------------------------------------------
Bootloader:               U-Boot
Kernel version:           6.6.101-7.5.0-devel #1 SMP PREEMPT Mon Oct 27 12:24:20 UTC 2025
Kernel command line:      root=PARTUUID=f7e4900a-02 ro rootwait console=tty1 console=ttymxc2,115200 quiet loglevel=0 vt.global_cursor_default=0 vt.default_redraw=0
Distro name:              NAME="TDX Wayland with XWayland"
Distro version:           VERSION_ID=7.5.0-devel-20251114145026-build.0
Distro variant:           -
Hostname:                 verdin-imx8mp-15722244
------------------------------------------------------------
Hardware info
------------------------------------------------------------
HW model:                 Toradex Verdin iMX8M Plus WB on Verdin Development Board
Toradex version:          0070 V1.1A
Serial number:            15722244
Processor arch:           aarch64
------------------------------------------------------------

Wic and Recipe bbappend File:

hari@Administrator:~/oe-core/layers/meta-lokbest/wic$ ls
lokbest-partition-image.wks
hari@Administrator:~/oe-core/layers/meta-lokbest/wic$ cat lokbest-partition-image.wks
part /boot --source bootimg-efi --sourceparams "loader=u-boot" --ondisk mmcblk2 --fstype=vfat --label BOOT --size 64M
part / --source rootfs --ondisk mmcblk2 --fstype=ext4 --label rootfs_A --size 2048M
part /rootfsB --source blank --ondisk mmcblk2 --fstype=ext4 --label rootfs_B --size 2048M
part /factory --source blank --ondisk mmcblk2 --fstype=ext4 --label factory --size 2048M
part /recovery --source blank --ondisk mmcblk2 --fstype=ext4 --label recovery --size 512M
part /data --source blank --ondisk mmcblk2 --fstype=ext4 --label data --size 0
bootloader --ptable gpt
hari@Administrator:~/oe-core/layers/meta-lokbest/wic$ cd ../recipes-images/
hari@Administrator:~/oe-core/layers/meta-lokbest/recipes-images$ ls
images
hari@Administrator:~/oe-core/layers/meta-lokbest/recipes-images$ tree .
.
└── images
    ├── lokbest-tezi-image.json
    ├── tdx-reference-multimedia-image.bbappend
    └── tdx-reference-multimedia-image.bbappend.bkp
1 directory, 3 files
hari@Administrator:~/oe-core/layers/meta-lokbest/recipes-images$ cat images/lokbest-tezi-image.json
{
  "config_format": "4",
  "autoinstall": false,
  "name": "Lokbest Firmware",
  "description": "Lokbest Partitioned Firmware with A/B OTA + Factory + Recovery + Data",
  "version": "1.0.0",
  "release_date": "2026-01-13",
  "supported_product_ids": [ "0063" ],
  "blockdevs": [
    {
      "name": "emmc-boot0",
      "erase": true,
      "content": {
        "filesystem_type": "raw",
        "rawfiles": [
          { "filename": "imx-boot", "dd_options": "seek=0" }
        ]
      }
    },
    {
      "name": "emmc",
      "content": {
        "filesystem_type": "raw",
        "rawimages": [
          {
            "filename": "${IMAGE_NAME}.wic.bz2",
            "compressed": "bz2",
            "dd_options": "of=/dev/mmcblk2 bs=4M"
          }
        ]
      }
    }
  ],
  "prepare_script": "prepare.sh",
  "wrapup_script": "wrapup.sh",
  "icon": "toradexlinux.png",
  "marketing": "marketing.tar",
  "license": "LA_OPT_NXP_SW.html",
  "u_boot_env": "u-boot-initial-env-sd"
}
hari@Administrator:~/oe-core/layers/meta-lokbest/recipes-images$ cat images/tdx-reference-multimedia-image.bbappend
# Add our kiosk launcher
IMAGE_INSTALL:append = " display-qr-launch"
# Remove Toradex auto-launch system entirely
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 WIC formats
IMAGE_FSTYPES += " wic wic.bz2 teziimg"
# Override WIC to use Lokbest partition layout
WKS_FILE:${IMAGE_BASENAME} = "lokbest-partition-image.wks"
WKS_FILES:${IMAGE_BASENAME} = "lokbest-partition-image.wks"
WKS_FILES_DIR:${IMAGE_BASENAME} = "${LAYERDIR}/wic"
WKS_FILE_CHECKSUM:${IMAGE_BASENAME} = ""
# Override Tezi JSON to use raw WIC installer
TEZI_IMAGE_JSON:${IMAGE_BASENAME} = "${THISDIR}/images/lokbest-tezi-image.json"
# Turn off default rootfs/bootfs tarballs
TEZI_DEFAULT_BOOTFS = ""
TEZI_DEFAULT_ROOTFS = ""

Tar Build not reflected the Layout changes:

hari@Administrator:~/oe-core/build/deploy/images/verdin-imx8mp$ tar -xvf Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0.tar -C tezi_image/.
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/toradexlinux.png
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/marketing.tar
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/prepare.sh
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/wrapup.sh
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/LA_OPT_NXP_SW.html
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/image.json
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/Reference-Multimedia-Image-verdin-imx8mp.rootfs.tar.xz
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/Reference-Multimedia-Image-verdin-imx8mp.rootfs.bootfs.tar.xz
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/u-boot-initial-env-sd
Verdin-iMX8MP_Reference-Multimedia-Image-Tezi_7.5.0-devel-20260120100419+build.0/imx-boot
hari@Administrator:~/oe-core/build/deploy/images/verdin-imx8mp$

I need the help and suggestion to build the custom partition through the yocto build and while boot the device it need to create with the custom partition instead of the default toradex rootfs and bootfs.

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


To configure your custom partition layout in Yocto build, you need to properly override the Tezi image type configuration. The issue is that your bbappend file isn’t correctly disabling the default Tezi behavior that creates separate rootfs and bootfs tarballs.

Solution: Modify Your bbappend Configuration

Based on the Toradex documentation, you need to set the TEZI_USE_BOOTFILES variable to control the boot partition creation (1). Here’s the corrected bbappend configuration:

# Add our kiosk launcher
IMAGE_INSTALL:append = " display-qr-launch"

# Remove Toradex auto-launch system entirely
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 WIC formats and disable default Tezi behavior
IMAGE_FSTYPES += " wic wic.bz2 teziimg"

# Critical: Disable default boot partition creation
TEZI_USE_BOOTFILES = "false"

# Override WIC to use Lokbest partition layout
WKS_FILE = "lokbest-partition-image.wks"
WKS_FILES = "lokbest-partition-image.wks"

# Override Tezi JSON to use raw WIC installer
TEZI_IMAGE_JSON = "${THISDIR}/images/lokbest-tezi-image.json"

# Turn off default rootfs/bootfs tarballs completely
TEZI_DEFAULT_BOOTFS = ""
TEZI_DEFAULT_ROOTFS = ""

(2)

Key Changes Needed

  1. Set TEZI_USE_BOOTFILES = "false" - This boolean within the image_type_tezi.bbclass removes the boot partition and ensures your WIC layout is used instead (2).

  2. Simplify WKS variable assignments - Remove the ${IMAGE_BASENAME} suffixes as they may be causing conflicts.

  3. Ensure your WIC file path is correct - Make sure the WKS_FILES_DIR points to the right location.

Update Your WIC File

Your WIC file looks correct, but ensure the boot partition source is appropriate for your setup:

part /boot --source bootimg-efi --sourceparams "loader=u-boot" --ondisk mmcblk2 --fstype=vfat --label BOOT --size 64M
part / --source rootfs --ondisk mmcblk2 --fstype=ext4 --label rootfs_A --size 2048M
part /rootfsB --source blank --ondisk mmcblk2 --fstype=ext4 --label rootfs_B --size 2048M
part /factory --source blank --ondisk mmcblk2 --fstype=ext4 --label factory --size 2048M
part /recovery --source blank --ondisk mmcblk2 --fstype=ext4 --label recovery --size 512M
part /data --source blank --ondisk mmcblk2 --fstype=ext4 --label data --size 0
bootloader --ptable gpt

Verify Build Output

After making these changes, your Tezi tar should contain:

  • Your custom lokbest-tezi-image.json
  • The WIC image file (.wic.bz2)
  • Boot files (imx-boot, u-boot-initial-env-sd)
  • No separate rootfs/bootfs tarballs

The key insight from the community discussion is that TEZI_USE_BOOTFILES = "false" is essential to prevent the default Tezi image type from creating separate boot and rootfs partitions, allowing your custom WIC layout to take effect (2).

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.