This is intended as an general overview of OSTree, and it is intended as a starting point to understand how it works from a general perspective.
About OSTree, and its goals
OSTree is a set tools which allow to manage multiple entire file system trees and store them efficiently. The main goals are:
- Storing multiple, complete file system trees.
- Allowing to boot from file system trees, and switching easily between them.
- Versioning the contents of the file system trees.
The user's home directories are shared: they are the same regardless of the tree being used.
One can think about OSTree as a “Git-like tool for storing entire snapshots of an operating system”.
Alongside with OSTree comes ostbuild, a build tool (which ideally would supersede Jhbuild at some point), and which is aware of how to add contents to OSTree repositories. This means that it is able to build a certain GNOME module and add the resulting files to an OSTree-managed file system.
Real life usage
The description above may sound vague, so let us see some concrete real-world benefits of OSTree. It enables to do things like those:
Using one system (read: tree) for regular, everyday work, with the current stable GNOME version, and at the same time having a second tree with a bleeding-edge version to try out new things.
Using multiple system versions (read: trees) for development, e.g. to be able to target different GNOME versions, or to help reproducing bugs with certain versions of the components.
- When upgrading the system, a tree of the previous version can be kept around and used as fall-back if something fails in the new one.
- Also, due to the way data is stored, an upgrade would only download those files that are actually new.
- Installing a new system
How does Yocto fit in the whole picture?
Yocto is used for bootstrapping and for populating the trees with the basic packages that conform a base GNU/Linux system. Once a base system is ready, “ostbuild” is then used to build the GNOME packages and adding them to a tree.