You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(ungrub): replicate GRUB EFI core to all boot-pool members
install_grub installed the core to only the target device's ESP, while
grub-install rebuilt the shared modules under /boot/grub. On a mirror that
left every other member's ESP with a stale core that no longer matched the
rebuilt modules, so those members failed to boot with
"symbol 'grub_memcpy' not found" -- silently destroying boot redundancy.
- install_grub now copies the freshly built core to every other member's ESP
(no-op for a single-device pool).
- new "mkbootable sync <good-device>" op re-distributes the core from a known
good member to all others, to repair members that already drifted (eg a
device added via a bare "zpool attach").
install_efi_core writes safely:
- if the target ESP is already mounted, write through that mount (a raw mtools
write under a live mount can be clobbered by the mount's cache flush);
otherwise write the raw FAT with mtools, no mount needed.
- stage as BOOTX64.EFI.new then rename, so an interrupted write can't leave a
torn core.
The core uses a dynamic ($root) prefix so the same image is valid on every
member. Split into member_esp / install_efi_core / replicate_grub. Both write
paths and the mtools round-trip verified byte-faithful and idempotent.
0 commit comments