OSTree Manual |
---|
A deployment begins with a specific commit (represented as a
SHA256 hash) in the OSTree repository in /ostree/repo
. This commit refers
to a filesystem tree that represents the underlying basis of a
deployment. For short, we will call this the "tree", to
distinguish it from the concept of a deployment.
First, the tree must include a kernel stored as /boot/vmlinuz-
.
The checksum should be a SHA256 hash of the kernel contents;
it must be pre-computed before storing the kernel in the
repository. Optionally, the tree can contain an initramfs,
stored as checksum
/boot/initramfs-
.
If this exists, the checksum must include both the kernel and
initramfs contents. OSTree will use this to determine which
kernels are shared. The rationale for this is to avoid
computing checksums on the client by default.
checksum
The deployment should not have a traditional UNIX /etc
; instead, it should include
/usr/etc
. This is the
"default configuration". When OSTree creates a deployment, it
performs a 3-way merge using the old
default configuration, the active system's /etc
, and the new default
configuration. In the final filesystem tree for a deployment
then, /etc
is a regular
writable directory.
Besides the exceptions of /var
and /etc
then, the rest of the
contents of the tree are checked out as hard links into the
repository. It's strongly recommended that operating systems
ship all of their content in /usr
, but this is not a hard
requirement.
Finally, a deployment may have a .origin
file, stored next to its
directory. This file tells ostree admin
upgrade how to upgrade it. At the moment, OSTree only
supports upgrading a single refspec. However, in the future
OSTree may support a syntax for composing layers of trees, for
example.