ZFS Install boot disk GPT check is broken for UEFI
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
curtin |
New
|
Undecided
|
Unassigned |
Bug Description
When performing a ZFS-based installation, curtin checks to see if the boot disk has a GPT-based partition table. On UEFI platforms, where the "grub_device" storage setting is set on the partition and not the disk, this check fails erroneously causing the installation to fail with a message such as:
ValueError: zfsroot requires bootdisk with GPT partition table found "None" on disk id="uefi_boot_part"
zfsroot requires bootdisk with GPT partition table found "None" on disk id="uefi_boot_part"
The offending code snippet appears to be commands/
# validate that the boot disk is GPT partitioned
bootdevs = [d for i, d in storage_
bootdev = bootdevs[0]
if bootdev.
raise ValueError(
' found "%s" on disk id="%s"' %
A correct implementation ought to check if the entry is a partition and, in that case, check the 'ptable' entry of the named disk (and not the partition entry of course).
For others encountering this issue, as a work-around you can add "grub_device: true" to your disk definition in addition to the relevant partition. On UEFI systems, the GRUB installation process silently ignores the disk-level flag making this workaround fairly harmless.