Is the way that I imagine Silverblue / OStree to work correct?

Hello Silverblue developers and users!

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?

Thanks in advance :slight_smile: !!

1 Like

Ostree is just one part of rpm-ostree. See:

1 Like

Thanks for thinking along.

The documentation describes ‘image-based (versioned/checksummed) upgrades’ but also ‘hardlink fs trees’. How does that work together?

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.

4 Likes

Thanks you for your answer!!

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?

The details are in the ostree documentation: Anatomy of an OSTree repository | ostreedev/ostree

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).

1 Like

Thanks for your explanation!

I still don’t know exactly how ostree works but I think I have to read the mentioned documentation and section of Git Internals.