Hi, I’m the Toradex AI Assistant.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?

This behavior is related to how OSTree handles filesystem updates and device tree management. Let me explain what’s happening with your two approaches.
Understanding OSTree Behavior
OSTree manages multiple bootable filesystem trees within a single partition and delivers updates atomically(1). When OSTree creates a “deployment” for a specific collection of objects that make up a bootable version of the filesystem, it uses a directory of hard links to the objects in the repository(1).
Your Two Approaches
TorizonCore Builder Approach
Your TorizonCore Builder configuration correctly applies the device tree customization:
customization:
device-tree:
include-dirs:
- linux/include
- linux/arch/arm64/boot/dts/freescale
custom: linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-nonwifi-ivy.dts
This approach uses TorizonCore Builder’s device tree management system, which properly integrates the custom device tree into the OSTree commit(2)(3).
Yocto Approach Issue
When you modify the fdtfile
variable in verdin-imx8mp.h
through Yocto, you’re changing the U-Boot environment variable that tells U-Boot which device tree file to load. However, this approach may not properly integrate with OSTree’s filesystem management.
Root Cause Analysis
The issue you’re experiencing suggests that your Yocto-built image isn’t properly placing the device tree files in the OSTree-managed filesystem structure, or the U-Boot environment changes aren’t being preserved through the OSTree update process.
OSTree handles directories such as /var
and /etc
as special cases, providing persistent configuration and preservation of user data(1). However, device tree files and U-Boot environment variables need to be properly integrated into the OSTree commit structure.
Recommended Solutions
-
Use TorizonCore Builder’s device tree commands: The dt
command has subcommands to build and apply custom device trees to devices(2). This ensures proper OSTree integration.
-
Verify device tree placement: Ensure your Yocto build places the device tree files in the correct location within the OSTree filesystem structure.
-
Check U-Boot environment persistence: Verify that your U-Boot environment changes are being properly committed to the OSTree repository.
The TorizonCore Builder approach works because it’s specifically designed to handle device tree customizations within the OSTree framework, ensuring that both the device tree files and the necessary configuration changes are properly committed to the OSTree repository.
Best regards,
Toradex AI Assistant.