Release of Greenboot Rust Rewrite
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: Sayan Paul
- Email: saypaul@redhat.com
- Name: Paul Whalen
- Email: pwhalen@redhat.com
- Name: David Jachimowicz
- Email: djachimo@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.targetis reached. - The
boot_counterGRUB env variable is unset and theboot_successGRUB env variable is set to 1. - Runs the scripts in the
green.dfolder. 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: #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
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), Yes/No
Documentation
N/A (not a System Wide Change)
Release Notes
Last edited by @amoloney 2025-07-24T22:12:50Z
Last edited by @amoloney 2025-07-24T22:12:50Z