ostree.git
20 months agoREADME & docs: Remove "RHIVOS" acronym
Eric Curtin [Sat, 30 Mar 2024 13:15:34 +0000 (13:15 +0000)]
README & docs: Remove "RHIVOS" acronym

Remove the unofficial acronym RHIVOS from both the README and docs
files. The acronym is associated with Red Hat In-Vehicle Operating
System but isn't officially recognized.

Co-Authored-By: Felicia Kleinfelt <fkleinfe@redhat.com>
Signed-off-by: Eric Curtin <ecurtin@redhat.com>
20 months agoMerge pull request #3220 from jlebon/pr/on-failure-isolate
Colin Walters [Thu, 21 Mar 2024 17:57:45 +0000 (13:57 -0400)]
Merge pull request #3220 from jlebon/pr/on-failure-isolate

ostree-prepare-root.service: add OnFailureJobMode=isolate

20 months agoostree-prepare-root.service: add OnFailureJobMode=isolate
Jonathan Lebon [Thu, 21 Mar 2024 16:19:32 +0000 (12:19 -0400)]
ostree-prepare-root.service: add OnFailureJobMode=isolate

This is stronger than the default (`replace`) because it tells systemd
to *stop everything* and go to `emergency.target`. In other codebases,
this has definitely helped me with the problem of "systemd keeps going
even after a failure".

Likely addresses #3219.

See also e.g. https://github.com/coreos/ignition-dracut/commit/3d2e165f97f30c1e62577357f27f32e60e6add18.

20 months agoMerge pull request #3218 from cgwalters/policy-allow-none
Colin Walters [Tue, 19 Mar 2024 16:28:54 +0000 (12:28 -0400)]
Merge pull request #3218 from cgwalters/policy-allow-none

sepolicy: Add missing `(nullable)`

20 months agoMerge pull request #3216 from cgwalters/mirrorlist-retries
Joseph Marrero Corchado [Tue, 19 Mar 2024 14:48:43 +0000 (10:48 -0400)]
Merge pull request #3216 from cgwalters/mirrorlist-retries

curl: Also map HTTP errors for retries

20 months agosepolicy: Add missing `(nullable)`
Colin Walters [Tue, 19 Mar 2024 00:38:19 +0000 (20:38 -0400)]
sepolicy: Add missing `(nullable)`

This can return NULL if there's no real policy.

Now obviously we need to update the Rust bindings too but...
I am having trouble doing that, we're pretty out of date with
upstream.

21 months agocurl: Also map HTTP errors for retries
Colin Walters [Fri, 15 Mar 2024 22:41:02 +0000 (18:41 -0400)]
curl: Also map HTTP errors for retries

When we added the retry logic, the intention here was definitely
to do it not just for network errors but also e.g. HTTP 500s and
the like.

xref https://pagure.io/releng/issue/11439
where we rather painfully debugged that this was missing.

21 months agoMerge pull request #3215 from cgwalters/release
Colin Walters [Thu, 14 Mar 2024 15:26:35 +0000 (11:26 -0400)]
Merge pull request #3215 from cgwalters/release

Release 2024.5

21 months agoconfigure: post-release version bump
Colin Walters [Thu, 14 Mar 2024 13:47:14 +0000 (09:47 -0400)]
configure: post-release version bump

21 months agoRelease 2024.5
Colin Walters [Thu, 14 Mar 2024 13:46:17 +0000 (09:46 -0400)]
Release 2024.5

21 months agoMerge pull request #3214 from cgwalters/checkout-overwrite-force
Colin Walters [Wed, 13 Mar 2024 20:05:23 +0000 (16:05 -0400)]
Merge pull request #3214 from cgwalters/checkout-overwrite-force

checkout: Always replace existing content with overlay mode

21 months agocheckout: Always replace existing content in overlay mode
Colin Walters [Wed, 13 Mar 2024 16:50:28 +0000 (12:50 -0400)]
checkout: Always replace existing content in overlay mode

The combination of the "honor whiteout" and "union" flags
are intended to basically be "merge trees like overlayfs does".
But we were missing this case in order to support e.g. replacing
a symlink with a directory.

21 months agoMerge pull request #3213 from rborn-tx/fix-early-prune
Jonathan Lebon [Wed, 13 Mar 2024 17:24:27 +0000 (13:24 -0400)]
Merge pull request #3213 from rborn-tx/fix-early-prune

21 months agodeploy: Ensure boot directory is open before accessing it
Rogerio Guerra Borin [Tue, 12 Mar 2024 20:02:58 +0000 (17:02 -0300)]
deploy: Ensure boot directory is open before accessing it

