Arch Linux made unbreakable and lightning fast.
Unlike immutable distributions that lock you out of the native package manager and force you into sandboxes, Plutonium-239 keeps the core Arch experience intact. You still get the bleeding-edge Arch repositories and the power of the AUR but all of that with a 5-20% performance boost from a heavily optimized kernel and the peace of mind of an unbreakable safety net underneath.

Just like vanilla Arch Linux, Pu-239 stays true to the core values of being lightweight, flexible and keeping it simple. The installer does not flash a giant prebuilt image or give you a bloated kitchen sink install. It downloads packages from the live official Arch mirrors, the AUR is enabled and you can change all the packages as Pu-239 is not immutable. Don't like the font? Pick another one. Don't like KDE? Switch to another DE. This is still stock Arch, except it is atomically updated and tailored to your hardware with performance optimizations from the very first boot. Do whatever you want with it, just like you are used to.
Mainstream distros are too slow, SteamOS doesn't support your hardware yet and other Arch-based distros are too intimidating? Pu-239 bridges that gap. Just like SteamOS you simply install it, receive the right drivers for your hardware automatically, download your programs like Steam as Flatpaks with one click and just start playing, no set-up needed. If you want to update, you can be sure that nothing is going to break and you can get back to playing instead of troubleshooting. To top that off, Pu-239 comes extremely debloated with LESS than 2 GB RAM usage at idle and ships out of the box with a heavily optimized 1000Hz kernel so you can get the most out of your hardware.
Pu-239 is a Linux distribution based on the unmodified Arch Linux package set. It changes the deployment model, not the package selection. The official Arch repositories supply everything except the performance kernel and the updater, which are compiled from source, signed, and served from a self-hosted repository.
Three properties define the system.
A hardware detection step runs at install time and on every update to select the CPU microcode, the kernel variant, and the GPU stack.
Arch Linux has no rollback mechanism and no kernel build service. Recovery from a failed update is manual. Pu-239 adds both on top of the unmodified package set. The deployment model is ostree plus systemd-boot boot counting, which is the same mechanism Fedora Atomic and SteamOS use, built here from the official Arch packages rather than from a vendor image.
| Partition | Content | Mount |
|---|---|---|
| sda1 | ESP, VFAT, 1 GiB | /boot/efi, unencrypted |
| sda2 | btrfs | ostree sysroot at / |
| Partition | Content | Mount |
|---|---|---|
| sda1 | ESP, VFAT, 1 GiB | /boot/efi, unencrypted |
| sda2 | LUKS2 container holding btrfs | ostree sysroot at / |
The ESP is unencrypted because systemd-boot reads it directly.
Deployments are plain directories managed by ostree. There are no btrfs subvolumes. /boot is a plain btrfs directory because ostree rejects a vfat /boot.
The operating system is a series of ostree deployments. Each update builds a new root tree and commits it. The previous tree is never modified, so it is always a valid rollback target. Unchanged files are hardlinked between deployments, so a new deployment uses little additional disk space.
Updates are incremental. ostree checkout produces a hardlinked copy of the current tree, pacman updates that copy, mkinitcpio runs inside it, and the result is committed and deployed. A full build from scratch happens only at install time.
The build engine copies its complete directory into /usr/lib/pu-239 of every deployment, so newly added units and scripts are present on all future updates.
The committed tree must satisfy the following.
| Mount | State | Mechanism |
|---|---|---|
| / | read-only | pu-239-seal-root.service, a per-mount bind remount after multi-user.target |
| /sysroot | read-only bind | ostree-prepare-root with sysroot.readonly=true |
| /var | read-write | bind of the stateroot var, shared, never touched by rollback |
| /etc | read-write overlay | ostree state overlay |
| /boot | read-only bind | sysroot /boot |
| /boot/efi | read-write | the ESP |
The root superblock is mounted read-write. The read-only seal is applied later in the boot sequence so the update path retains write access. /root and /opt are symlinks into /var.
/etc is provided by ostree-state-overlay@etc.service. The lower layer is the /etc of the deployment and the upper and work directories live at /var/ostree/state-overlays/etc/. When the booted deployment changes, the upper layer is pruned at boot.
A systemd drop-in pre-creates the upper directory with mode 0755. The upstream unit creates it with mode 0700, which makes the merged /etc unreadable to non-root processes.
The boot path is ostree plus systemd-boot plus systemd-bless-boot. There are no custom boot scripts.
A deployment that fails to boot exhausts its attempts and the firmware falls back to the previous stable deployment with no user action. A systemd-bless-boot drop-in pins the ESP path so the counter is stripped from the correct loader.
The kernel and initramfs live at /boot/ostree/pu-239-<bootcsum>/. ostree writes kernels and Boot Loader Spec entries only to the sysroot /boot and never to the ESP. esp-sync.sh mirrors the kernels and syncs the Boot Loader Spec entries additively, preserving the live boot-counting renames when the kernel and options are unchanged. It runs at install, at update, and as a service on every boot, where it is a no-op in steady state.
Without LUKS: root=PARTUUID=<uuid> rw ostree=/ostree/deploy/pu-239/deploy/<hash>.0
With LUKS: root=/dev/mapper/cryptroot rw rd.luks.name=<luks-uuid>=cryptroot ostree=/ostree/deploy/pu-239/deploy/<hash>.0
HOOKS=(base systemd ostree microcode kms modconf block keyboard sd-vconsole sd-encrypt filesystems)There is no autodetect hook because the initramfs must be hardware-agnostic across deployments and machines.
Pu-239 ships linux-cachyos, the performance kernel of the CachyOS project, featuring a 1000 Hz tick rate, EEVDF scheduler, and optimizations tailored to modern CPUs. I compile it myself from their GPL licensed build scripts and host it on my own infrastructure, in accordance with CachyOS repository policy. However unlike them, I ship it for every single x86_64 microarchitecture, from x86_64-v2 for old dual Xeon workstations to x86_64-znver4 for modern AM5 CPUs.
| Variant | _processor_opt |
|---|---|
| x86_64 | GENERIC_V1 |
| x86_64-v2 | GENERIC_V2 |
| x86_64-v3 | GENERIC_V3 |
| x86_64-v4 | GENERIC_V4 |
| x86_64-znver4 | ZEN4 |
NVIDIA support is pre-built linux-cachyos-nvidia-open for Turing and newer, with no DKMS. Maxwell, Pascal, Volta, and older are detected by PCI identifier and fall back to the open-source nouveau driver. The legacy drivers like 580.XX can still be chosen to install through the AUR if the user wishes to.
Detection reads /proc/cpuinfo and /sys/bus/pci/devices directly. It runs at install time and on every update.
CPU microcode. GenuineIntel installs intel-ucode, AuthenticAMD installs amd-ucode.
Kernel variant, checked in order.
GPU stack, additive.
The update stack is a single application, pu-239-update. It presents one update button and behaves like the standard arch-update tool. In the background it applies your package list, builds a new deployment, and stages a reboot into the new tree. If the new deployment fails to boot, the bootloader returns to the previous one automatically.
Open Pu-239 Update from the application launcher. The window has two views.
Changes to the package list take effect on the next update. Save the list, run the update, and reboot.
Run arch-update in a terminal. It checks the official repositories and the AUR, applies the package list, builds the new deployment, and asks whether to reboot now, defaulting to yes. Answer yes to boot into the new tree.
The file /var/lib/pu-239/packages.list is the complete desired state of the system. Packages listed here are installed on the next update. Packages removed here are uninstalled on the next update. There is no protected core set, so you may remove anything the system shipped with. The list is filled automatically on first boot with everything currently installed, so it starts as an accurate picture of the machine.
You may edit this file with any text editor, or use the built-in editor in the graphical pu-239-update.
Prefix a package name with aur/ in the list to install it from the AUR. The updater builds it from source during the update and installs the result. A build failure is reported but does not stop the rest of the update.
The root filesystem is read-only, so pacman -S, -R, -U, and -D cannot work and are blocked with a message pointing you to the package list. Read-only pacman queries such as -Ss and -Qi still work. Install and remove software through the package list instead.
atomic-update.sh checks ostree, the engine, and the repository, asserts boot counting, runs the engine, runs ostree admin deploy with a kernel-argument fallback from /proc/cmdline, verifies status and Boot Loader Spec sanity, records bookkeeping, and touches /run/pu-239/update-staged before prompting for a reboot.
The graphical updater runs in the calling user's session because pkexec strips WAYLAND_DISPLAY and XDG_RUNTIME_DIR and terminates GTK4 before it paints. Privilege escalation is per action only.
The desired state lives at /var/lib/pu-239/packages.list. It is seeded on first boot by seed-userlist.sh, which writes every explicitly installed package into the list and prefixes foreign packages with aur/.
The user list is the absolute system state at update time. Packages present are installed, packages absent are removed, and there is no protected core set. The manifest and the hardware detection seed the fresh install only.
Direct pacman use is blocked. /usr/bin/pacman is a wrapper around pacman-real that refuses -S, -R, -U, and -D with an explanation of the declarative path, and allows read-only operations. The engine bypasses the wrapper through PU239_ENGINE=1.
AUR packages use the aur/ prefix. aur-build.sh builds them from source in a systemd-nspawn container from a git clone of aur.archlinux.org and injects the resulting package into the staging tree. Failures are reported but do not abort the update.
Calamares is the only interface. The ISO boots directly into the installer on tty1 and the user never sees a live terminal.
Sequence.
Properties.
First and foremost: fix any bugs that the community from lemmy.ml/c/linux points out from testing the 0.0.1 release. My testing was thorough but there will always be some bugs left so that will be the first priority. So far I have only personally published/announced the project on lemmy.
The 0.0.X versions are pre-release/in-development versions meant for experienced people interested in this project. They are extensively tested by me, however I can NOT YET guarantee these versions to be stable and viable to daily-drive. I'm very thankful for every person that considers testing them in a VM or on a secondary PC to contribute to the development of this project!
For 0.1.0 to be released: have everything looking clean and working stable, ability to be a daily-driver verified by a small but meaningful amount of users.
For 1.0.0 to be released: to have it stable, verified, tested, liked and recommended by a wide community.
Recently with everyone vibe-coding their stuff, there have been a lot of useless distros (not naming names, you know what I'm talking about), but I really feel like I’m onto something unique and useful. For the last four weeks, from the 25th of August to the the 23rd of September I've been clocking in 8-14 hours daily, roughly 300 in total to build the 0.0.1 version. Yes, this currently is a solo-developer project, but I'm autistic with a special interest in Linux, so I'm not going anywhere.
I hope you can appreciate the time, effort and money put into this and consider supporting a Linux distro that works ethically and aims to provide a unique and useful experience instead of a facist vibe-coding dotfiles for money laundering (again, not naming names).
This is a distro based on Arch Linux with an atomic design inspired by Fedora plus performance optimizations inspired by CachyOS and the ease of use of SteamOS. However it is in no way affiliated with any of the mentioned distros, nor does it try to discredit them.
There has been a conscious effort to make everything as ethical and EU-based as possible. Being from Germany, the website and package repositories are also hosted by the German provider Hetzner who runs on 100% green electricity, the source code lives on the German platform Codeberg and the donation platform Liberapay is developed in France.
This project minimizes and heavily limits the use of generative artificial intelligence. Transformer models for media generation will never be used, no exception. I would rather have an ugly logo that I did myself in GIMP than ask an AI to do it. Large language models have never and will never be used for: coming up with ideas, making decisions, vibe-coding user-facing and critical code, writing documentation like this, interacting with users and so on. No proprietary models running in data-centers destroying the earth are ever used. I exclusively run open-source large language models on local hardware, primarily for finding and diagnosing bugs, just like the Linux kernel project does.
I don't collect, store or sell any information about you or your usage, neither on the website, nor in the OS itself. I don't even know how.