Skip to content

v0.8.0 — install --probation + rollback + quickstart

Choose a tag to compare

@mjbommar mjbommar released this 08 May 14:05
· 85 commits to master since this release

The headline pipeline is now complete. From a fresh box to a booted custom kernel:

```bash
curl -LsSf https://raw.githubusercontent.com/mjbommar/autokernel/master/install.sh | bash
~/.local/bin/autokernel quickstart # walk-through preflight → ... → apply

(then build + install when you're ready)

```

New verbs

  • `install --probation` — distro-aware kernel package install. Default dry-run; `--execute` runs the plan as root. Uses one-shot grub-reboot so a failed boot falls back to the previous default automatically.
  • `install --commit` — after a successful probation boot, promotes the running kernel to permanent default.
  • `rollback` — undo the most recent install (apt/dnf/pacman remove + bootloader regenerate). Idempotent.
  • `quickstart` — guided walk-through verb. Confirmation prompts before each step; failures explain exactly what to retry.

New infrastructure

  • `bootloader.py` — detects GRUB2 (Debian + Fedora layouts), systemd-boot, rEFInd. v1 supports GRUB2 only.
  • `errors.py` — every error path renders as `✗ summary / why / → fix-with-exact-command`. Distro-aware fix hints (`apt install` on Debian, `dnf install` on Fedora, `pacman -S` on Arch).
  • Preflight extensions for install: bootloader_supported, boot_writable, fallback_kernel_present, grub_tools.

Safety

  • Default everywhere is dry-run. `--execute` opts in.
  • Probation: a failed boot falls back to the previous kernel automatically; user runs `autokernel rollback --execute` to clean up.
  • DKMS gate refuses `auto-*` autonomy (also enforced in build).
  • Load-bearing blocklist enforced at proposal AND apply stages.
  • The TUI never writes to disk; the App layer is a pure mutator.

Tests

426 total, ~4s, fully mocked subprocess so no test ever runs `apt` / `grub-reboot` / etc.

Roadmap

  • systemd watchdog for auto-promotion (currently `--commit` is manual)
  • systemd-boot / rEFInd support for `install`
  • PEP 723 kernel-dev helpers (bisect, patch series, fragment composer)