This fixes a bug in the (early) deployment pruning function which before
tried to access the boot directory without opening it first.

Signed-off-by: Rogerio Guerra Borin <rogerio.borin@toradex.com>
21 months agoMerge pull request #3208 from HuijingHei/split-whitespace
Huijing Hei [Mon, 11 Mar 2024 01:59:43 +0000 (09:59 +0800)]
Merge pull request #3208 from HuijingHei/split-whitespace

kargs: parse spaces in kargs input and keep quotes

21 months agokargs: parse spaces in kargs input and keep quotes
HuijingHei [Mon, 4 Mar 2024 02:44:42 +0000 (10:44 +0800)]
kargs: parse spaces in kargs input and keep quotes

According to Jonathan's suggestion, should fix the code from
ostree repo.

With this patch:
- kargs input like "init_on_alloc=1 init_on_free=1", will be
parsed as 2 seperated args `init_on_alloc=1` and `init_on_free=1`,
instead of whole;
- According to https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html,
need to keep spaces in double-quotes, like `param="spaces in here"`
will be parsed as whole instead of 3.

Fixes https://github.com/coreos/rpm-ostree/issues/4821

21 months agoMerge pull request #3206 from cgwalters/enable-new-naming
Eric Curtin [Thu, 7 Mar 2024 10:53:56 +0000 (10:53 +0000)]
Merge pull request #3206 from cgwalters/enable-new-naming

sysroot: Turn on bootloader-naming-2 by default

21 months agosysroot: Turn on bootloader-naming-2 by default
Colin Walters [Wed, 28 Feb 2024 14:40:34 +0000 (09:40 -0500)]
sysroot: Turn on bootloader-naming-2 by default

I think it's about time we flipped this on by default;
like the bootprefix I was a bit too chicken.  We still have
a `bootloader-naming-1` that can be flipped on in case of
some regression.

Closes: https://github.com/ostreedev/ostree/issues/2961
21 months agoMerge pull request #3205 from cgwalters/fix-grub-probing
Colin Walters [Tue, 27 Feb 2024 21:00:29 +0000 (16:00 -0500)]
Merge pull request #3205 from cgwalters/fix-grub-probing

bootloader/grub2: Don't do anything if we have static configs

21 months agobootloader/grub2: Don't do anything if we have static configs
Colin Walters [Tue, 27 Feb 2024 18:14:16 +0000 (13:14 -0500)]
bootloader/grub2: Don't do anything if we have static configs

