I’m using Fedora Silverblue for more than a year know but I’m still wondering if I understand correctly how the system works.
This is how I image that Fedora Silverblue / OStree works:
You have one big image with the filesystem (like an ISO file/disk) and that image is being managed by a version control system (OStree).
Is the way I image Fedora Silverblue / OStree to work correct?
And another question: does OStree work on the level of individual files or does it work on the level of the underlying binary data? In other words: does it update individual files or does it update the underlying data blocks?
It’s an image in the sense that it is shipped and tested as a single unit and identified by a single hash but on the disk it is stored in an ostree repo as a collection of files and used via a read only deployment which is a collection of hard-links to those files.
So internally it keeps a list of objects and those objects link to the actual files?
How are the objects stored? In a text file?
When I do an upgrade, the list of objects and the corresponding files are updated? So it’s on the level of objects and files, and not on the level of file system blocks? Correct?
It’s the reverse. The repo is a list of “objects (file content, directory listing, etc.)” and associated metadata. ostree then creates deployments combining hardlinks to those files and permissions / access control from the metadata.
Yes, when you update, you essentially pull the new objects into the repo and then create a new deployment (organized collection of hardlinks with correct metadata).