Skip to content

Add systemd hooks support to ISO installer (companion to omarchy#3014)#60

Draft
d-cas wants to merge 3 commits intoomacom-io:mainfrom
d-cas:systemd-hooks
Draft

Add systemd hooks support to ISO installer (companion to omarchy#3014)#60
d-cas wants to merge 3 commits intoomacom-io:mainfrom
d-cas:systemd-hooks

Conversation

@d-cas
Copy link
Copy Markdown

@d-cas d-cas commented Nov 4, 2025

Summary

Updates the ISO installer to be compatible with the systemd-based initramfs hooks proposed in basecamp/omarchy#3014.


Problem

archinstall (used by the Omarchy ISO) generates BusyBox-style kernel cmdline parameters (cryptdevice=PARTUUID=...), but systemd hooks require systemd-style parameters (rd.luks.name=...).
Without this fix, new installations using systemd hooks would fail to boot.


Changes

  • Adds fix_kernel_cmdline_for_systemd() function to .automated_script.sh
  • Automatically converts kernel cmdline syntax post-install
  • Converts cryptdevice=PARTUUID=<uuid>:rootrd.luks.name=<uuid>=root
  • Configures ISO builder to pull from testing branch for integration testing

Context

This PR is a companion to basecamp/omarchy#3014, which proposes migrating to systemd-based initramfs hooks to enable:

  • FIDO2 multi-token authentication (addresses basecamp/omarchy#2326)
  • TPM2 automatic disk unlocking for Framework laptops
  • Better boot diagnostics

As discussed in basecamp/omarchy#3014, whether this migration makes sense for Omarchy depends on whether the benefits (TPM2/FIDO2 support) outweigh the migration complexity for the existing user base.

This PR simply ensures that if the systemd hooks migration is accepted, new ISO installations will work correctly.


Testing

  • ✅ Full installation tested in QEMU
  • ✅ System boots successfully with systemd hooks
  • ✅ Kernel cmdline verified: rd.luks.name=<uuid>=root
  • ✅ Hooks verified: sd-encrypt, sd-vconsole, sd-btrfs-overlayfs

Status

DRAFT. Companion to experimental basecamp/omarchy#3014


Notes

bin/omarchy-iso-make currently points to the testing branch for integration testing.
If merged, this should be updated to pull from basecamp/omarchy:dev.

d-cas added 2 commits November 3, 2025 19:41
  After archinstall completes, convert the kernel cmdline from busybox
  syntax (cryptdevice=PARTUUID=...:root) to systemd syntax
  (rd.luks.name=<uuid>=root) to match the systemd hooks installed by
  the omarchy repo's fix/modernize-initramfs-hooks branch.

  The fix_kernel_cmdline_for_systemd() function:
  - Detects LUKS encrypted installations
  - Extracts PARTUUID from Limine config
  - Gets LUKS UUID from the device
  - Replaces kernel cmdline syntax
  - Creates backup of original config

  This fixes boot hangs where systemd's sd-encrypt hook can't unlock
  the root device due to incompatible cmdline syntax.
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