-
Notifications
You must be signed in to change notification settings - Fork 1
Add OSTree output and remove signed image #49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Screencast.From.2025-08-08.17-26-37.mp4 |
|
Issues I spotted so far:
|
a00b953 to
d7c0038
Compare
EOS7 now defines its own filesystem instead of reusing the one from GNOME OS. The proof-of-concept "signed boot" image is gone. This is necessary: the GNOME OS elements define a complete image pipeline, which includes signing the image and generating the initramfs, and does not support OSTree. EOS deploys to OStree and there is existing tooling outside of BuildStream for signing and image creation. Some of the files removed in this commit may need to reappear later with modifications when we implement secure boot. The new `eos/repo.bst` element is the final stage of the BuildStream build, producing an OSTree repo that holds the filesystem tree.
The bash-config.bst element in freedesktop-sdk installs files into
/root, which can't work with the OSTree filesystem layout where `/root`
is a symlink to `/var/roothome`.
Strangely, the Freedesktop SDK `minimal-ostree` system manages to stage
bash-config.bst, but with a warning from BuildStream:
[--:--:--][3050f169][ build:vm/minimal-ostree/filesystem.bst] WARNING [unstaged-files]: Not staging files which would have replaced non-empty directories
Not staging files which would replace non-empty directories in staging area: /
From vm/config/ostree.bst:
/root
This suggests that another element in FDSDK masks the issue.
See comment for rationale.
EOS6 uses the default `/etc/sudoers` file from Debian Bookworm. This is a Debian-specific config file which you can read here: <https://salsa.debian.org/sudo-team/sudo/-/blob/bookworm/debian/etc/sudoers> It contains the following rule inline in `/etc/sudoers` that enables anyone in the `sudo` group to run any command as root: %sudo ALL=(ALL:ALL) ALL Freedesktop SDK 24.08.22 (in the `vm` elements) uses the `/etc/sudoers` provided by the upstream project, which you can read here: <https://github.com/sudo-project/sudo/blob/v1.9.16p2/plugins/sudoers/sudoers.in> This doesn't enable the `sudo` group rule by default. For a minimal delta against upstream, EOS7 installs a rule into `/etc/sudoers.d` adding back the `sudo` group rule, without overwriting the entire upstream config file with the Debian equivalent.
This is a copy of the Freedesktop SDK minimal-ostree workflow. Note that signing happens outside of BuildStream in a helper script. The CI pipelines can work the same way.
f702424 to
f7ab7aa
Compare
|
As of commit f7ab7aa, this is ready for use by early adopters, with the following known issues:
The issue with Commit signingI copied the local development workflow from Freedesktop SDK minimal-ostree system. This works on my machine (TM) but fails in CI, as seen in job 47804842712: The error must be that during
Going to defer more work on this until the next PR (where we sign the image with real Endless keys) in the hope that it goes away... Next stepsTo close #4, we need a second PR that updates CI to do the following:
Also, open followup issue about content in /var |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. If it works, ship it! 😆
See commit messages for full details.
This PR removes the proof-of-concept "signed image" build, and adds a new toplevel element
eos/repo.bstwhich builds an OSTree repo containing our prototype EOS7. (Which is 99% just GNOME OS).I've tested this locally by deploying to a clean EOS6 VM, following the steps documented in the README.
As of commit 90425aa, the VM successfully boots into the new OS. The existing user can no longer
sudoin the new system (which could be investigated as part of #22). You can force reboot and use the bootloader to reenter the old OS.Part of #4