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.
| 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) |
- 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 harness —
razorfin-proton-arm64-runandrazorfin-steam-arm64wire up the reference path - Steam fallback — Legacy
razorfin-steamlauncher still runs Steam via FEX-Emu - Mesa/Vulkan — Native ARM64 GPU drivers
- Gaming tools — Gamescope, MangoHud, GameMode (where available for aarch64)
- Performance tuning — Bazzite-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.
- 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)
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.
# 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:stableTo track a different channel, replace :stable with :latest or :testing.
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_64FEX-Emu thunks forward Vulkan and OpenGL calls to native ARM64 Mesa drivers, providing near-native GPU performance for games.
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 --statusThe 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.
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-utmThe 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.
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
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.
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# 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# 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 rebootRazorfin ARM uses Just for build automation.
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)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 VMjust 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 VMBuild 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 UTMThe resulting output/qcow2/Razorfin-ARM.utm bundle can be double-clicked to import into UTM, or shared with others.
just lint # ShellCheck all Bash scripts
just format # Format Bash scripts with shfmt
just check # Check Just syntax
just fix # Fix Just formattingRun just with no arguments to see all available recipes.
| 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 |
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.
Apache-2.0