Re: F37 proposal: Preset All Systemd Units on First Boot (Self-Contained Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jul 6, 2022 at 2:14 PM Ben Cotton <bcotton@xxxxxxxxxx> wrote:
>
> https://fedoraproject.org/wiki/Changes/Preset_All_Systemd_Units_on_First_Boot
>
> This document represents a proposed Change. As part of the Changes
> process, proposals are publicly announced in order to receive
> community feedback. This proposal will only be implemented if approved
> by the Fedora Engineering Steering Committee.
>
> == Summary ==
> Systemd will execute the equivalent of '''systemctl preset-all''' when
> an unconfigured system is booted
> ([https://www.freedesktop.org/software/systemd/man/machine-id.html#First%20Boot%20Semantics
> "First Boot"] condition). This means that units will be enabled or
> disabled according to the preset configuration. We currently do the
> equivalent of '''systemctl preset-all --preset-mode=enable-only''',
> and this will be extended to also disable units, i.e. '''systemctl
> preset-all --preset-mode=full'''. Any units which are manually
> symlinked but presets say they shouldn't (which is against the
> packaging guidelines for packaged units) will be disabled.
>
> Note that this applies to "first boot" only, i.e. to boot from an
> image without ''/etc'' fully populated. In does not apply to systems
> that were installed using Anaconda.
>
> == Owner ==
> * Name: [[User:jlebon| Jonathan Lebon]]
> * Name: [[User:Zbyszek| Zbigniew Jędrzejewski-Szmek]]
> * Email: zbyszek at in.waw.pl, jlebon at redhat.com
>
>
> == Detailed Description ==
> Our [https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd
> guidelines] say that units that are packaged in rpms must be enabled
> through macros (''%systemd_post'') and the preset system. Almost all
> packages conform to this, so effectively their enablement state
> follows the preset config. When the system is installed, or more
> precisely when ''systemd.rpm'' is installed, we do ''preset-all''. But
> for historical reasons, when booting an unconfigured system ("first
> boot") we only 'enable' units in this fashion. In Fedora and RHEL
> CoreOS, some symlinks are created in the golden image, but should be
> disabled in the local image after local preset configuration has been
> inserted. To make this work, the call in systemd will be changed to
> execute the equivalent of ''preset-all --preset-mode=full'', making
> enablement during "first boot" more like enablement during an Anaconda
> installation.
>
>
> == Benefit to Fedora ==
> * CoreOS can insert local preset configuration through Ignition and
> this configuration will be applied on the first boot.
> * Users can do something similar with local preset configuration on
> distributed images.
> * The system is made a bit simpler and easier to understand, because
> we can say that "units are enabled/disabled after installation as
> specified by the preset system".
> * Users can call ''systemctl preset-all'' at any time to apply
> preset-configuration. If no local changes to configuration have been
> made, ''preset-all'' would make no changes to unit state. If units
> have been enabled or disabled, ''preset-all'' would return unit
> enablement to the pristine state after installation.
>
> == Scope ==
> * Proposal owners:
> ** implement patch for systemd to configure preset-all mode on first
> boot (https://github.com/systemd/systemd/pull/15205)
> ** build systemd with this mode changed to ''--preset-mode=full''
> ** provide pull requests for two packages which have been identified
> to not use the preset system for enablement to conform to the
> packaging guidelines
> (https://bugzilla.redhat.com/show_bug.cgi?id=2070862,
> https://bugzilla.redhat.com/show_bug.cgi?id=2070726)
>
> * Other developers: review and merge the pull requests
> * Release engineering: N/A
> * Policies and guidelines: none, this change is about following the
> guidelines more closely
> * Trademark approval: N/A (not needed for this Change)
> * Alignment with Objectives:
>
> == Upgrade/compatibility impact ==
> None.
>
> == How To Test ==
> * On a newly installed system, with arbitrary set of packages: call
> ''systemctl preset-all''. This should result in no changes.
> * On a system which is booted from an unconfigured image (e.g. the new
> Server VM image should qualify, see
> [[Changes/Supplement-server-by-kvm-vm-image]]): before the first boot,
> enable some units manually that are disabled in presets. After
> booting, those units should be disabled again.
>
> == User Experience ==
> In general this change will be a noop for users, because it only
> applies to "first boot", i.e. to the case when a system is booted from
> a distributable image without local configuration and is configured
> when initially booted. In case where Anaconda is used to install
> images, /etc is populated before the first boot and the "first boot"
> condition never applies, thus this change is irrelevant. On systems
> installed from a "golden image" such as Fedora CoreOS, units will
> follow the preset configuration more closely. Thanks to the fixes to
> make packages conform to packaging guidelines, users can call
> '''preset-all''' to return the system to defaults.
>
> == Dependencies ==
>
>
> == Contingency Plan ==
> * Contingency mechanism: (What to do?  Who will do it?) Systemd
> maintainers: flip back the default in systemd, rebuild.
> * Contingency deadline: N/A (not a System Wide Change) This can be
> done at any time up to the release.
> * Blocks release? No.
>
> == Documentation ==
> N/A (not a System Wide Change)
>

This really feels like a system wide change. It totally changes how
the system configures itself across the board, and changes how all
images wind up being configured when building them.



-- 
真実はいつも一つ!/ Always, there's only one truth!
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux