Minimal or custom Silverblue/OSTree images


I build my day-to-day Fedora system from a minimal installation and a custom set of package (which is rather small since I don’t use a full desktop environment). How would that work with Silverblue? Do I need to compose my own image? Can I ask my system to drop the gnome group from the standard silverblue image?

Due to the immutability of silverblue systems, the concept of ‘spins’ seems even more important than for the standard Fedora editions. Is there any plan/idea towards a standard way to handle them, or is it still too early? What are the resources required to compose ostree images? Could it (hypothetically) be handled by a fedora-backed system similar to what COPR does for packages?

I know this is a niche target, but would like to get an overview of what is currently in place and how far would such a thing be. This previous post did not provide a lot of details.


1 Like

Hello, I’m also interested in using a more minimal image, for example using xmonad or sway.

For what it worth, I’ve been trying to create my own tree by modifying and running:
rpm-ostree compose tree && ostree admin deploy fedora/30/x86_64/my-fedora without success so far (lightdm or Login service doesn’t seem to start).

1 Like

I did rpm-ostree install sway a while back to try it out (actually still have it layered), that works fine.

Bigger picture supporting custom builds is definitely something I’d like to enable. It’s certainly possible to use rpm-ostree compose tree directly but most people doing that end up wanting to generate disk images too.

On that topic a lot of work on Fedora CoreOS (and its derivative RHEL CoreOS) has gone into which I definitely consider the “new face” of building custom rpm-ostree based systems.

And then would help complete that picture by having Silverblue use it (and also be a more obvious derivative of FCOS).

1 Like

For the record, finally I was able to boot my custom tree, it was missing nss-altfiles for polkit user and mesa-dri-drivers for sway.

I’m not sure to get what’s the benefit of using coreos-assembler compared to manually running rpm-ostree compose.

You may also have a look at what I did for KDE (& XFCE, etc.) and create a Sway variant with the same logic. If you create one, I can build it along with the others until a solution is worked out in Fedora.

1 Like

Thanks for the tips!

Fwiw I published my tree file with some usage instructions here: . It uses 180MB after boot, 350MB with emacs running through podman.

Sweet, looks like we have similar setups :wink: Due to Silverblue’s design, I should be able to rebase an existing installation on your image definition (once built), right?

I’m not sure how rebase works, I’m still trying to figure out rpm-ostree… I started with a regular silverblue install and ran those command:

# Create a new ostree repo:
sudo ostree init --repo=/ostree/copperblue

# Compose the copperblue tree:
pushd system
git submodule update --init
sudo rpm-ostree compose tree -r /ostree/copperblue --workdir /ostree/copperblue/tmp copperblue.yaml

# Copy the tree in system ostree repo:
sudo ostree pull-local /ostree/copperblue fedora/rawhide/x86_64/copperblue

# Install the tree:
sudo ostree admin deploy fedora/rawhide/x86_64/copperblue

Then grub pick the new tree, if something goes wrong, either hard-reset and grub show a menu you can use to pick the previous tree. Otherwise you can rollback manually using: rpm-ostree rollback.

Yup, rebase is possible after making a new compose.

Instead of using pull-local as suggested above, you could start a one-off HTTP server (like python3 -m http.server) and configure a new remote to rebase from.

# ostree remote add local --no-gpg-verify
# rpm-ostree rebase local:fedora/rawhide/x86_64/copperblue

A sway variant would be epic. I’m trying to get to 0 layered packages.

1 Like

I can make it but I need you to tell me which packages you need for this variant :sweat_smile:.

The only thing above base I installed was sway and rxvt-unicode-256. Let me look up their dependencies. How do i get to the minimal starting point? If I give you the list from a dry run of sway install on toolbox would that help?

Here is the sway install:

Ho Ho lucky me urxvt 256 with multilanguage is already in that list

The sway package on Fedora still on 0.15 while there is a 1.0 release already:

Sway 1.0 is in rawhide and in this COPR repository. You can follow the packaging work on the SIG’s wiki page and mailing list.

1 Like

I have created a base image that does not have any DE and is thus smaller for those that want to overlay only a minimal DE such as sway, etc. You may find the instructions here: Kinoite, a KDE (and now XFCE) version of Fedora Silverblue.


@tdecacqu ,

I created the system dir under /sysroot/ostree/copperblue/ - is that correct?


I get:

fatal: not a git repository (or any of the parent directories): .git

I must be missing something?



@philiprhoades these instructions are meant to be ran from this project: . You first need to clone the project and then you can follow the README.


Ah . . of course . . now:

rpm-ostree compose tree -r /ostree/copperblue --workdir /ostree/copperblue/tmp copperblue.yaml
RPM-OSTree Version: 2019.3
No previous commit for fedora/30/x86_64/copperblue
Enabled rpm-md repositories: fedora-30 fedora-30-updates
Updating metadata for 'fedora-30'... done
error: cannot update repo 'fedora-30': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried; Last error: Status code: 404 for

I will try again later but is there a problem?

Unfortunately that happens sometime, the fedora-30 repo is coming from the project. Here is a patch that may works:

diff --git a/workstation-ostree-config/fedora-30.repo b/workstation-ostree-config/fedora-30.repo
index 8730199..39578ea 100644
--- a/fedora-30.repo
+++ b/fedora-30.repo
@@ -1,6 +1,6 @@
 name=Fedora 30 $basearch