Skip to content

feat: support composefs-native and plain ostree images in fisherman #2

@hanthor

Description

@hanthor

Overview

fisherman currently only supports standard OCI/bootc container images installed via bootc install to-filesystem. Add explicit support for:

  1. composefs-native images — images using bootc's composefs backend (--experimental-composefs), where the filesystem is stored as a content-addressed composefs rather than a plain ostree commit
  2. Plain ostree images — non-bootc OSTree repos (e.g. raw ostree pull + ostree admin deploy) for compatibility with non-bootc ostree-based distros (Fedora Silverblue pre-bootc, GNOME OS, etc.)

Motivation

  • composefs is the future default backend for bootc and provides fs-verity image verification. Once it becomes the default, fisherman should handle it transparently.
  • Plain ostree lets fisherman install non-bootc ostree images, widening compatibility significantly.
  • Both are complementary to the existing unified storage work (--experimental-unified-storage).

composefs support

The composefs backend stores each file as a content-addressed object with fs-verity. Installation:

bootc install to-filesystem --experimental-composefs /target

Recipe field to add:

{ "backingStore": "composefs" }   // default: "ostree"

fisherman would pass --experimental-composefs to bootc install when set.

Note: composefs requires a filesystem that supports fs-verity (ext4, f2fs, btrfs). XFS does not currently support fs-verity — fisherman should validate this combination and reject xfs+composefs with a clear error.

ostree (non-bootc) support

For plain ostree repos, installation would use ostree CLI directly instead of bootc:

ostree pull-local /path/to/repo
ostree admin --sysroot=/target deploy REFSPEC

Or via remote:

ostree remote add origin https://...
ostree pull origin REFSPEC
ostree admin deploy origin:REFSPEC

Recipe additions needed:

{
  "imageType": "bootc",        // or "ostree"
  "ostreeRemote": "https://...",
  "ostreeRef": "fedora/40/x86_64/silverblue"
}

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions