Files
ps5-linux-image/distros/bazzite/README.md
mia26MAjFm 9682cada8d Add bazzite, bazzite-deck, batocera distro support (#20)
Each distro ships with a self-contained build-rootfs.sh that the entrypoint
calls in place of distrobuilder.  This keeps upstream's distrobuilder flow
untouched for the existing distros (ubuntu/arch/cachyos/fedora/etc.) and
isolates the new distros' build logic in their own dirs.

distros/bazzite/
  build-rootfs.sh — skopeo+umoci on ghcr.io/ublue-os/bazzite:stable,
                    promote ostree /usr/etc -> /etc, install linux-ps5 RPM,
                    mask rpm-ostree services, set up grow-rootfs + DTM-TA
                    amdgpu reprobe.
  image.yaml, grow-rootfs, grow-rootfs.service

distros/bazzite-deck/
  Symlinks into distros/bazzite/ — bazzite-deck shares all build logic;
  the case branch in build-rootfs.sh dispatches via $DISTRO.

distros/batocera/
  build-rootfs.sh — download upstream batocera-x86_64-*.img.gz, mount,
                    extract /boot/batocera squashfs, swap in linux-ps5
                    kernel, patch libretroControllers.py, install first-boot
                    SHARE-partition creator (ps5-share-init).

docker/image-builder/entrypoint.sh
  - detect_kver() helper from /kernel-debs/ package filenames
  - dispatch to distros/$DISTRO/build-rootfs.sh when present (skips
    distrobuilder for that distro)
  - EFI assembly detects /boot/efi/ vs /boot/bzImage layouts so batocera
    (which mounts FAT at /boot, not /boot/efi, for batocera-part SHARE
    detection) works alongside the standard layout

build_image.sh
  - IMG_SIZE defaults: bazzite* -> 24 GB, batocera* -> 16 GB
  - FORMAT: bazzite* -> rpm (linux-ps5 RPM); batocera* stays deb

CI workflows are NOT modified — the upstream build-image.yml /
trigger-builds.yml continue to apply and will skip these distros unless
explicitly dispatched (they're not in MULTI_DISTROS).  Local builds:
  ./build_image.sh --distro bazzite
  ./build_image.sh --distro bazzite-deck
  ./build_image.sh --distro batocera

Co-authored-by: mia26MAjFm <mia26MAjFm@users.noreply.github.com>
2026-06-20 11:51:53 -04:00

1.2 KiB

bazzite / bazzite-deck

Adds support for Bazzite (uBlue's gaming-focused atomic Fedora) and Bazzite-Deck (Steam Deck UI variant) on PS5 hardware.

These are OCI atomic images — distrobuilder doesn't apply. distros/bazzite/build-rootfs.sh runs in place of the distrobuilder call:

  1. skopeo copy docker://ghcr.io/ublue-os/bazzite:stable → OCI archive
  2. umoci unpack → flat rootfs into $CHROOT
  3. Promote /usr/etc defaults into /etc
  4. Install the linux-ps5 RPM via rpm-ostree/dnf, then mask the rpm-ostree services (we're a flat fs now)
  5. Set up grow-rootfs systemd unit + DTM-TA-race amdgpu reprobe udev rule

bazzite-deck is built from ghcr.io/ublue-os/bazzite-deck:stable via the same script (the case "$DISTRO" in bazzite-*) branch generates the OCI reference automatically). All distros/bazzite-deck/* files are symlinks into distros/bazzite/.

Build locally

./build_image.sh --distro bazzite
./build_image.sh --distro bazzite-deck

Image size bumped to 24 GB (default). Compressed output is large (~3-5 GB .img.xz) — too big for a 2 GB GitHub release asset, so this image is not auto-published by the CI workflow.