Skip to content

Fix Secure Boot enrollment: distinct ujust recipe enroll-monolith-secure-boot-key#18

Merged
Mondrethos merged 2 commits into
mainfrom
fix-secureboot-ujust-import
Jun 28, 2026
Merged

Fix Secure Boot enrollment: distinct ujust recipe enroll-monolith-secure-boot-key#18
Mondrethos merged 2 commits into
mainfrom
fix-secureboot-ujust-import

Conversation

@Mondrethos

@Mondrethos Mondrethos commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Problem

ujust enroll-secure-boot-key ran the upstream ublue recipe (key akmods-ublue.der, password universalblue) instead of Monolith's (key akmods-monolith.der, password monolith). Since Monolith signs its kernel/modules with the monolith key, the on-screen universalblue prompt enrolls the wrong key and Secure Boot still can't validate the kernel.

Two things were wrong:

  1. The recipe file was named 60-monolith-secureboot.just, which ublue's main justfile never imports — it only does import? "60-custom.just". So our recipe sat on disk doing nothing.
  2. Renaming to 60-custom.just gets it imported, but a recipe named the same as the upstream one still loses: ublue imports 00-default.just (which owns enroll-secure-boot-key) before 60-custom.just, and among sibling imports the first definition wins. Verified against just 1.51:
    • first sibling import wins (not last)
    • the importing file beats files it imports

Fix

  • Put the recipe in 60-custom.just (the file ublue actually imports), and
  • give it a distinct name, enroll-monolith-secure-boot-key, so there's no collision to lose.

Both commands now coexist; the monolith one reliably enrolls the monolith key with password monolith. README updated to reference the new command.

The upstream enroll-secure-boot-key still exists and enrolls the ublue key — harmless (an extra, unused MOK), just not what monolith users want.

…ream

ublue's main justfile only imports a fixed list ending in
'import? 60-custom.just', so 60-monolith-secureboot.just was never sourced
and 'ujust enroll-secure-boot-key' fell through to the upstream recipe
(akmods-ublue.der / password 'universalblue'). Rename to 60-custom.just so
Monolith's recipe (akmods-monolith.der / password 'monolith') loads and
overrides it.
@github-actions

Copy link
Copy Markdown

🧪 Test this PR on a real install

Once the build checks on this PR pass, a signed test image is published for each edition. Pick the one matching your hardware and, from an existing Monolith install (which already has the signing policy), rebase onto it:

monolith-gnome

rpm-ostree rebase ostree-image-signed:docker://ghcr.io/mondrethos/monolith-gnome:pr-18-44
systemctl reboot

monolith-gnome-nvidia

rpm-ostree rebase ostree-image-signed:docker://ghcr.io/mondrethos/monolith-gnome-nvidia:pr-18-44
systemctl reboot

The tags are rebuilt on every new commit here, so rpm-ostree upgrade pulls the latest build. When you're done testing, return to your edition's released image (:latest).

The test tags stop updating once this PR is merged or closed.

The previous rename to 60-custom.just got the file imported, but a recipe
named enroll-secure-boot-key there still loses to 00-default.just: ublue's
root justfile imports 00-default first, and among sibling imports the first
definition wins (verified with just 1.51). So the upstream recipe
(akmods-ublue.der / 'universalblue') would still run.

Give the recipe a distinct name instead so there's no collision. Both
commands now coexist; enroll-monolith-secure-boot-key reliably enrolls the
monolith key with password 'monolith'. Update README to match.
@Mondrethos Mondrethos changed the title Load Secure Boot ujust recipe via 60-custom.just so it overrides upstream Fix Secure Boot enrollment: distinct ujust recipe enroll-monolith-secure-boot-key Jun 28, 2026
@Mondrethos Mondrethos merged commit 21dca1a into main Jun 28, 2026
3 checks passed
@Mondrethos Mondrethos deleted the fix-secureboot-ujust-import branch June 28, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant