Skip to main content

Get and flash a Linux image

Choose an image​

There are three sources of ready-made images. All of them boot with the same Linux loader.

SourceWhat you get
ps5-linux-imageThe official images from the ps5-linux project (table below).
mia's ps5-linux-image buildsA fork with many more distros, see Community images.
PS5 Bazzite DeckBazzite with the Steam Deck interface, with extra display, Wi-Fi and Bluetooth fixes and PS5 Slim and Pro support.

Official images​

DistroDesktopNotes
Ubuntu 26.04 (default)GNOMERecommended for beginners
ArchSwayLow overhead, about 750 MiB RAM at idle
CachyOSGamescope + Steam Big Picture, KDE Plasma (no SDDM)Gaming-focused. Currently broken.
FedoraGNOME (Wayland)
Debian 12XfceSuccessor to the old Kali-based image
Proxmox VE 8None (headless)Runs the PS5 as a hypervisor
BazziteGamescope + SteamuBlue gaming Fedora, ostree-flattened
Bazzite DeckGamescope + Steam, Steam Deck-style UIBazzite's Steam Deck interface variant. See also PS5 Bazzite Deck.
BatoceraRetro emulation front endPre-built squashfs root filesystem

You can also build a multi-distro image that switches between Ubuntu, Arch and CachyOS on the same USB drive using kexec.

Distro-specific notes​

Arch: the lowest-overhead option. With Sway as the window manager, idle RAM usage stays around 750 MiB, which leaves the most headroom for games and applications.

fastfetch on a PS5 running Arch
-` ps5@archlinux
.o+` OS: Arch Linux x86_64
`ooo/ Host: PlayStation 5 (CFI-1016B 01Y)
`+oooo: Kernel: Linux 7.1.0
`+oooooo: Packages: 719 (pacman)
-+oooooo+: Shell: fish 4.7.1
`/:-:++oooo+: CPU: 100-000000189 (16) @ 3.49 GHz
`/++++/+++++++: GPU: AMD Device 13FB
`/++++++++++++++: Memory: 750.04 MiB / 15.00 GiB (5%)
`/+++ooooooooooooo/` Disk (/): 29.04 GiB / 468.33 GiB (6%)
./ooosssso++osssssso+` Local IP (wlp64s0f7): 192.168.1.81/24
.oossssso-````/ossssss+`
-osssssso. :ssssssso.
:osssssss/ osssso+++.
/ossssssss/ +ssssooo/-
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/

CachyOS: running sudo pacman -S cachyos-handheld turns a normal CachyOS install into a Gamescope-first handheld setup with a "switch to desktop" option, so you don't have to set it up by hand.

Batocera: if you get a network connection but no display output on v43, that release ships Mesa 25.3.6 without the PS5 display patches. Either wait for a Batocera build with a newer Mesa, or rebuild Mesa yourself with the PS5 patches applied. This is a missing driver patch in the distro, not a cmdline.txt or EDID problem.

Autologin on tty1 straight into Gamescope (no SDDM or other display manager): add a systemd getty drop-in that autologins on tty1 only. Then make ~/.bash_profile check that it is running on /dev/tty1, kill any leftover Steam helpers, and exec Gamescope with steam -gamepadui. Because the check is limited to tty1, SSH and other logins are unaffected. This avoids the black screen that some desktop-mode setups hit when switching sessions through SDDM.

Download a pre-built image​

Download an image from the ps5-linux-image releases. Pick the .img.xz file for your distro and decompress it.

