Skip to content

OmegaSquad82/bluebuilds

Repository files navigation

OmegaSquad82/BlueBuilds  

image-build vuln-scan Dependabot Updates

See the BlueBuild docs for quick setup instructions for setting up your own repository based on this template.

Images

All images are built with a selection of common packages, flatpaks as well as some configuration.

It is a flavor of Bazzite Stable for ASUS Laptops with NVIDIA dGPU.

Bazzite Stable for either desktop or laptop gaming.

Bazzite Deck Stable for Steam Deck clone(s).

Fedora (Sericea/)Sway Atomic suitable for low resource footprint devices (e.g. netbooks).

Customizations

Podman

The podman.service is enabled on Buttgenbachit.

Flatpaks

All images

install
  • KeepassXC
  • LibreOffice
  • LibreWolf
  • Signal
  • SynologyDrive
  • Warehouse
uninstall
  • Mozilla Firefox

Bazzite images

  • Discord
  • OpenRGB

Select images

  • AusweisApp2
  • BoxBuddy
  • Calibre
  • Codium
  • HandHeldDaemon
  • Libation
  • MediaWriter
  • Obsidian
  • Ptyxis
  • Weasis

Utility packages

All images

install
  • byobu
  • htop
  • kitty
  • neovim

Select Images

uninstall
  • firefox

Manually

execute
  • brew install pdfgrep

464XLAT for IPv6-only

Fedora packages clatd to translates flows from an IPv6-only client to IPv4 hosts via NAT46, so it can be transmitted and translated back via NAT64 in a PLAT device, e.g. at the edge in a CPE or in an ISP network.

This feature likely is not functional, yet.

Swap on ZRAM

Fedora uses Swap on ZRAM by default on all Spins, the systemd-zram-generator is available to configure compressed drives, including setting it up as swap.

Starting with v1.2.1 the zram-generator supports (via systemd/zram-generator#178 and systemd/zram-generator#200) configuring secondary compression algorithms and associated parameters to recompress pages on a zram drive triggering it by touching a knob in sysfs. This allows for some flexibility.

A first scenario would've only compressed huge pages once every three minutes, now a second but more generic use case lets zram absorb swapped out pages quickly but over time would try to recompress every single one of them in batches.

It is important to know that in zram terms incompressible pages are called huge; the Memory Management subsystem also knows huge pages but means something different.

Implementation

zram is configured to use lz4 as a fast, low-latency compression algorithm and both zstd and lz4hc were selected for recompression. A default to recompress both huge and idle pages is used and a maximum of 4096 pages (up to 16 MiB) was selected to not produce unduly burden on the CPU.

The system uses a zram-recompression.timer to orchestrate the one-off execution of zram-recompression.service which in turn calls recompress-zram script. It has grown quite a bit, most functionality exists for debugging purposes. It will first mark all pages as idle, then trigger recompression and finally memory compaction.

Outcome

On a severely memory constrained device with only 4 GiB, I've observed ratios of roughly 30..40% during normal usage scenarios (Browser, Electron Shells, E-Mail, Password Databases, Synchronization, ...) while the system stays mostly reactive. With this configuration I try to achieve a good user experience, but the capabilities of it are still limited.

Blogs

Documentation

Github

Wikis

Installation

Warning
This is an experimental feature, try at your own discretion.

To rebase an existing atomic Fedora installation to the latest build:

  • First rebase to the unsigned image, to get the proper signing keys and policies installed:
    rpm-ostree rebase ostree-unverified-registry:ghcr.io/blue-build/template:latest
    
  • Reboot to complete the rebase:
    systemctl reboot
    
  • Then rebase to the signed image, like so:
    rpm-ostree rebase ostree-image-signed:docker://ghcr.io/blue-build/template:latest
    
  • Reboot again to complete the installation
    systemctl reboot
    

The latest tag will automatically point to the latest build. That build will still always use the Fedora version specified in recipe.yml, so you won't get accidentally updated to the next major version.

ISO

If build on Fedora Atomic, you can generate an offline ISO with the instructions available here. These ISOs cannot unfortunately be distributed on GitHub for free due to large sizes, so for public projects something else has to be used for hosting.

Verification

These images are signed with Sigstore's cosign. You can verify the signature by downloading the cosign.pub file from this repo and running the following command:

cosign verify --key cosign.pub ghcr.io/blue-build/template