For Fedora CoreOS, Atomic Desktops, IoT, or other Bootable Container systems (and classic ostree/rpm-ostree systems).
Currently only built for:
- Fedora Silverblue 41
- Fedora Kinoite 41
- Fedora CoreOS (stable stream)
While not built for the testing and next stream for Fedora CoreOS, it is likely that the sysexts built for the stable one work for all of them. The only exception would be during Fedora major version rebases when next and finally testing moves to Fedora N+1 while stable stays on Fedora N.
The planned user experience for using those sysexts is that they are built as container layers, pushed to a registry as distinct tags, downloaded, managed and updated in sync with the OS by bootc. See: bootc#7 and README.containers.md.
In the meantime, you can use systemd-sysupdate to manually install and update them:
$ sudo install -d -m 0755 -o 0 -g 0 /var/lib/extensions /var/lib/extensions.d /etc/sysupdate.d
$ sudo restorecon -RFv /var/lib/extensions /var/lib/extensions.d /etc/sysupdate.d
$ SYSEXT="btop"
$ RELEASE_TAG="fedora-kinoite-41"
$ URL="https://github.com/travier/fedora-sysexts/releases/download/${RELEASE_TAG}/${SYSEXT}.conf"
$ curl --silent --location "${URL}" | sudo tee "/etc/sysupdate.d/${SYSEXT}.conf"
$ sudo /usr/lib/systemd/systemd-sysupdate list
$ sudo /usr/lib/systemd/systemd-sysupdate update
$ sudo systemctl restart systemd-sysext.service
$ systemd-sysext status
Then any further updates can be done with:
$ sudo /usr/lib/systemd/systemd-sysupdate update
$ sudo systemctl restart systemd-sysext.service
$ systemd-sysext status
I recommend updating them at the same time as you update your system with bootc/rpm-ostree so that the content of the sysexts matches what is on your base system as right now there are no guarantees there. We should fix that when integrating with bootc.
Until systemd v257 is released and lands in Fedora, make sure to use systemctl restart systemd-sysext.service
instead of systemd-sysext merge
.
systemd-sysext unmerge
is safe to use.
See:
See each sysext's README.md
for notes and usage instructions. See the
justfile
or Containerfile
for the exact list of packages or content
included.
All sysexts are built from RPMs downloaded from the repos included in the base images (i.e. Fedora's repos), unless explicitely overriden.
Make sure that you have the following packages installed:
cpio
erofs-utils
just
podman
wget
To build the python
sysext:
$ cd python
List the supported target images:
$ just targets
Build the sysext for Fedora CoreOS next:
$ just build "quay.io/fedora/fedora-coreos:next"
I recommend building those from a toolbox as it requires root
privileges. It
should work with any rootless, privileged, non-SELinux confined container.
See the GitHub release for your version of Fedora.
Setup the extensions
directory:
$ sudo install -d -m 0755 -o 0 -g 0 /var/lib/extensions/
$ sudo restorecon -RFv /var/lib/extensions/
Install the extensions:
$ SYSEXT=python
$ sudo install -m 644 -o 0 -g 0 ${SYSEXT}/${SYSEXT}*.raw /var/lib/extensions/${SYSEXT}.raw
Enable them (see known issue for details):
$ sudo systemctl restart systemd-sysext.service
$ systemd-sysext status
Try it out:
$ python -c 'print("Hello from a sysext!")'
See CONTRIBUTING for details about the CI setup specific to this repo.