Skip to content

feat(installer): adopt Flatcar's EFI-SYSTEM/USR-A/USR-B/ROOT partition layout - #147

Open
kylerankin wants to merge 5 commits into
projectbluefin:mainfrom
kylerankin:feat/flatcar-repart-layout
Open

kylerankin wants to merge 5 commits into
projectbluefin:mainfrom
kylerankin:feat/flatcar-repart-layout

Conversation

@kylerankin

Copy link
Copy Markdown
Contributor

Summary

Adopts Flatcar's GPT partition layout for the installer's target disk, per
issue #134 (design: phase 3 of the Flatcar base migration). Replaces the
old 10-esp.conf / 20-root-a.conf / 30-var.conf drop-ins with five
that use upstream type GUIDs verbatim:

PARTLABEL Type GUID Source
EFI-SYSTEM ESP / vfat bootctl install + the OS UKI
USR-A 5dfbf5f4-… CopyBlocks= the /usr DDI (read-only)
USR-B 5dfbf5f4-… empty A/B rollback slot
OEM 0fc63daf-… Format=ext4, filesystem label OEM
ROOT 3884dd41-… Format=, GrowFileSystem=yes

BIOS-BOOT stays dropped (UEFI-only, hard rule 5). OEM-CONFIG stays
dropped (nothing in the boot path references it). OEM is kept — the boot
proof showed stage 2 waits on dev-disk-by-label-OEM.device, so a disk
without it stalls to an emergency shell.

Verity stays off in this ticket: stage 1 already guards the
veritysetup block behind [ "${usrhash}" != "" ], so this layout-only
change is a bootable intermediate state. Verity lands in the /usr DDI
ticket.

Changes

  • files/installer/repart.d/: rewrite the drop-ins to the new layout.
  • tests/unit/test_repart_layout.py: rewritten for the new layout — pins
    the four upstream type GUIDs verbatim, asserts USR-B is provisioned and
    empty, OEM is labelled ext4, and ROOT grows. The sysupdate
    label-match moves to an xfail since wiring 50-root.transfer to
    USR-A/USR-B is a follow-on.
  • Element/docs consistency: DDI + installer element comments, the fallback
    bootloader partition label (bluefin-server-root-aROOT),
    installer-repart.bst layout comment, and the docs/skills target-layout
    tables.

Verification

  • python3 -m pytest tests/unit/test_repart_layout.py: 24 passed, 1 xfailed.
  • Full unit suite: 216 passed, 1 xfailed.
  • check-release-version and check-k0s-version: OK.
  • just validate's bst show steps need buildstream/network and were not
    runnable in this environment; the graph is unchanged in shape.

— hive: backend=pi model=lemonade/Ornith-1.5-35B-A3B-GGUF-Q6_K


🐝 Hive Agent: contributor | SHA: dd744dd

kylerankin and others added 5 commits September 14, 2026 08:54
Replace the installer's target-disk repart.d drop-ins (10-esp.conf,
20-root-a.conf, 30-var.conf) with Flatcar's GPT layout, adopting the
upstream type GUIDs verbatim (projectbluefin#134):

  EFI-SYSTEM  ESP/vfat            bootctl install + the OS UKI
  USR-A       5dfbf5f4-...        CopyBlocks= the /usr DDI (read-only)
  USR-B       5dfbf5f4-...        empty A/B rollback slot
  OEM         0fc63daf-...        ext4, filesystem label OEM (stage-2 boot dep)
  ROOT        3884dd41-...        writable state, grows to fill the disk

BIOS-BOOT stays dropped (UEFI-only, hard rule 5); OEM-CONFIG stays dropped
(nothing in the boot path references it). Verity stays off: stage 1 guards
the veritysetup block behind [ "${usrhash}" != "" ], so this layout-only
change is a bootable intermediate state and verity lands in the /usr DDI
ticket.

The installer media still stamps bluefin-installer-data, so USR-A's
CopyBlocks= source is unchanged. Update the DDI and installer element docs,
the fallback bootloader label (bluefin-server-root-a -> ROOT), and the
docs/skills target-layout tables.

tests/unit/test_repart_layout.py is rewritten for the new layout: it pins
the four upstream type GUIDs verbatim, asserts USR-B is provisioned and
empty, OEM is labelled ext4, and ROOT grows; the sysupdate label-match is
moved to an xfail since wiring 50-root.transfer to USR-A/USR-B is a
follow-on ticket.

Signed-off-by: kylerankin <kylerankin@users.noreply.github.com>
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.

2 participants