Wiki - https://fedoraproject.org/wiki/Changes/Greenboot_RS_Change_Proposal Discussion thread - https://discussion.fedoraproject.org/t/f43-change-proposal-release-of-greenboot-rust-rewrite-self-contained/160767
This is a proposed Change for Fedora Linux. 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 == A rewrite of Greenboot written in Rust will be released, designed for use with bootc and rpm-ostree based systems. This Greenboot release will have the same functionality as the original Bash release, which was only intended for rpm-ostree based systems. == Owner == * Name: [[User:saypaul| Sayan Paul]] * Email: sayp...@redhat.com * Name: [[User:pwhalen| Paul Whalen]] * Email: pwha...@redhat.com * Name: [[User:djachimo| David Jachimowicz]] * Email: djach...@redhat.com == Detailed Description == As this release is a Rust rewrite of the Bash Greenboot version, the functionality remains the same. It is detailed as follows: Greenboot-RS exists to provide health check and rollback functionality to bootc and rpm-ostree based systems. It allows a user to specify health checks (scripts and binaries) to run every time the system boots. These health checks can be either required or wanted, with the difference of wanted checks not needing to succeed to allow a boot. If any required checks fail the system will reboot, and may rollback to a previous, working deployment if necessary. Greenboot consists of two packages: `greenboot` and `greenboot-default-health-checks`. The former, `greenboot` comprises all the core functionalities of Greenboot. This includes checking provided scripts and binaries, rebooting when required scripts or binaries fail, and rolling back to a previous deployment if the problem remains unsolved. The second package, `greenboot-default-health-checks`, contains a series of optional health checks curated and provided by the Greenboot maintainers. A Greenboot execution begins on boot with `greenboot-healthcheck.service`, which runs before systemd's `boot-complete.target`. It launches `/usr/libexec/greenboot/greenboot check`, which runs the `required.d` and `wanted.d` scripts. If any script in `required.d` fails, greenboot run the scripts in the `red.d` folder. Following this, a MOTD (Message of the Day) is created specifying which scripts have failed. Checks are then performed to determine if there's a need for manual intervention. If not, then the system is rebooted. If all scripts in `required.d` succeed: * `boot-complete.target` is reached. * The `boot_counter` GRUB env variable is unset and the `boot_success` GRUB env variable is set to 1. * Runs the scripts in the `green.d` folder. These are the scripts intended to be run after a successful update. * A MOTD with a success message is created. == Feedback == Feedback from the community was positive regarding the Bash Greenboot release, and it is now included with every Fedora IoT installation. Various bugs and hiccups have been fixed as they have been found, and those changes are included within this Rust rewrite. This section will continue to be updated as more feedback is presented. == Benefit to Fedora == This release is another step towards the adoption and support of bootc systems with Fedora. Originally, the Greenboot release was written in Bash and designed for use only with rpm-ostree based systems. This change releases a new version of Greenboot, Greenboot-RS, written in Rust and designed for usage with bootc and rpm-ostree based systems. This change will allow users to utilize the advantages of a bootc system, while still having the safety and reliability of Greenboot. == Scope == * Proposal owners: ** Update with consolidation of services, such that all Greenboot services have been collapsed into a single service. ** Update to allow seamless bootc upgrading. i.e. Upgrading from Greenboot to Greenboot-RS using only `bootc upgrade`. * Other developers: N/A * Release engineering: [https://pagure.io/releng/issues #Releng issue number] N/A * Policies and guidelines: N/A (not needed for this Change) * Trademark approval: N/A (not needed for this Change) * Alignment with the Fedora Strategy: This change aligns with Fedora's goal of increasing contributors, as it helps further the integration of bootc and Fedora IoT. == Upgrade/compatibility impact == Current IoT users will experience a seamless transition to this new Greenboot release, using `rpm-ostree upgrade` to grab the new version. This new release will retain all the functionality of previous versions. == Early Testing (Optional) == N/A Do you require 'QA Blueprint' support? No <!-- Optional Step for System-Wide Changes only --> == How To Test == Once added to the Fedora IoT compose, you can test Greenboot-RS basic functionality by logging in via SSH. You should be greeted by this MOTD: `Boot Status is GREEN - Health Check SUCCESS` Ensure that the boot status and health check are both listed as above. == User Experience == Current IoT Users should notice no changes, apart from their Greenboot version iterating after `rpm-ostree upgrade`. All functionality from previous Greenboot versions is retained, so the health check features they are used to will still remain. Future IoT Users leveraging bootc will notice Greenboot support included when setting up IoT with bootc. These Users will now have access to the health check and rollback features Greenboot provides, and will start to see a Greenboot MOTD when booting their systems. == Dependencies == N/A == Contingency Plan == In the event of unexpected issues or setbacks with Greenboot-RS implementation, we will rollback to the previous Bash Greenboot implementation. As the release plan for Greenboot-RS involves creating a separate Greenboot-RS package, rollback will be accomplished by untagging the new Greenboot-RS package in Koji. * Contingency mechanism: Users may uninstall the Greenboot-RS package and the Bash Greenboot package will remain in service. * Contingency deadline: 08-12-2025 * Blocks release? N/A (not a System Wide Change) == Documentation == N/A (not a System Wide Change) == Release Notes == -- Aoife Moloney Fedora Operations Architect Fedora Project Matrix: @amoloney:fedora.im IRC: amoloney -- _______________________________________________ devel-announce mailing list -- devel-annou...@lists.fedoraproject.org To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org 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-annou...@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue -- _______________________________________________ devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-le...@lists.fedoraproject.org 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@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue