PoC: Move RAUC statusfile to persistent storage and check Status in release-validation post update#293
PoC: Move RAUC statusfile to persistent storage and check Status in release-validation post update#293yfyf wants to merge 4 commits intodividat:mainfrom
Conversation
…stems QEMU's system_reset does an "unclean" reboot (power plug), which causes corruption of the FAT filesystem in the test. There is no way to fix this for existing systems and their DISK images, so instead we try to work-around the issue by giving time for an unmount/fsync to happen.
Currently this check fails because /boot/status.ini gets corrupted after the upgrade due to an unclean system reset in the tests (and maybe due to running in a VM).
|
Let's keep this around for/when we consider the skeleton matrix and etc? If anything, it's a useful illustrative example of what kind of problematic interactions might happen between the running system and the skeleton. I think it's also worth considering how to deal with this issue, the approach used here could be used as a safer alternative to only having the statusfile in /boot / FAT, provides extra disaster recovery. As discussed, it could also be a different approach (e.g. recreate status file from scratch), but some approach is needed. |
|
Looking at this again with #329 about to land, I think this approach could work, especially since we pin down RAUC and deps. The benefit is that it safeguards us against FAT corruption during installs, which are bound to happen, particularly as we plan to have more standalone / at-home installations, where PlayOS is more likely to be powered on only during use. The key idea is:
The tricky part is ensuring backwards compatibility with older versions. This PR handles that directly by "recovering" from
|
This started out with b9143cc - after the select-display bug, I wanted to extend the tests to check that post-update the system reaches a Good state. When I tried that, I realized that does NOT happen in release-validation tests, since
/boot/status.inigets corrupted and statusfile-recovery fails. This is due FAT shenanigans to the uncleansystem_resetused in the test. See attached screenshots.So this is actually 2 PRs, but I wanted to illustrate that the moving of RAUC to persistent storage kinda works already in the tests.
The actual implementation can be simplified and needs more tests/clean-up, but opening this draft so we can discuss it.
/boot/status.ini corruption in release-valdiation tests without 2414fd3