-
Notifications
You must be signed in to change notification settings - Fork 307
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
Add simple service to comment / in fstab #3372
base: main
Are you sure you want to change the base?
Conversation
Hi @champtar. Thanks for your PR. I'm waiting for a ostreedev member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Seeing https://bugzilla.redhat.com/show_bug.cgi?id=2332319#c1, I will change the regex a bit to match ' defaults ' |
Only tangential to this PR: 👋 @champtar thanks for all of your recent comments and work, it'd very much appreciated! I would like to help support you for sure as well. One thing on the back of my mind is to try to recreate an "ostree/bootc community dev meeting" and you'd be one of the people I'd like to invite and make sure we can work through design and goals etc. Moving on to the actual issue at hand here:
Yes, but that systemd generator runs even if bootc is not used - so it should just work to add bootc to your image, right? Any reason that would be a problem for you? I'm not opposed inherently to carrying a reimplementation of that here, but I'm certainly not excited by it, especially in shell script. The bootc version has unit tests, etc. |
ostree modes have conflictings / mount needs: - "hardlinks" mode need / to be rw - composefs mode need / to be ro Some installation methods (at least Anaconda) add / to fstab, so when systemd-remount-fs.service tries to remount the composefs / rw, it fails because it can only be ro. To be able to edit /etc this early during the boot it rely on having the 'rw' kargs. bootc has a systemd generator to edit fstab but not everyone uses bootc (yet), and it adds 'ro' instead of commenting the whole line, which breaks disabling composefs (downgrade). We only comment when mount option is 'defaults'.
My pleasure ! I've been using rpm-ostree for 3 years and it has been a pretty smooth ride,
I could definitely join such meetings. Right now we have 2 appliances products based on rpm-ostree and we want to switch more. What we do that is a bit different than other rpm-ostree users:
Right now it adds 'ro' instead of commenting the line, breaking downgrades.
Not excited either, it's cleaner to write in rust and have unit tests, but bootc is really not the right place for this IMO. If we stick to commenting / with 'defaults', this simple call to sed is easy enough to review. Side note using a generator for a single unit seems weird to me, and make it harder to inspect. |
But you didn't really answer the question: anything blocking you from just adding bootc to your images? As far as it being the right place, I'd agree it's not: but I don't really think ostree is a lot more "right" either. Also, there is the issue at the moment that this logically overlaps with the bootc one and I'd like to not support both. EDIT: To be clear especially thinking about problems like "what if they run concurrently" etc |
Sorry you did comment why not the bootc one here. Okay, but just commenting it out means anything that wasn't using I'm not quite comfortable in just doing that by default either, although it's probably a pretty small set. |
I think we could change the bootc one to do the inverse change if we detect the situation where |
I haven't played enough with bootc for now, if bootc-fstab-edit switch to commenting the whole line it would be ok I think,
It affects all ostree users (depending on installer), and having the migration script with the project that needs it make sense to me
I've already put a |
Do you already ship podman? |
A bit over engineered IMO, and doesn't work if you downgrade to a version without this new bootc fix (or a version without bootc) |
No, k8s / containerd for the container tools for now |
One thing I don't like about the unit here is that the way sed works, it applies changes line by line, and writes a new version of the file, even if nothing changed. The bootc generator at least is careful to no-op if nothing needs changing. The more I think about the more I'd like try to followup on a systemd side fix (ref #3193 (comment) ). Also an overall fundamental issue with editing /etc/fstab like this in boot (that applies to the bootc one too) is that by the time we do it, systemd-fstab-generator has already run. It mostly works because systemd-remount-fs parses it again, but I could imagine that changing. So...if we were to try an ostree side generic fix like this, I think I'd prefer adding this as part of deployment finalization, similarly to handle we handle selinux policy recompilation. Perhaps in general, we could try to split up ostree-finalize-staged.service into two phases:
Actually something that has come up in the past too is supporting running code from the new deployment (ref containers/bootc#640 ) - if we did that it'd be very powerful generic tool as it eases transitions like this - you don't need to have intermediate "fix up state so we can go to new OS version" releases. |
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.
Marking requested changes per review
Side note, I will probably change bootc to |
TIL ! I though sed was a bit smarter, but just looked at strace and you are 100% right it always replace the file even when there is no changes, could be fixed by using
Is systemd-remount-fs actually needed when we have
Hopefully by that time this migration is not needed anymore :), and the advantage is that it doesn't need an intermediate version for the upgrade.
This is a good long term plan, and will definitely be good for the next migration, but for this composefs migration it gets us back to needing an intermediate version. |
When you do rework the bootc side, my whishlist:
|
https://lists.freedesktop.org/archives/systemd-devel/2025-February/051163.html |
ostree modes have conflictings / mount needs:
Some installation methods (at least Anaconda) add / to fstab,
so when systemd-remount-fs.service tries to remount
the composefs / rw, it fails because it can only be ro.
To be able to edit /etc this early during the boot it rely on
having the 'rw' kargs.
bootc has a systemd generator to edit fstab but not everyone uses bootc (yet),
and it adds 'ro' instead of commenting the whole line,
which breaks disabling composefs (downgrade).
We only comment when mount option is 'defaults'.
Fixes #3193
Notes:
This was tested with EL 9.5
The idea is to have a common fix for this step towards composefs, maybe disabled by default in the packages but ready to use by image maintainers if they know its safe