TGViewer
Linux - Reddit Linux - Reddit @r_linux · 1.06K subscribers
Post #43164 15
schema-init: a PID 1 written in C that boots Fedora 44 KDE. It imports your systemd units and keeps systemd in GRUB as a fallback (installer ISO)

I'm a plumber by trade. After I became disabled I started dabbling in code, and over the past few months that turned into schema-init, an init system (PID 1) written in C that I build and run on Fedora. To be upfront: I design it, run it on my own machines and break it on real hardware, and Claude fills the enormous gaps in my knowledge and writes much of the code. Every claim below is something I tested on my own hardware.



**Why: I kept running out of memory with only a few browser tabs open, on a machine with 16 GB of RAM. That's what started schema-init. Now, on the same hardware with no RAM upgrade, I can play Cyberpunk 2077 with 15–20 Helium tabs open and Claude running at the same time. Part of that is a smaller base system, and part is that schema-init watches memory pressure and freezes or reclaims background services before the kernel has to start killing things.



**It's not an anti-systemd project.** It reads systemd's own unit files and translates them, and the stock systemd boot entries stay in GRUB. If a schema-init boot ever fails, you pick the systemd entry and you're back on stock Fedora.



v0.4.4 is out, with an installer ISO you can try on a spare machine.



**What it is:** the Fedora 44 Everything netinst plus a kickstart. You get the normal Anaconda GUI. Pick your disk, make your user, install. After install:



\- schema-init boots as PID 1 and brings up a full KDE Plasma Wayland desktop.

\- The services Fedora enables by default (cron, firewalld, smartd, tuned, the systemd timers) are imported at install and run under schema-init.

\- A first-boot wizard offers two optional switches, one reboot each: **schema-udev** (device manager) and **schema-dbus** (a broker for the system and session buses). Each one checks the box afterwards and rolls itself back if it isn't healthy.

\- It's all RPMs from a COPR repo. `dnf upgrade` re-execs PID 1 in place, with every running service adopted and no reboot.

\- When an RPM enables a systemd unit, a `systemctl` shim catches it and translates it to schema-init's service format. That covers timers, `EnvironmentFile=`, `ExecStartPre=`, socket activation, `Condition*` and forking daemons.



**My daily driver** runs it: a Ryzen 5 1600 with a GTX 1050 Ti on NVIDIA Wayland, and 89 logged boots since July. On its latest boot, userspace was up in 8.9 s and the login screen appeared 2.9 s after PID 1 started, with 53 services. PID 1 itself uses about 4 MB of RAM, and at idle it wakes up 0–5 times per 10 seconds.



**Numbers from an HP laptop** (Celeron, 5400 rpm HDD, Intel graphics, Wi-Fi; an older build, 3-boot medians, details in the README):



\- Stock systemd vs schema-init: the desktop drew **4.4 s sooner**, idle RAM was **373 MB lower** (1477 → 1104 MB), and **54 fewer processes** were running.

\- In a separate comparison on the same box, swapping dbus-daemon for schema-dbus took another **6.6 s** off desktop-ready.



It's a slow disk, so take the seconds with salt. The RAM and process counts are the solid part.



**Since the first ISO (v0.4.2):**

\- Installs now get the services systemd would have run. v0.4.2 installs were missing cron, the firewall and the timers.

\- udev runs supervised, so a crash gets respawned instead of leaving devices frozen until reboot.

\- Fixed a udisks crash at boot on machines with a CD/DVD drive.

\- `dnf upgrade` now repairs older installs in place.



Those were tested with fresh VM installs and a live upgrade on the HP laptop. The v0.4.2 ISO was the one fully installed on that laptop.



**EXPERIMENTAL.** Put it on a machine you can reinstall. Bug reports and "this broke on my hardware" are the most useful thing you can give me.



\- Release + ISO: https://github.com/ajax80/schema-init/releases/tag/v0.4.4

\- Source (AGPL-3.0):
GitHub Release v0.4.4 · ajax80/schema-init Upgrades now fix existing installs schema-netinst44-installer-v0.4.4-66a1df8.iso installs Fedora 44 KDE with schema-init as PID 1. It's a netinst, so the machine needs network during install. F...
More from @r_linux
  1. Oct 7, 2026LLM Policies: Progress At All Costs https://diegoe.be/2026/09/25/llm-policies-progress-at-…
  2. Oct 7, 2026Janet on x32: 32-bit Pointers, 64-bit Speed, 25% Less RAM https://alexalejandre.com/progra…
  3. Oct 7, 2026Canonical Reaffirms Plans For Ubuntu 27.04 To Use ntpd-rs By Default https://www.phoronix.…
  4. Oct 7, 2026Another Dozen Vulnerabilities Found In The X.Org Server & XWayland https://www.phoronix.co…
  5. Oct 7, 2026https://github.com/ajax80/schema-init https://redd.it/1wzjuv3 @r_linux
  6. Oct 6, 2026What's a great FLAC audio player for Linux? Looking for a good FLAC player that can ideall…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →