Skip to content
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

docs: Add relationship-particles.md #252

Merged
merged 1 commit into from
Jan 8, 2024

Conversation

cgwalters
Copy link
Collaborator

This original vision document from Lennart is great. Let's lay out a vision for why the bootc project exists and is different from this.

This original vision document from Lennart is great.
Let's lay out a vision for why the bootc project exists
and is different from this.

Signed-off-by: Colin Walters <walters@verbum.org>
@github-actions github-actions bot added the documentation Improvements or additions to documentation label Jan 5, 2024
@cgwalters cgwalters requested a review from rhatdan January 5, 2024 20:18

The "particle" proposal mentions that the desktop case is most
interesting; the bootc belief is that servers are equally
important and interesting. In practice, this is not a real point
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've just finished reading the particle paper after this tipped me off to it (so thanks for educating me!). I think this is an oversimplified take on what the paper is saying. The key point I took away is that the desktop case is a superset of the complications that arise in server/embedded (maybe your point here is that you disagree with that assertion?). So if you concentrate on the desktop case, then it follows that you also cover 100% of the server case as well (and then some).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(maybe your point here is that you disagree with that assertion?).

Yes, this. There are some things that are hard on servers that do not exist on desktops in isolation; particularly "distributed systems" interactions.

Copy link
Contributor

@ericcurtin ericcurtin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reads great to me! There is some things that could be expanded on, like how OTA transport protocols differ between traditional ostree and bootc.

But this is super detailed already, I enjoyed reading it, it's a nice overview.

I know there is interest in the community in reducing the number of bytes that go over the air during an upgrade. So that's just one area in particular that springs to mind.

files.

What bootc builds on top of that is to target a specfic container image rootfs
that is part of the "physical" root. Today, this is implemented again using ostree, via the `ostree=` kernel commandline argument. In the future, it is likely to be a `bootc.image`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the future, it is likely to be a bootc.image

It's not clear to me from reading this, what a bootc.image is.

Ultimately, the initramfs will contain logic to find the desired root container, which
again is just a set of files stored in the "physical" root filesystem.

I do try and lean against using kargs these days, in a world where you use a UKI secured thing, there's no difference between using /proc/cmdline and a file in /etc in the initrd. It sounds like we are leaning the same way here.

Except sometimes firmware/bootloaders use it as a common namespace to communicate, which can be messy. Somehow I run into a couple of cmdline pollution issues a year.

But it does have an advantage I guess in that it can be useful for debugging in grub. Although you can just edit the initrd also to debug things, so, meh...

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do try and lean against using kargs these days, in a world where you use a UKI secured thing, there's no difference between using /proc/cmdline and a file in /etc in the initrd. It sounds like we are leaning the same way here.

Yes, this is a good point. In ostree today we go to some effort actually to avoid changing the initramfs when only userspace changes - and kernel args are really the only way for us to reliably pass state between generic bootloader setups and the initramfs.

But you're right I think in a sealed setup we should indeed not use kargs.

@alexlarsson
Copy link

Overall I think this looks good to me. Maybe we should mention the optional approach of a transient /etc. I think that makes a lot of sense for many types of sealed systems.

@rhatdan rhatdan merged commit 491396e into containers:main Jan 8, 2024
11 checks passed
@rhatdan
Copy link
Member

rhatdan commented Jan 8, 2024

If we decide to add transient /etc info, lets do it in a different PR.

@ericcurtin
Copy link
Contributor

ericcurtin commented Jan 11, 2024

Question on this...

As of today is rpm-ostree a build time dependency of bootc?

Like how is the initrd built server side?

A naive search of "dracut" in the bootc repos, returns nothing

@cgwalters
Copy link
Collaborator Author

As of today is rpm-ostree a build time dependency of bootc?

This is covered by https://containers.github.io/bootc/bootc-images/
No, bootc is not intended to hard depend on rpm (or for that matter, ostree). The main practical thing is bootc depends on bootupd which has this issue coreos/bootupd#468

@ericcurtin
Copy link
Contributor

ericcurtin commented Jan 11, 2024

I should have more clear:

As of today is rpm-ostree a build time dependency of a bootc image? (compose time dependancy might be better wording)

Thanks for the link @cgwalters , the answer is yes from reading https://containers.github.io/bootc/bootc-images/#building-bootc-compatible-base-images

but I didn't word my question right.

@ericcurtin
Copy link
Contributor

Ability to use everyday dnf at compose-time:

https://containers.github.io/bootc/bootc-images/#deriving-from-existing-base-images

rather than just in a temporary way via usroverlay is a really neat feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants