Skip to content

RazorfinOS-org/Razorfin-ARM

Repository files navigation

Razorfin ARM

build

Razorfin ARM is an aarch64 port of Razorfin, built on Fedora COSMIC Atomic 43. It combines the COSMIC desktop environment with FEX-Emu for x86/x86-64 game and application support on ARM hardware.

Variants

Variant Description
razorfin-arm COSMIC desktop + FEX-Emu gaming stack
razorfin-arm-dx COSMIC desktop + FEX-Emu gaming + developer tools
razorfin-arm-rpi5 Raspberry Pi 5 (experimental)
razorfin-arm-rockchip Rockchip RK3588/RK3589 boards (experimental)

What's Included

  • COSMIC Desktop — System76's modern, Rust-based desktop environment
  • FEX-Emu — x86/x86-64 binary translator with Vulkan/OpenGL thunks for near-native GPU performance
  • Steam Runtime 4 (ARM64) — Staged in the image for Valve-style ARM64 Proton launches
  • ARM64 Proton harnessrazorfin-proton-arm64-run and razorfin-steam-arm64 wire up the reference path
  • Steam fallback — Legacy razorfin-steam launcher still runs Steam via FEX-Emu
  • Mesa/Vulkan — Native ARM64 GPU drivers
  • Gaming tools — Gamescope, MangoHud, GameMode (where available for aarch64)
  • Performance tuningBazzite-matched sysctl values, FEX thunks, per-game AppConfig profiles
  • Razorfin branding — Custom Plymouth theme, fastfetch, MOTD

Note: Gamescope availability on aarch64 depends on Fedora packaging. If unavailable, it is automatically skipped during image build. Games will still run but without Gamescope's micro-compositor features.

Hardware Requirements

  • Architecture: Generic aarch64 (ARM64) with UEFI boot
  • Kernel page size: 4K (required by FEX-Emu; Fedora aarch64 default)
  • GPU: Any GPU with Mesa Vulkan drivers (AMD, Intel, Qualcomm Adreno)
  • Not supported: Apple Silicon (requires Asahi kernel patches)

Release Channels

Images are built once and promoted between channels by re-tagging, so each channel ships the exact same image digest that was validated in the tier below it.

Channel Cadence Description
testing Every push to main Bleeding edge — latest changes, may have rough edges
latest Daily Previous day's testing build, suitable for general use
stable Weekly (Tuesdays) Previous week's latest, recommended for most users

Each promotion also creates a date-stamped tag (e.g., stable.20260208) for pinning or rollback.

Installation

Switch from an existing Fedora Atomic system

# Base variant — stable channel (recommended)
sudo bootc switch --enforce-container-sigpolicy ghcr.io/razorfinos-org/razorfin-arm:stable

# DX variant
sudo bootc switch --enforce-container-sigpolicy ghcr.io/razorfinos-org/razorfin-arm-dx:stable

# Board-specific variants
sudo bootc switch --enforce-container-sigpolicy ghcr.io/razorfinos-org/razorfin-arm-rpi5:stable
sudo bootc switch --enforce-container-sigpolicy ghcr.io/razorfinos-org/razorfin-arm-rockchip:stable

To track a different channel, replace :stable with :latest or :testing.

Using FEX-Emu

FEX-Emu enables running x86/x86-64 applications on your ARM64 hardware:

# Run any x86 binary
FEXBash ./some-x86-binary

# Launch Steam
razorfin-steam

# Verify FEX is working
FEXBash uname -m  # Should output: x86_64

FEX-Emu thunks forward Vulkan and OpenGL calls to native ARM64 Mesa drivers, providing near-native GPU performance for games.

Valve-Style ARM64 Proton Path

Razorfin now stages Valve's public Steam Linux Runtime 4 ARM64 artifact in the image and installs two reference launchers:

# Inspect the staged ARM64 runtime and resolve any Proton ARM64 tool
razorfin-steam-arm64 status

# Inspect the lower-level launch harness
razorfin-proton-arm64-run --status

The desktop launcher currently uses the proven legacy Steam-on-FEX path for login and setup, so users can sign in and install the free Proton 11.0 (ARM64) tool without waiting on a native ARM Steam client.

Once a user has logged into Steam and installed Proton 11.0 (ARM64), or if a local ARM64 Proton build has been staged in the system tool directory, a Windows executable can be launched directly through the ARM64 runtime harness:

razorfin-proton-arm64-run --appid 480 --exe "$HOME/Games/Test/Game.exe"

The legacy razorfin-steam launcher remains available as a fallback while the ARM64-native stack matures.

Building And Testing In UTM

The image build stages the public ARM64 Steam Runtime and the ARM64 launch harness, but does not log into Steam or preinstall Proton. Users install the free Proton 11.0 (ARM64) tool after boot by opening Steam and signing in.

Once the container image builds, the repo already includes the macOS/UTM path:

just build
just build-qcow2
just build-utm
just open-utm

The generated UTM bundle defaults to Shared networking with an Intel E1000 NIC because that is currently more reliable than the VirtIO NIC for IPv4 connectivity on this setup.

Performance Tuning

Razorfin ARM ships with gaming-optimized kernel parameters matching Bazzite's production configuration:

  • vm.max_map_count raised for Proton/Wine compatibility
  • ZRAM-optimized swappiness for better memory management under gaming loads
  • TCP BBR congestion control for faster game downloads
  • Memlock limits raised for Proton shared memory regions
  • FEX AppConfig — 29 pre-tested per-game emulation profiles from FEX-Emu/AppConfig
  • FEX ThunksDB — Vulkan/OpenGL calls forwarded to native ARM64 Mesa by default

TSO Auto-Detection

The razorfin-steam launcher automatically detects hardware TSO (Total Store Ordering) support:

Feature Status Description
LRCPC2 (FEAT_LRCPC2) Best Full hardware TSO — native x86 memory ordering
LRCPC (v1) Partial Partial hardware acceleration
None Software Software memory barriers (reduced performance)

Run razorfin-steam to see your TSO status at launch.

Image Verification

All images are signed with Cosign. The public key is included in this repository as cosign.pub.

cosign verify --key cosign.pub ghcr.io/razorfinos-org/razorfin-arm:stable

Changing Channels

# Move to the stable channel
sudo bootc switch --enforce-container-sigpolicy ghcr.io/razorfinos-org/razorfin-arm:stable

# Pin to a specific date-stamped image
sudo bootc switch --enforce-container-sigpolicy ghcr.io/razorfinos-org/razorfin-arm:stable.20260208

systemctl reboot

Rollback

# Roll back to the previous deployment
sudo bootc rollback
systemctl reboot

# Or switch to a known-good date-stamped image
sudo bootc switch --enforce-container-sigpolicy ghcr.io/razorfinos-org/razorfin-arm:stable.20260201
systemctl reboot

Building Locally

Razorfin ARM uses Just for build automation.

Container Images

just build                  # Base variant (generic aarch64)
just build-dx               # DX variant (developer tools)
just build-rpi5             # Raspberry Pi 5 variant (experimental)
just build-rockchip         # Rockchip variant (experimental)

VM Images

just build-qcow2            # Build QCOW2 image
just build-raw              # Build RAW disk image
just run-vm-qcow2           # Build and run QCOW2 in a VM
just run-vm-raw             # Build and run RAW in a VM

ISOs

just build-iso              # Generic aarch64 ISO
just build-iso-rpi5         # Raspberry Pi 5 ISO
just build-iso-rockchip     # Rockchip ISO
just run-vm-iso             # Boot an ISO in a QEMU web VM

UTM VM (macOS)

Build a UTM-compatible .utm bundle that can be opened directly in UTM:

just build-utm              # Build UTM bundle from existing QCOW2 (default: 8GB RAM, 4 CPUs)
just build-utm ram=16384    # Build with 16GB RAM
just rebuild-utm            # Rebuild container, QCOW2, and UTM bundle in one command
just open-utm               # Open the UTM bundle in UTM

The resulting output/qcow2/Razorfin-ARM.utm bundle can be double-clicked to import into UTM, or shared with others.

Development

just lint                   # ShellCheck all Bash scripts
just format                 # Format Bash scripts with shfmt
just check                  # Check Just syntax
just fix                    # Fix Just formatting

Run just with no arguments to see all available recipes.

Differences from x86 Razorfin

Feature x86 Razorfin Razorfin ARM
Base image Bazzite (Universal Blue) Fedora COSMIC Atomic 43
Architecture x86_64 aarch64
Gaming Native x86 + Proton FEX-Emu x86 translation + Proton
NVIDIA variants Yes No (ARM NVIDIA is rare)
ISOs Monthly Planned

Contributing

See the release runbook for details on the CI/CD pipeline, emergency hotfix procedures, and rollback operations.

For the ARM gaming stack's forward-looking design, see the Valve-style ARM64 Proton reference architecture.

Community

License

Apache-2.0

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors