The Weekend Sprint
November 16-17 was a pivotal weekend for Argo OS (my custom Gentoo distribution). Moved from a “barely booting” prototype to a snapshot-protected, version-controlled system with a clear path to binary distribution.
Also, I broke SDDM. Badly.
The Crash Loop (SDDM + Nvidia)
I ran etc-update -3. Mistake #1.
This automatically merged configuration files, including PAM configs. Suddenly, my display manager (SDDM) was in a crash loop. Flickering screen. No TTY. The only way out was Alt+SysRq+R-E-I-S-U-B.
The Autopsy
PAM Broken: pam_loginuid.so was missing from session required.
Nvidia Missing: I hadn’t set nvidia_drm.modeset=1 in the kernel parameters.
Services Down: elogind wasn’t even enabled.
The Fix
Rebuilt the PAM stack and created a proper Xorg config. But the real MVP was enabling agetty on TTY fallbacks so I could actually log in when the GUI died.
ln -s /etc/init.d/agetty /etc/init.d/agetty.tty1
rc-update add agetty.tty1 default
Always have a fallback TTY.
The openSUSE-style @ Subvolumes
I love how openSUSE handles Btrfs. It uses @ for root and @home for data. This makes snapshotting the entire system trivial.
I decided to migrate my running Gentoo install to this structure live.
- Created
@subvolume - Moved everything (
/bin,/etc,/usr…) into@ - Updated
/etc/fstabto mountsubvol=@as/ - Updated GRUB to look for the kernel inside
/@/boot/
It felt like heart surgery. But it worked.
Snapper: The Time Machine
With the @ structure in place, I installed snapper.
Since Snapper expects systemd (and Argo OS runs OpenRC), I had to wire up the cron jobs manually.
Now, every hour, and before/after every emerge, the system takes a snapshot. If I break verified boot again?
snapper rollback
reboot
Done.
The Binary Package Infrastructure
Compiling locally is slow. I don’t want my gaming rig compiling @world for hours.
Set up a dedicated build VM that acts as a binary package host. It compiles packages, uploads them to the NAS, and my workstation just downloads pre-built binaries.
# On the workstation - binary only mode
emerge --usepkg --usepkgonly package-name
Compile times go from hours to seconds.
The Result
Ended the weekend with v0.2.1-alpha:
- Stable booting with fallback TTY
- Btrfs snapshots before every package operation
- Binary package distribution working
- Snapper rollback tested and confirmed
If I break it, I can travel back in time.