PS4 Linux
v1.0

Arch Linux with KDE Plasma on a jailbroken PS4.

Run Linux from a USB drive on a jailbroken PS4. Tested setup, ready-to-use files. Works on CUH-7116B (Pro) and CUH-2116A (Slim) on FW 13.52 with GoldHEN. The loader supports FW 5.05-13.52.

KDE Plasma desktop running on PS4
Download v1.0Source on GitHub

Requirements

Which kernel

ModelTypeSouthbridgeKernelStatus
CUH-10xx, CUH-11xxFatAeoliabzImage-belize-7.1.7Untested
CUH-12xxFatBelizebzImage-belize-7.1.7Untested
CUH-2116ASlimBaikalbzImage-baikal-7.0.8Works (FW 13.52, GoldHEN)
Other CUH-2xxxSlimDepends on the motherboardBelize or BaikalUntested
CUH-70xxProBelizebzImage-belize-7.1.7Untested
CUH-7116BProBelizebzImage-belize-7.1.7Works (FW 13.52, GoldHEN)
Other CUH-7xxxProDepends on the motherboardBelize or BaikalUntested

Not sure? If the Belize kernel gets a white light every time, use the Baikal kernel. Some Fat models have Wi-Fi and Bluetooth chips that may not work.

Install

1. Write the USB image

  1. Download psxitarch-usb.img.xz.part1 and psxitarch-usb.img.xz.part2 from the release (a ready-made Arch Linux KDE USB image, xz-compressed, split in 2 parts) and write-img.ps1.
  2. Join the parts. Windows:
    cmd /c copy /b psxitarch-usb.img.xz.part1 + psxitarch-usb.img.xz.part2 psxitarch-usb.img.xz
    Linux:
    cat psxitarch-usb.img.xz.part1 psxitarch-usb.img.xz.part2 > psxitarch-usb.img.xz
  3. In PowerShell as Administrator, run Get-Disk to find the USB number (not your PC disk), then:
    .\write-img.ps1 -ImagePath .\psxitarch-usb.img.xz -DiskNumber <N>
    (needs 7-Zip). Or extract the .img with 7-Zip and use balenaEtcher or Rufus (DD mode). If Windows asks to format the stick, click Cancel.

2. Put the kernel on the PS4

  1. Jailbreak with GoldHEN and FTP to the PS4, port 2121.
  2. Create the folder /data/linux/boot/.
  3. Upload the kernel for your console and name it /data/linux/boot/bzImage.
  4. Upload initramfs.cpio.gz to /data/linux/boot/initramfs.cpio.gz.

Do not put a file named bzImage on the USB: the loader prefers a USB kernel, so leave it off and one USB works on every console.

3. Boot

  1. Plug the USB into the PS4 before you turn it on.
  2. Jailbreak.
  3. Send linux-1024mb.elf to the loader:
    nc -q 1 <PS4-IP> 9020 < linux-1024mb.elf
    If port 9020 does not answer, try 9090. A black screen for a minute or two is normal; it then logs in to the KDE desktop.

After a reboot you are back on the PS4. Jailbreak and send the payload again. The USB can stay plugged in.

The light: if it turns from white to blue within about 15 seconds, the kernel started. If it stays white for more than 20 seconds, check the kernel table, or power off, turn the console back on, and try again.

Payloads

FileVRAMUse
linux-32mb.elf to linux-512mb.elf32-512MBNo desktop. Server only.
linux-1024mb.elf1GBUse this for the desktop. Tested on Pro and Slim.
linux-2048mb.elf2GBMore graphics memory.
linux-3072mb.elf3GBNot tested.
linux-4096mb.elf4GBTested on Pro (FW 13.52). Leaves about 4GB RAM.

After it boots

Use the rest of the USB

Only from Linux running on the PS4. Grow only the partition labeled psxitarch (partition 2 of the USB stick); never touch the console's internal disk. These are the usual commands (not run on the console):

lsblk -f
sudo parted /dev/sdX resizepart 2 100%
sudo resize2fs /dev/sdX2

Troubleshooting

Credits

fail0verflow (original PS4 Linux port, ps4-kexec), rancido and PSXITA Team, eeply, valeryy, tihmstar, mircoho, codedwrench, crashniels (kernel patches), rmuxnet (Strawberry kernels, loader rework), ps4boot (original loader), ArabPixel (ps4-linux-loader, FW 12.5x/13.xx), PSXITA Team (Psxitarch v3 initramfs), Piotr Karbowski (better-initramfs), Erkkola (Arch KDE rootfs), centi07 and DionKill (Mesa packages), SiSTR0 (GoldHEN). Kernels, payloads and initramfs are unmodified and belong to their authors.