On Thu, 22 Jul 2021 at 02:24, Richard Weinberger <richard@nod.at> wrote:
----- Ursprüngliche Mail -----
But let me advertise ubiblock a second time. Sorry, I could not understand about the ubiblock request. Is it possible to elaborate little more ? We are already using squashfs on top of our UBI volumes (including rootfs mounting). This is the kernel command line we pass: rootfstype=squashfs root=/dev/mtdblock44 ubi.mtd=40,0,30 And CONFIG_MTD_UBI_BLOCK=y is already enabled in our kernel. Do we need to do something different for ubiblock ?
From that command line I understand that you are *not* using squashfs on top of UBI. You use mtdblock. ubiblock is a mechanism to turn an UBI volume into a read-only block device. See: http://www.linux-mtd.infradead.org/doc/ubi.html#L_ubiblock
Okay, you mean to say, we should use this ? ubi.mtd=5 ubi.block=0,0 root=/dev/ubiblock0_0 Instead of this: root=/dev/mtdblock44 ubi.mtd=40,0,30 Okay I will discuss this internally and check..
If you place your squashfs on a UBI static volume, UBI knows the exact length and you can checksum it more easily. Yes, we use squashfs on UBI volumes, but our volume type is still dynamic. Also, you said, UBI knows the exact length, you mean the whole image length ? How can we get this length at runtime ?
You need a static volume for that. If you update a static volume the length is known by UBI.
Thank you so much for your reply! Sorry, I could not get this part. How static volume can give image len ? You mean there is some interface available in kernel to get actual image len ?
Also, how can we get the checksum of the entire UBI volume content (ignoring the erased/empty/bad block content) ?
Just read from the volume. /dev/ubiX_Y.
I think this also will give the entire volume size, but we still don't know how many pages have real data ? For example: Suppose, my raw partition/volume is of size 10MB But my actual data inside it is of size ~3MB (may be split across?) Then, how can we get the actual size of the data content ? You mean to say: /dev/ubiX_Y should contain only data blocks ?
Or, you mean to say, the whole checksum logic is in-built inside the UBI layer and users don't need to worry about the integrity at all ?