You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This represents a substantial rewrite of the mounting code.
composefs-pivot-sysroot is renamed to composefs-prepare-root and now
understands ostree's /usr/lib/ostree/prepare-root.conf file (supporting
transient overlays for /etc and /, also adding support /var). In
addition it's possible to specify that /etc and /var are one of:
- none: no mount, will be readonly contents of composefs at runtime
- bind: straight bind-mount from the state directory
- overlay: state directory contains the upperdir of an overlay
- transient: alias for transient=true (ie: overlay with tmpfs)
This follows the /sysroot/state/ layout discussed in #38.
The default for /etc is 'overlay' and the default for /var is 'bind'.
In general the new command focuses less on absolute minimalism: we now
have proper commandline parsing and our config file is parsed as toml
via serde. This makes the command (which gets included in the
initramfs) a fair bit bigger: it's 1.2MB now (but compresses to about
half that). We can deal with that later if it's really a problem,
though.
We now use the system mount APIs in a more modern way: the filesystem
tree is now assembled purely from file descriptors and mounted in place
only after it's complete, resulting in very readable code. This depends
on a very new kernel: the merge window on 6.15 isn't closed yet, but we
already depend on many of the feature of the mount API that got added in
this release. Fortunately, rawhide already has a pre-release version
that we can test against: add a new integration test based on it.
At the same time, we preserve backwards compatibility to older kernels
via a compatibility layer which remains mostly isolated in a separate
file. We even add compatibility with RHEL 9 (and add another integration
test for that). The inclusion of the compatibility code is controlled
by the feature flags `pre-6.15` and `rhel9` (which implies `pre-6.15`).
Rework the examples a bit to add more explicit support for separate OSes
which are now accepted as the $1 parameter to each build script: the OS
parameter now controls the Containerfile used as well as the build
features.
Also remove the ssh-key generation at build time from all of the
examples: /etc overlay support is working now and all of the images will
generate their ssh keys at first boot, so we no longer need this cludge.
Add the start of a new integration test which can run unprivileged on
the host system inside of a fresh namespace.
Signed-off-by: Allison Karlitskaya <allison.karlitskaya@redhat.com>
0 commit comments