Create empty partitions in Tezi

I currently use Toradex Easy Installer to install my custom image built using Yocto. I would like to add an empty ext4 partition to my image that will be used by the runtime applications for user data. I understand that Tezi is responsible for creating partitions according to the image.json file in the Tezi image. I have found that the file image_type_tezi.bbclass creates the JSON file but I do not see an easy way to add partitions to the JSON file during the build process. What is the best way to add partitions to the image.json file?

I’m not sure if it is the best way but I use the wrapup script to do this.

Hi @robrien_ftr

I have not personally tried the wrapup script as recommended by @andyha but it may be viable.

As you no doubt discovered it is not possible to override a bbclass the way you can with a bbappend. The way I did this in a previous life was to create a custom image_type_blah_tezi.bbclass that looks an awful lot like the stock image_type_tezi.bbclass with the customizations needed for your custom image type.

Drew

Thanks, everybody. I created a solution that works for my needs.

I initially tried to create the partitions using the wrapup.sh script packaged in the Tezi image, but ran into a roadblock. I found that the generated image.json file specifies to maximize the size of the root filesystem it creates (variable “want_maximised” is true). This meant I needed to resize this filesystem before I could create more. However, Tezi does not include the means to do this. The utility resize2fs is not packaged with it and the fdisk utility packaged with Tezi is a busybox implementation which does not allow resizing partitions.

My workaround uses a very similar method to the one Drew described. I created a new bbclass called image_type_tezi_custom.bbclass, and updated the IMAGE_CLASS bitbake variable in my machine conf file by replacing “image_type_tezi” with “image_type_tezi_custom”. This makes bitbake use my bbclass for generating a Tezi image.

In my new bbclass, I inherit image_type_tezi to bring in all it’s existing functionality, then created a new Python function which reads in the generated image.json file, performs the desired modifications, and writes it back out. I appended this function to the variable TEZI_IMAGE_TEZIIMG_PREFUNCS which is used to set the variable flag “prefuncs” for the task do_image_teziimg. In image_type_tezi.bbclass, TEZI_IMAGE_TEZIIMG_PREFUNCS contains the name of the function which generates the JSON file. By appending my function after that one, my function modifies the JSON right after it is generated.

This method is not ideal, but it works well and allows me to perform all the filesystem and partition changes in one place.

-Robert

2 Likes

Yes, I already have my own custom bbclass and had forgotten that I set “want_maximised” to false in there for other reasons.
That is why my method of using the wrapup script works.
I used the wrapup script because I need an extended partition and, as far as I know, that isn’t supported in the Tezi configuration file

Andy

1 Like

Hi,

In order to add a data partition that will reside after rootfs partition and allocate the rest of the flash; I needed to set want_maximised attribute of root filesystem partition as false. I followed Robert’s approach and I also think this method prevents code duplication of image_type_tezi.bbclass and delegating the modification of the json file to the build system. In order to contribute to the discussion and visualize the code, I am sharing the image_type_tezi_custom.bbclass file that I have used.
image_type_tezi_custom.bbclass (1.1 KB)

Best Regards
Gokhan

2 Likes