curthooks: support multiple ESP on UEFI bootable systems
On debian systems we generate and set debconf selections values
to tell grub the set of configured devices. Also refactor
setup_grub to extract all UEFI boot partitions and determine
the primary ESP (mounted at /boot/efi). We include all ESPs
in the debconf selection for grub-[multi]-install to use.
The grub-efi/install_devices is a new template value used for
handling multiple ESP partitions for boot resilience.
Curtin will check for the grub-multi-install tool and if
present will invoke that tool to install grub to all ESPs.
- Add block.schema update to allow partitions to set
grub_device: True
- Refactor finding ESPs to prefer partition with grub_device,
ESPs on disks with grub_device and fallback to grubcfg
install_devices if we don't find one in storage config.
block-discover: handle missing multipath 'path' data, use DM_NAME
Probert's multipath data (maps and paths) is not always complete.
In some systems, the paths output may not include the required
mpath friendly name and instead use a serial number. In such
cases we can also check DM_NAME in the multipath device udev data
to extract the multipath_id that we can use to search for a member
device.
lvm-over-multipath: handle lookups of multipath members
Subiquity provides a 'path' value for disks in storage config.
This triggered an edge case where curtin attempted to wipe the
underlying scsi disk *while* multipath is enabled resulting in
an error when attempting to get exclusive access to the disk.
This branch resolves this by checking if a disk or partition
is related to multipath and if so returning the device mapper
disk path.
block-meta: don't filter preserve=true devices, select by wipe
Now that wiping and preserving are independent values we consider
any disk or partition with a wipe setting for clearing holders.
An existing scenario where this matters is reusing a partition
which was previously part of a volume-group.
- Add a simplified vmtest scenario for reusing partition that
was previously part of a volume-group
vmtest: basic use dname to lookup disk with multiple partitions
This handles unstable scsi device names (sdc/sdd) which shuffle around
from time to time; instead look up the assigned name via the dname
value. This should fix vmtest failures on BasicScsi on ppc64le/arm64.