This builds on top of https://github.com/coreos/bootupd/pull/609/commits/fa9924e4fe403c3751392c041cd98614a2cc3611
(But in a very hacky way because we don't currently link to a JSON library)

Basically, bootupd supports injecting static configs, and this
is the currently least hacky way for us to detect this and understand
that we shouldn't try to run `grub2-mkconfig`.

A further patch I'd like to do here is also change the probing
logic to gracefully no-op if `grub2-mkconfig` doesn't exist,
but that has a bit more risk and involvement.

21 months agoMerge pull request #3204 from cgwalters/quiet-config-load
Colin Walters [Tue, 27 Feb 2024 18:03:45 +0000 (13:03 -0500)]
Merge pull request #3204 from cgwalters/quiet-config-load

otcore: Drop config load print

21 months agoMerge pull request #3203 from dbnicholson/version-sigpipe
Colin Walters [Tue, 27 Feb 2024 17:24:35 +0000 (12:24 -0500)]
Merge pull request #3203 from dbnicholson/version-sigpipe

main: Ignore SIGPIPE when printing version

21 months agootcore: Drop config load print
Colin Walters [Tue, 27 Feb 2024 15:59:02 +0000 (10:59 -0500)]
otcore: Drop config load print

Now that we're using `otcore_load_config` from the deploy
path we end up printing to stdout even for API callers (e.g.
our own CLI tools, and rpm-ostree/bootc/etc) which is wrong.

We don't need this print, so just drop it.

21 months agomain: Ignore SIGPIPE when printing version
Dan Nicholson [Tue, 27 Feb 2024 15:41:46 +0000 (08:41 -0700)]
main: Ignore SIGPIPE when printing version

In order to do a runtime feature check, `ostree --version` can be piped
to `grep` or similar. However, if the read end of the pipe doesn't read
all of the output, `ostree` will receive `SIGPIPE` when trying to write
output. Ignore it so that `ostree` still exits successfully in that
case.

21 months agoMerge pull request #3196 from cgwalters/fix-sepolicy-public
Colin Walters [Sun, 25 Feb 2024 15:45:12 +0000 (10:45 -0500)]
Merge pull request #3196 from cgwalters/fix-sepolicy-public

sepolicy: Fix publicity mismatch for ostree_sepolicy_host_enabled

21 months agoMerge pull request #3199 from travier/docs-fix
Timothée Ravier [Sat, 24 Feb 2024 15:45:37 +0000 (16:45 +0100)]
Merge pull request #3199 from travier/docs-fix

docs: Move SPDX identifiers under first title

21 months agodocs: Cleanup title for historical OSTree README
Timothée Ravier [Sat, 24 Feb 2024 15:37:48 +0000 (16:37 +0100)]
docs: Cleanup title for historical OSTree README

21 months agodocs: Move SPDX identifiers under first title
Timothée Ravier [Sat, 24 Feb 2024 15:36:23 +0000 (16:36 +0100)]
docs: Move SPDX identifiers under first title

Having a comment right before the first title apparently confuses
Jekyll.

Fixes: https://github.com/ostreedev/ostree/pull/3185
21 months agoMerge pull request #3197 from cgwalters/release
Colin Walters [Fri, 23 Feb 2024 21:21:11 +0000 (16:21 -0500)]
Merge pull request #3197 from cgwalters/release

Release 2024.4

21 months agosepolicy: Fix publicity mismatch for ostree_sepolicy_host_enabled
Colin Walters [Fri, 23 Feb 2024 18:02:42 +0000 (13:02 -0500)]
sepolicy: Fix publicity mismatch for ostree_sepolicy_host_enabled

As this is only used by internal code, just drop the `_OSTREE_PUBLIC`
marker for now.  If we have a reason to export it we can do that
later.

Closes: https://github.com/ostreedev/ostree/issues/3182
21 months agoPost-release version bump
Colin Walters [Fri, 23 Feb 2024 18:45:37 +0000 (13:45 -0500)]
Post-release version bump

21 months agoRelease 2024.4
Colin Walters [Fri, 23 Feb 2024 18:45:21 +0000 (13:45 -0500)]
Release 2024.4

21 months agoMerge pull request #3195 from ericcurtin/pr3192_comments
Jonathan Lebon [Fri, 23 Feb 2024 16:30:00 +0000 (11:30 -0500)]
Merge pull request #3195 from ericcurtin/pr3192_comments

21 months agosysroot: Reword comment and use gboolean over bool, error handling
Eric Curtin [Thu, 22 Feb 2024 18:15:09 +0000 (18:15 +0000)]
sysroot: Reword comment and use gboolean over bool, error handling

Be more explicit in the comment, and use gboolean over bool. Less header
inclusions when we use gboolean. Although bool is used in some places.
Write a separate _ostree_sysroot_parse_bootlink_aboot function for
aboot. Make is_aboot optional. Handle invalid androidboot karg and no
ostree and androidboot kargs differently.

Co-authored-by: Jonathan Lebon <jonathan@jlebon.com>
Signed-off-by: Eric Curtin <ecurtin@redhat.com>
21 months agoMerge pull request #3192 from ericcurtin/ostree-impl-system-generator-aboot
Eric Curtin [Thu, 22 Feb 2024 17:06:19 +0000 (17:06 +0000)]
Merge pull request #3192 from ericcurtin/ostree-impl-system-generator-aboot

generator: Fixes for Android Boot environment

21 months agoMerge pull request #3194 from alexlarsson/composefs-no-hotfix
Joseph Marrero Corchado [Thu, 22 Feb 2024 16:25:41 +0000 (11:25 -0500)]
Merge pull request #3194 from alexlarsson/composefs-no-hotfix

prepare-root: Disallow hotfixes if using signed composefs images

21 months agoMerge pull request #3185 from travier/main-docs-spdx-fixes
Huijing Hei [Thu, 22 Feb 2024 13:44:57 +0000 (21:44 +0800)]
Merge pull request #3185 from travier/main-docs-spdx-fixes

Docs fixes & SPDX identifiers uniformisation

21 months agoprepare-root: Disallow hotfixes if using signed composefs images
Alexander Larsson [Thu, 22 Feb 2024 11:10:41 +0000 (12:10 +0100)]
prepare-root: Disallow hotfixes if using signed composefs images

As mentioned in https://github.com/ostreedev/ostree/issues/3187, we
can't allow a hotfix overlay of /usr when using signed composefs
images as that would allow an attacker to persist something used
across boots.

21 months agogenerator: Fixes for Android Boot environment
Eric Curtin [Wed, 21 Feb 2024 16:02:08 +0000 (16:02 +0000)]
generator: Fixes for Android Boot environment

In Android Boot environment we do not parse ostree= karg to determine
what directory to boot into, alternatively we do this based on the
androidboot.slot_suffix= karg. But we do set ostree=true karg to denote
that we are indeed booting an ostree environment (required for some
systemd unit files). This change accounts for this approach in the
systemd generator. In this case androidboot.slot_suffix= points you to
/ostree/root.[a|b] and then that points you to the directory to boot
into in /ostree/deploy... Here is what a cmdline may look like in this
type of environment:

androidboot.slot_suffix=_a androidboot.bootdevice=*.ufshc root=PARTLABEL=system_a root=UUID=76a22bf4-f153-4541-b6c7-0332c0dfaeac rw ostree=true loglevel=4 acpi=off console=ttyAMA0 systemd.show_status=auto libahci.ignore_sss=1 slub_debug=FPZ fsck.mode=skip rcupdate.rcu_normal_after_boot=0 rcupdate.rcu_expedited=1

Signed-off-by: Eric Curtin <ecurtin@redhat.com>
21 months agoMerge pull request #3186 from rborn-tx/amend-ms-shared-comment
Joseph Marrero Corchado [Wed, 21 Feb 2024 12:53:32 +0000 (07:53 -0500)]
Merge pull request #3186 from rborn-tx/amend-ms-shared-comment

ostree-prepare-root: Amend comment about shared mounts

21 months agoMerge pull request #3189 from alexlarsson/composefs-config-with-no-key
Eric Curtin [Wed, 21 Feb 2024 12:34:09 +0000 (12:34 +0000)]
Merge pull request #3189 from alexlarsson/composefs-config-with-no-key

deploy: Don't fail if loading composefs configuration fails due to mi…

21 months agodeploy: Don't fail if loading composefs configuration fails due to missing keys
Alexander Larsson [Wed, 21 Feb 2024 09:16:31 +0000 (10:16 +0100)]
deploy: Don't fail if loading composefs configuration fails due to missing keys

When we load the configuration during deploy we don't need to actually
use the keys, so avoid loading them. This fixes an issue we had where
this broke the initial deploy becasue of a failure to load the key. In
our case it fails because the code looks for the config file in the
deploy dir, but then for the binding key in the real root.

However, even if it were to look for the key in the deploy dir I don't
think it necessarily has to be in the rootfs, it could be only in the
initrd.

This fixes https://github.com/ostreedev/ostree/issues/3188

21 months agoMerge pull request #3184 from smcv/issue3183
Jonathan Lebon [Wed, 21 Feb 2024 03:29:56 +0000 (22:29 -0500)]
Merge pull request #3184 from smcv/issue3183

21 months agoostree-prepare-root: Amend comment about shared mounts
Rogerio Guerra Borin [Tue, 20 Feb 2024 17:50:35 +0000 (14:50 -0300)]
ostree-prepare-root: Amend comment about shared mounts

Signed-off-by: Rogerio Guerra Borin <rogerio.borin@toradex.com>
21 months agoREADME & docs: Sync README and docs index page
Timothée Ravier [Tue, 20 Feb 2024 16:08:24 +0000 (17:08 +0100)]
README & docs: Sync README and docs index page

21 months agodocs: Misc whitespace fixes
Timothée Ravier [Tue, 20 Feb 2024 16:04:44 +0000 (17:04 +0100)]
docs: Misc whitespace fixes

21 months agodocs: Consistently use SPDX identifiers
Timothée Ravier [Tue, 20 Feb 2024 16:04:01 +0000 (17:04 +0100)]
docs: Consistently use SPDX identifiers

Standardize on a single SPDX identifier in a comment at the top.

21 months agotest-admin-deploy-var: Don't rely on OSTREE_FEATURES
Simon McVittie [Mon, 19 Feb 2024 13:04:14 +0000 (13:04 +0000)]
test-admin-deploy-var: Don't rely on OSTREE_FEATURES

This is set during build-time testing, but unset during "as-installed"
tests.

Resolves: https://github.com/ostreedev/ostree/issues/3183
Signed-off-by: Simon McVittie <smcv@debian.org>
21 months agotests: Use skip_without_ostree_feature to detect libarchive, composefs
Simon McVittie [Mon, 19 Feb 2024 16:07:13 +0000 (16:07 +0000)]
tests: Use skip_without_ostree_feature to detect libarchive, composefs

This avoids false negatives from `ostree --version | grep -q ...`
exiting with failure under `set -o pipefail` because `grep -q` can exit
as soon as it sees the desired string, leaving `ostree --version` to be
terminated by `SIGPIPE` next time it writes to stdout.

Signed-off-by: Simon McVittie <smcv@collabora.com>
21 months agotests: Generalize has_gpgme, has_sign_ed25519 into has_ostree_feature
Simon McVittie [Mon, 19 Feb 2024 15:57:51 +0000 (15:57 +0000)]
tests: Generalize has_gpgme, has_sign_ed25519 into has_ostree_feature

Signed-off-by: Simon McVittie <smcv@collabora.com>
21 months agoMerge pull request #3176 from travier/docs-dependabot-update
Eric Curtin [Mon, 19 Feb 2024 14:37:37 +0000 (14:37 +0000)]
Merge pull request #3176 from travier/docs-dependabot-update

workflow/docs: Update to actions/checkout@v4 & dependabot: Update github-actions weekly

21 months agoMerge pull request #3181 from ericcurtin/mention-rhivos
Colin Walters [Mon, 19 Feb 2024 14:36:58 +0000 (09:36 -0500)]
Merge pull request #3181 from ericcurtin/mention-rhivos

README: Add Red Hat In-Vehicle Operating System

21 months agoREADME: Add Red Hat In-Vehicle Operating System
Eric Curtin [Sat, 17 Feb 2024 17:12:19 +0000 (17:12 +0000)]
README: Add Red Hat In-Vehicle Operating System

RHIVOS is a derivative of CentOS Automotive Stream Distribution that
uses OSTree, it's closest Fedora derivative is Fedora IoT although it
was created as it's own distribution.

Signed-off-by: Eric Curtin <ecurtin@redhat.com>
22 months agoMerge pull request #3180 from teythoon/justus/long-key-ids
Colin Walters [Fri, 16 Feb 2024 17:10:09 +0000 (12:10 -0500)]
Merge pull request #3180 from teythoon/justus/long-key-ids

tests: Use long key IDs, I found another one

22 months agoMerge pull request #3179 from ericcurtin/additional-docs-dependancy
Colin Walters [Fri, 16 Feb 2024 16:12:03 +0000 (11:12 -0500)]
Merge pull request #3179 from ericcurtin/additional-docs-dependancy

docs: Add webrick dependancy for building site locally

22 months agotests: Use long key IDs
Justus Winter [Fri, 16 Feb 2024 15:23:49 +0000 (16:23 +0100)]
tests: Use long key IDs

Short key IDs are not secure, and may be rejected by OpenPGP
implementations.  See https://evil32.com/

Signed-off-by: Justus Winter <justus@sequoia-pgp.org>
22 months agoMerge pull request #3178 from teythoon/justus/long-key-ids
Colin Walters [Fri, 16 Feb 2024 14:06:27 +0000 (09:06 -0500)]
Merge pull request #3178 from teythoon/justus/long-key-ids

tests: Use long key IDs

22 months agodocs: Add webrick dependancy for building site locally
Eric Curtin [Fri, 16 Feb 2024 13:00:10 +0000 (13:00 +0000)]
docs: Add webrick dependancy for building site locally

This mimics the GitHub Pages environment so that you can build and serve
the site locally for testing. It requires webrick these days.

Signed-off-by: Eric Curtin <ecurtin@redhat.com>
22 months agotests: Use long key IDs
Justus Winter [Fri, 16 Feb 2024 12:33:21 +0000 (13:33 +0100)]
tests: Use long key IDs

Short key IDs are not secure, and may be rejected by OpenPGP
implementations.  See https://evil32.com/

Signed-off-by: Justus Winter <justus@sequoia-pgp.org>
22 months agodependabot: Update github-actions weekly
Timothée Ravier [Thu, 15 Feb 2024 15:20:33 +0000 (16:20 +0100)]
dependabot: Update github-actions weekly

22 months agoworkflow/docs: Update to actions/checkout@v4
Timothée Ravier [Thu, 15 Feb 2024 15:18:32 +0000 (16:18 +0100)]
workflow/docs: Update to actions/checkout@v4

22 months agoMerge pull request #3175 from cgwalters/rofiles-fuse-statx
Colin Walters [Thu, 15 Feb 2024 14:34:27 +0000 (09:34 -0500)]
Merge pull request #3175 from cgwalters/rofiles-fuse-statx

rofiles-fuse: Check fsverity flag for copyup

22 months agorofiles-fuse: Remove unused parameter
Colin Walters [Thu, 15 Feb 2024 13:07:40 +0000 (08:07 -0500)]
rofiles-fuse: Remove unused parameter

The logic simplified, so we don't need it anymore.

22 months agorofiles-fuse: Check fsverity flag for copyup
Colin Walters [Thu, 15 Feb 2024 01:33:17 +0000 (20:33 -0500)]
rofiles-fuse: Check fsverity flag for copyup

We need to do a copyup if fsverity is enabled.
Sadly to do this we can't just use ostree_break_hardlink
as is.

22 months agorofiles-fuse: Port to statx
Colin Walters [Thu, 15 Feb 2024 01:32:55 +0000 (20:32 -0500)]
rofiles-fuse: Port to statx

This allows us to query fsverity efficiently.

22 months agoMerge pull request #3172 from cgwalters/release
Colin Walters [Wed, 14 Feb 2024 00:27:25 +0000 (19:27 -0500)]
Merge pull request #3172 from cgwalters/release

Release 2024.3

22 months agoPost-release version bump
Colin Walters [Tue, 13 Feb 2024 17:46:49 +0000 (12:46 -0500)]
Post-release version bump

22 months agoRelease 2024.3
Colin Walters [Tue, 13 Feb 2024 17:46:07 +0000 (12:46 -0500)]
Release 2024.3

22 months agoMerge pull request #3173 from cgwalters/transient-root-really-transient
Colin Walters [Tue, 13 Feb 2024 22:25:26 +0000 (17:25 -0500)]
Merge pull request #3173 from cgwalters/transient-root-really-transient

prepare-root: Switch to a tmpfs for transient root

22 months agoprepare-root: Switch to a tmpfs for transient root
Colin Walters [Tue, 13 Feb 2024 20:41:35 +0000 (15:41 -0500)]
prepare-root: Switch to a tmpfs for transient root

We're debating this over in https://github.com/CentOS/centos-bootc-dev/pull/27
and I have come to the conclusion that having changes to `/`
persist across reboot by default was a bad idea.

- It conflicts with any kind of secure boot scenario
- Having things only go away on upgrades is in some ways even *more* surprising
- The term `transient` implies this

There may be a use case in the future for having something like `root.transient = persistent`,
but this is just a better default.

Signed-off-by: Colin Walters <walters@verbum.org>
22 months agoMerge pull request #3171 from ericcurtin/docs-alternate-rollbacks
Colin Walters [Tue, 13 Feb 2024 17:40:13 +0000 (12:40 -0500)]
Merge pull request #3171 from ericcurtin/docs-alternate-rollbacks

docs/atomic-rollbacks: Add a section on rollbacks

22 months agodocs/atomic-rollbacks: Add a section on rollbacks
Eric Curtin [Tue, 13 Feb 2024 10:39:20 +0000 (10:39 +0000)]
docs/atomic-rollbacks: Add a section on rollbacks

Describing how different types of rollbacks work.

Signed-off-by: Eric Curtin <ecurtin@redhat.com>
22 months agoMerge pull request #3170 from cgwalters/prepare-root-fix
Colin Walters [Tue, 13 Feb 2024 09:21:21 +0000 (04:21 -0500)]
Merge pull request #3170 from cgwalters/prepare-root-fix

 prepare-root: Unify root.transient with composefs

22 months agoMerge pull request #3168 from cgwalters/drop-tmpfiles-var
Colin Walters [Mon, 12 Feb 2024 23:33:30 +0000 (18:33 -0500)]
Merge pull request #3168 from cgwalters/drop-tmpfiles-var

Drop tmpfiles var

22 months agoprepare-root: Unify root.transient with composefs
Colin Walters [Mon, 12 Feb 2024 22:24:10 +0000 (17:24 -0500)]
prepare-root: Unify root.transient with composefs

First, I was totally wrong and composefs handles being passed
an upperdir itself, we don't need to stack overlayfs.

Next, there's really no reason to support `root.transient`
*without* a backing composefs.  The legacy ostree bind mount
and readonly `/usr` is just that - legacy.

Finally, we actually *must* do this to enable both composefs
and transient root, because the prepare-root flow assumes
that it just needs to `MS_MOVE` a *single* mount for the root,
not a stack.

22 months agoprepare-root: Add missing newline
Colin Walters [Mon, 12 Feb 2024 21:54:09 +0000 (16:54 -0500)]
prepare-root: Add missing newline

This is ugly in the output.

22 months agoMerge pull request #3169 from rborn-tx/support-older-linux-headers
Colin Walters [Mon, 12 Feb 2024 19:27:15 +0000 (14:27 -0500)]
Merge pull request #3169 from rborn-tx/support-older-linux-headers

Expose MOUNT_ATTR_IDMAP detection result to C code

22 months agodocs/var: Update for latest
Colin Walters [Mon, 12 Feb 2024 16:59:39 +0000 (11:59 -0500)]
docs/var: Update for latest

This reorients things here around the latest `VOLUME /var` approach.

22 months agoostree-tmpfiles.conf: Drop `var` entry
Colin Walters [Mon, 12 Feb 2024 16:50:50 +0000 (11:50 -0500)]
ostree-tmpfiles.conf: Drop `var` entry

We are backing away from this semantic, and moving towards
`/var` only being initialized at initial provisioning.

22 months agoconfigure: Expose MOUNT_ATTR_IDMAP detection result to C code
Rogerio Guerra Borin [Wed, 7 Feb 2024 03:19:45 +0000 (00:19 -0300)]
configure: Expose MOUNT_ATTR_IDMAP detection result to C code

This is to allow compiling composefs on machines having somewhat old
Linux kernel headers.

Signed-off-by: Rogerio Guerra Borin <rogerio.borin@toradex.com>
22 months agoMerge pull request #3167 from smcv/ostree-repo-config-typo
Colin Walters [Sun, 11 Feb 2024 18:49:33 +0000 (13:49 -0500)]
Merge pull request #3167 from smcv/ostree-repo-config-typo

ostree.repo-config(5): Fix a typo

22 months agoostree.repo-config(5): Fix a typo
Simon McVittie [Sun, 11 Feb 2024 15:56:53 +0000 (15:56 +0000)]
ostree.repo-config(5): Fix a typo

Signed-off-by: Simon McVittie <smcv@collabora.com>
22 months agoMerge pull request #3166 from cgwalters/var-again
Colin Walters [Sat, 10 Feb 2024 10:14:18 +0000 (05:14 -0500)]
Merge pull request #3166 from cgwalters/var-again

sysroot: Rework /var handling to act like Docker `VOLUME /var`

22 months agosysroot: Rework /var handling to act like Docker `VOLUME /var`
Colin Walters [Fri, 9 Feb 2024 19:44:43 +0000 (14:44 -0500)]
sysroot: Rework /var handling to act like Docker `VOLUME /var`

We've long struggled with semantics for `/var`.  Our stance of
"/var should start out empty and be managed by the OS" is a strict
one, that pushes things closer to the original systemd upstream
ideal of the "OS state is in /usr".

However...well, a few things.  First, we had some legacy bits
here which were always populating the deployment `/var`.  I don't
think we need that if systemd is in use, so detect if the tree
has `usr/lib/tmpfiles.d`, and don't create that stuff at
`ostree admin stateroot-init` time if so.

Building on that then, we have the stateroot `var` starting out
actually empty.

When we do a deployment, if the stateroot `var` is empty,
make a copy (reflink if possible of course) of the commit's `/var`
into it.

This matches the semantics that Docker created with volumes,
and this is sufficiently simple and easy to explain that I think
it's closer to the right thing to do.

Crucially...it's just really handy to have some pre-existing
directories in `/var` in container images, because Docker (and podman/kube/etc)
don't run systemd and hence don't run `tmpfiles.d` on startup.

I really hit on the fact that we need `/var/tmp` in our container
images by default for example.

So there's still some overlap here with e.g. `/usr/lib/tmpfiles.d/var.conf`
as shipped by systemd, but that's fine - they don't actually conflict
per se.

22 months agoMerge pull request #3165 from cgwalters/drop-ex-integrity
Colin Walters [Fri, 9 Feb 2024 14:57:21 +0000 (09:57 -0500)]
Merge pull request #3165 from cgwalters/drop-ex-integrity

deploy: Honor prepare-root.conf at deploy time for composefs

22 months agodeploy: Honor prepare-root.conf at deploy time
Colin Walters [Fri, 9 Feb 2024 00:35:37 +0000 (19:35 -0500)]
deploy: Honor prepare-root.conf at deploy time

I want to try to get away from the "repository global" configuration
in the repo config.

A major problem is that there's not an obvious way to configure
it as part of an ostree commit/container build - it needs
to be managed "out of band".

With this change, we parse the `usr/lib/ostree/prepare-root.conf`
in the deployment root, and if composefs is enabled there,
then we honor it.

We do still honor `ex-integrity.composefs` but that I think
we can schedule to remove.

22 months agoswitchroot: Move a define into library too
Colin Walters [Fri, 9 Feb 2024 00:35:17 +0000 (19:35 -0500)]
switchroot: Move a define into library too

22 months agoprepare-root: Fix crash if no keys were found
Colin Walters [Fri, 9 Feb 2024 00:34:54 +0000 (19:34 -0500)]
prepare-root: Fix crash if no keys were found

Handle a NULL pointer.

22 months agolib: Move parsing of composefs config into otcore
Colin Walters [Thu, 8 Feb 2024 23:09:11 +0000 (18:09 -0500)]
lib: Move parsing of composefs config into otcore

So it can be shared with the deployment path.  Prep for dropping
`ex-integrity.composefs`.

22 months agoMerge pull request #3151 from mvo5/selinux-labels-on-non-selinux-hosts
Colin Walters [Thu, 8 Feb 2024 21:46:22 +0000 (16:46 -0500)]
Merge pull request #3151 from mvo5/selinux-labels-on-non-selinux-hosts

libostree: write selinux xattr when on non-selinux systems

22 months agoMerge pull request #3160 from cgwalters/release
Colin Walters [Thu, 8 Feb 2024 19:39:26 +0000 (14:39 -0500)]
Merge pull request #3160 from cgwalters/release

Release

22 months agoconfigure: post-release version bump
Colin Walters [Wed, 7 Feb 2024 23:24:57 +0000 (18:24 -0500)]
configure: post-release version bump

22 months agoRelease 2024.2
Colin Walters [Wed, 7 Feb 2024 23:24:04 +0000 (18:24 -0500)]
Release 2024.2

22 months agoMerge pull request #3164 from cgwalters/prepare-root-device-inode
Colin Walters [Thu, 8 Feb 2024 18:10:06 +0000 (13:10 -0500)]
Merge pull request #3164 from cgwalters/prepare-root-device-inode

Track deployment root/inode from prepare root

22 months agoTrack deployment root/inode from prepare root
Colin Walters [Thu, 8 Feb 2024 15:13:57 +0000 (10:13 -0500)]
Track deployment root/inode from prepare root

When we added composefs, it broke the logic for detecting the booted
deployment which was previously a direct (device, inode) comparison.
So the code there started looking at `etc`.  However, that in
turns breaks with `etc.transient = true` enabled.

Fix all of this by tracking the real deployment directory's
(device,inode) that we found in `ostree-prepare-root`, and inject
it into the extensible metadata we have in `/run/ostree-booted`
which is designed exactly to pass state between the initramfs
and the real root.

Signed-off-by: Colin Walters <walters@verbum.org>
22 months agoci: Use `BOOTC_SKIP_SELINUX_HOST_CHECK`, test labeling of /etc
Colin Walters [Tue, 6 Feb 2024 22:52:34 +0000 (17:52 -0500)]
ci: Use `BOOTC_SKIP_SELINUX_HOST_CHECK`, test labeling of /etc

As we work to change ostree to set up the labels
for things even in a selinux-host-disabled case, let's test
it here.

22 months agolibostree: write selinux xattr when on non-selinux systems
Michael Vogt [Wed, 31 Jan 2024 17:02:24 +0000 (18:02 +0100)]
libostree: write selinux xattr when on non-selinux systems

Currently when writing data for selinux systems on a non-selinux
system there will be no labels. This is because
`ostree_sepolicy_setfscreatecon()` just returns TRUE on non-selinux
systems and xattr writing for `security.seliux` is filtered out.

This patches uses the suggestion of Colin Walters (thanks!) from
https://github.com/ostreedev/ostree/issues/2804 and detects if
the host has selinux enabled and if not just skips filtering the
xattrs for selinux.

22 months agoMerge pull request #3159 from cgwalters/revert-bootprefix
Eric Curtin [Wed, 7 Feb 2024 22:26:25 +0000 (23:26 +0100)]
Merge pull request #3159 from cgwalters/revert-bootprefix

Revert "Enable `sysroot.bootprefix` by default"

22 months agoRevert "Enable `sysroot.bootprefix` by default"
Colin Walters [Wed, 7 Feb 2024 20:43:11 +0000 (15:43 -0500)]
Revert "Enable `sysroot.bootprefix` by default"

This reverts commit 8627c8afa15fa0b2dc2dc261a217dd043a991a7d.

See discussion in https://github.com/ostreedev/ostree/pull/3156 ;
we think this breaks s390x in some cases at least, and that warrants
further investigation.

22 months agoMerge pull request #3156 from cgwalters/enable-bootprefix-default
Colin Walters [Tue, 6 Feb 2024 22:58:42 +0000 (17:58 -0500)]
Merge pull request #3156 from cgwalters/enable-bootprefix-default

Enable `sysroot.bootprefix` by default