Community images (mia's builds)​

These come from mia's fork of ps5-linux-image. They all use the same linux-ps5 kernel and firmware setup, and they grow the root partition to fill the drive on the first boot. The links always point to the latest build. Sizes are compressed.

Debian-based:

ImageSizeNotes
ps5-ubuntu2604.img.xz1.7 GBUbuntu 26.04, GNOME
ps5-mint22-cinnamon.img.xz1.8 GBLinux Mint 22, Cinnamon (Ubuntu 24.04 base)
ps5-debian13-server.img.xz683 MBDebian 13 (Trixie), server profile with no desktop
ps5-debian13-xfce.img.xz924 MBDebian 13, Xfce
ps5-debian13-gnome.img.xz1.3 GBDebian 13, GNOME
ps5-debian13-kde.img.xz1.5 GBDebian 13, KDE Plasma
ps5-debian13-proxmox.img.xz1.0 GBDebian 13 with Proxmox VE 9, for running VMs on the PS5
ps5-devuan-sway.img.xz581 MBDevuan (no systemd), Sway

Arch-based:

ImageSizeNotes
ps5-arch.img.xz1.2 GBPlain Arch Linux
ps5-cachyos.img.xz1.7 GBCachyOS (performance-tuned Arch), KDE
ps5-artix-openrc.img.xz1.7 GBArtix Linux (no systemd), OpenRC
ps5-artix-runit.img.xz1.7 GBArtix Linux, runit
ps5-miaos.img.xz1.6 GBMiaOS: Arch with KDE, Steam and Gamescope, console mode by default

Fedora-based:

ImageSizeNotes
ps5-fedora-gnome.img.xz1.0 GBFedora 44 Workstation (GNOME)
ps5-fedora-kde.img.xz1.3 GBFedora 44 Kinoite (KDE Plasma)
ps5-bazzite-deck.img.xz5.1 GBBazzite with the Steam Deck interface. Not the same as PS5 Bazzite Deck.

Other:

ImageSizeNotes
ps5-alpine.img.xz814 MBAlpine Linux (musl, OpenRC): small, server and command line
ps5-batocera.img.xz3.0 GBBatocera (retro emulation)
ps5-tinycore.img.xz53 MBTiny Core: minimal live image, useful for rescue and testing

To build one yourself, each distro has a distros/<name>/ folder in the repository. Run build_image.sh --distro <name> on any x86_64 Linux host with Docker. The shared kernel is built by the separate kernel builder.

To install or update the kernel on these images with your package manager, see Package repository.

Build your own image​

You need Docker and about 30 GB of free disk space.

# On Windows, run this inside WSL (install it first with: wsl --install)
sudo apt update && sudo apt install docker.io -y
sudo service docker start
sudo usermod -aG docker $USER
newgrp docker

git clone https://github.com/ps5-linux/ps5-linux-image
cd ps5-linux-image
chmod +x ./build_image.sh

# Single distro: ubuntu2604, arch, cachyos, fedora, debian, proxmox,
# bazzite, bazzite-deck, batocera
./build_image.sh --distro ubuntu2604
./build_image.sh --distro cachyos

# Multi-distro (Ubuntu + Arch + CachyOS, 32 GB image)
./build_image.sh --distro all

# Build only the kernel packages (.deb / .pkg.tar.zst), no image
./build_image.sh --kernel-only

# Build against a specific ps5-linux-patches branch, tag or commit
./build_image.sh --distro arch --patches-ref main

Images are written to output/; kernel-only builds go to linux-bin/. Later runs reuse the cached kernel and root filesystem automatically. Add --clean to wipe the cache and start fresh.

WSL running out of memory during the build?

Create or edit C:\Users\<you>\.wslconfig and raise the memory limit:

C:\Users<you>.wslconfig
[wsl2]
memory=8GB

Then restart WSL with wsl --shutdown.

Flash the image to USB​

The drive must be 64 GB or larger. An external SSD is strongly recommended.

Linux or macOS:

# Find your drive first with lsblk (Linux) or diskutil list (macOS)
sudo dd if=ps5-ubuntu2604.img of=/dev/sdX bs=4M status=progress conv=fsync

On Linux you can also flash a compressed .img.xz directly, without decompressing it first:

xzcat ps5-ubuntu2604.img.xz | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
sync
danger

Double-check the target device. dd overwrites whatever you point it at without asking.

Windows: use Rufus. balenaEtcher has known problems flashing PS5 images.

Edit cmdline.txt from Windows​

The kernel command line lives in cmdline.txt on the FAT32 partition of the USB drive. See Kernel parameters for what you can put in it.

Without WSL: use Explorer++ (run it as administrator). It can open the FAT32 EFI partition where cmdline.txt lives.

With WSL: attach the drive to WSL, then edit the file from Linux.

# In PowerShell as administrator: find the drive number
Get-CimInstance -Query "SELECT * from Win32_DiskDrive"

# Attach partition 1 of that drive to WSL
wsl --mount \\.\PHYSICALDRIVE1 --partition 1 --type vfat
# Then, inside WSL
ls /mnt/wsl/PHYSICALDRIVE1p1/
nano /mnt/wsl/PHYSICALDRIVE1p1/cmdline.txt

Next: Booting Linux.