-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rootfs slot checksum changes even when no changes have been made #269
Comments
@tcikel As far as I know, the default mkfs file system generation in yocto is not fully reproducible. E.g. directory hash seed might be different. You can proivde a fixed one with You should also align the file system's inodes to 4K bytes since block-hash-index uses 4k blocks.
|
@ejoerns Thank you for quick response, I used your fix with hash_seed (not sure why this option is missing from man page of mkfs) which helped but the issue still persists. I have the files in the same order though now although still getting the different diff rootfs0.txt rootfs1.txt
16,18c16,18
< Modified = 2023-04-24 12:16:49
< Created = 2023-04-24 12:12:14
< Last Check Time = 2023-04-24 12:16:49
> Modified = 2023-04-24 12:52:30
> Created = 2023-04-24 12:52:27
> Last Check Time = 2023-04-24 12:52:30
24c24
< ID = 09964597DF374FC88F34D444CA2EC30F
> ID = 765487728230435682D33932C7E1C1F0
32c32
< 2023-04-24 12:12:14 D.... lost+found
> 2023-04-24 12:52:27 D.... lost+found
23644,23645c23644,23645
< 2018-03-09 14:34:56 ..... 144 4096 var/cache/fontconfig/5c156208-e194-4827-9f14-402658bab0d0-le64.cache-7
< 2018-03-09 14:34:56 ..... 9192 12288 var/cache/fontconfig/6e062ab2-355a-4115-9422-9850a2b2ec72-le64.cache-7
> 2018-03-09 14:34:56 ..... 144 4096 var/cache/fontconfig/28b1dbf1-6536-4db9-8601-80167399499f-le64.cache-7
> 2018-03-09 14:34:56 ..... 9192 12288 var/cache/fontconfig/8685fcd1-6295-49b3-9395-292e5545fda5-le64.cache-7
23662c23662
< 2023-04-24 12:12:14 ..... 33554432 33554432 [SYS]/Journal
> 2023-04-24 12:52:27 ..... 33554432 33554432 [SYS]/Journal
23664c23664
< 2023-04-24 12:12:14 872091597 918478848 21854 files, 1777 folders
> 2023-04-24 12:52:27 872091597 918478848 21854 files, 1777 folders The fontconfig package is causing some issues, for some reason its regenerating the contents of cache. Not sure how important this package is so I will try to remove it. The bigger issue for me is that during wic build the lost+found file is created, I couldnt find anyway to stop wic form calling fsck which creates it (even though it might be bad idea to not call). Also how does RAUC creates the checksum from ext4, does it include the metada like Modified and Created which are seen above ? Because those will be different everytime I build partition unless the system time is somehow modified to be always the same |
Normally, the reproducible build features of Yocto should pre-determine the timestamps. The hash btw. is just calculated over the ext4 image (file). So just the same as you would get when manually calling |
The version is Kirkstone, so basically if wic creates the partition it breaks the reproducibility. This is unlucky, I was thinking that workaround could be to create the appfs partition as different image so the rootfs would not be build again, but this would mean we would have to manually track the compatibility of versions. |
After some more digging I found this commit in openembedded repository. There seems to be some work on getting the wic to honor the reproducible thinking but so far only for fstab updated file. But it seems like good starting point. |
It is not quite straight-forward (or not intended) in yocto to build more file systems than the rootfs. So the normal approach is indeed to split this after creating. However, I wonder how you get access to the wic-generated partitions? The last time I had a look into this it did not work without any hacks since wic just uses them internally and removes them after having generated the disk image.
I guess it would be interesting to see how poky master behaves here. There is an ongoing effort to make things more and more reproducible afaik. So maybe the patch you found is just one step further. |
The partitions stays after wic creates the main disk image, at least for me, I copy them after build from build-wic folder. Not sure how to effectively edit them, I tried to create script which would loop over them and set the same time everytime but that doesnt seem like effective solution. Not sure if there is a good solution to this. I will try with a poky master to see if some solution is already implemented. |
@tcikel Is this still relevant, or did you find a way to fix it / work around? I'd assume this is nothing we can fix in |
Hello,
I have a A/B configuration with 2 rootfs partitions and 2 appfs partitions. I am using adaptive update and I have both partitions as read-only so I can skip calculating hashes if the hash of slot matches of hash of bundle. The issue is that my rootfs slot has always different checksum hash even though no changes have been made, and the only change which was made was into other slot.
I am generating my partitions with help of wks file
And creating bundle with copying partitions created by wic file directly into recipe to create bundle:
The issue might not even be in meta-rauc, but with my way of generating partitions and creating rootfs. But I dont understand why when i make change to files which are only in app partition the checksum of rootfs changes, I checked the contents of rootfs and the files from app partition are not there. It seems like every time rootfs is generated something changes which causes the checksum to also change. Any help would be appreciated.
The text was updated successfully, but these errors were encountered: