@@ -1,23 +1,53 @@ 1 1# ParticleOS 2 2 3 ParticleOS is a fully customizable immutable distribution implementing the 4 concepts described in 5 [Fitting Everything Together](https://0pointer.net/blog/fitting-everything-together.html). 6 7 This is my own version/soft fork of ParticleOS. Most important commands are 8 contained in the [`makefile`](makefile). Most imporant are `make build` and 9 `make sysupdate`. 3[ParticleOS](https://github.com/systemd/particleos) is an extremely cool 4meta-distribution from the systemd project. It's my favorite thing in software 5since I discovered IPv6. Concretely, it's a configuration for systemd's 6[`mkosi` tool](https://mkosi.systemd.io/) that you use to build your own 7ParticleOS images. As described in the readme: 8 9> ParticleOS is a fully customizable immutable distribution implementing the 10concepts described in [Fitting Everything 11Together](https://0pointer.net/blog/fitting-everything-together.html). 12 13Among other things, it has the following characteristics: 14 15- OS versions are delivered as immutable `/usr` partitions 16 - A/B partitions for worry-free upgrades and rollbacks 17 - Block-level integrity provided by 18 [dm-verity](https://wiki.archlinux.org/title/Dm-verity) 19 - Authenticity provided by a signature on the dm-verity data, done with 20 your own keys 21- Is easily hacked on, just like traditional mutable OSes 22 - Essentially *is* a traditional OS (one of Arch, Debian, or Fedora), built 23 fully from regular distro packages 24 - Hacking on `/usr` is done at image build-time, rather than during OS 25 runtime 26- Is signed with your own SecureBoot keys 27- LUKS-encrypted root partition with TPM-stored key for automatic unlocking 28- LUKS-encrypted home directory managed by 29 [`systemd-homed`](https://systemd.io/HOME_DIRECTORY/) 30 31This here is my own customized version/soft fork of ParticleOS. It's the Fedora 32variant. 10 33 11 34## Notable files/directories 12 35 13 - [makefile](makefile)—contains most imporant commands. `build` and 36- [makefile](makefile)—contains most important commands. `build` and 14 37 `sysupdate` targets are the main ones. is also responsible for downloading 15 38 miscellaneous unpackaged binaries. 16 - [mkosi.local.conf](mkosi.local.conf)—the linchpin that holds my custom 39- [mkosi.local.conf](mkosi.local.conf)—the linchpin that holds the custom 17 40 configuration together. 18 - [mkosi.profiles/custom](mkosi.profiles/custom)—the custom profile where 19 most of my additions live. 20 - [mkosi.conf](mkosi.profiles/custom/mkosi.conf)—primarily contains the 41- [mkosi.profiles/custom](mkosi.profiles/custom)—the custom `mkosi` profile 42 where most of my customizations live. 43 - [mkosi.conf](mkosi.profiles/custom/mkosi.conf)—contains the 21 44 packages I want installed. 22 45 - [mkosi.extra](mkosi.profiles/custom/mkosi.extra)—additional files that 23 46 get included in the built images. 47 48## Other changes 49 50In addition to the above customizations, there are a number of other small 51tweaks I've made, mostly to get Fedora+KDE Plasma working together. Some of them 52should probably be upstreamed to the ParticleOS project. The overall patchset 53can be seen [here on Gitpatch](https://gitpatch.com/jcgl/particleos/patch/5).