diff --git a/ironic_python_agent/extensions/image.py b/ironic_python_agent/extensions/image.py index fa1e8b692..ab5721386 100644 --- a/ironic_python_agent/extensions/image.py +++ b/ironic_python_agent/extensions/image.py @@ -360,12 +360,12 @@ def _prepare_boot_partitions_for_softraid(device, holders, efi_part, :param device: the softraid device path :param holders: the softraid drive members :param efi_part: when relevant the efi partition coming from the image - deployed on softraid device, can be/is often None + deployed on softraid device, can be/is often None :param target_boot_mode: target boot mode can be bios/uefi/None - or anything else for unspecified + or anything else for unspecified :returns: the efi partition paths on softraid disk holders when target - boot mode is uefi, empty list otherwise. + boot mode is uefi, empty list otherwise. """ efi_partitions = [] @@ -387,6 +387,7 @@ def _prepare_boot_partitions_for_softraid(device, holders, efi_part, if efi_part: efi_part = '{}p{}'.format(device, efi_part) + LOG.info("Creating EFI partitions on software RAID holder disks") # We know that we kept this space when configuring raid,see # hardware.GenericHardwareManager.create_configuration. # We could also directly get the EFI partition size. @@ -414,11 +415,11 @@ def _prepare_boot_partitions_for_softraid(device, holders, efi_part, target_part = target_part.splitlines()[-1].split(':', 1)[0] - LOG.debug("Efi partition %s created on disk holder %s", + LOG.debug("EFI partition %s created on holder disk %s", target_part, holder) if efi_part: - LOG.debug("Relocating efi %s to holder part %s", efi_part, + LOG.debug("Relocating EFI %s to holder part %s", efi_part, target_part) # Blockdev copy utils.execute("cp", efi_part, target_part) @@ -710,6 +711,7 @@ class ImageExtension(base.BaseAgentExtension): device = hardware.dispatch_to_managers('get_os_install_device') iscsi.clean_up(device) boot = hardware.dispatch_to_managers('get_boot_info') + # FIXME(arne_wiebalck): make software RAID work with efibootmgr if (boot.current_boot_mode == 'uefi' and not hardware.is_md_device(device)): has_efibootmgr = True diff --git a/ironic_python_agent/hardware.py b/ironic_python_agent/hardware.py index e6bc494f1..86de2cf9e 100644 --- a/ironic_python_agent/hardware.py +++ b/ironic_python_agent/hardware.py @@ -1570,10 +1570,11 @@ class GenericHardwareManager(HardwareManager): # 1. Create boot partitions in prevision # 2. Just leave space # 3. Do nothing: rely on the caller to specify target_raid_config - # correctly according to what they intend to do (eg not set MAX if - # they know they will need some space for bios boot or efi parts. - # (Best option imo, if we accept that the target volume granularity - # is GiB, so you lose up to 1GiB just for a bios boot partition...) + # correctly according to what they intend to do (e.g. not set MAX + # if they know they will need some space for bios boot or efi + # parts). Best option imo, if we accept that the target volume + # granularity is GiB, so you lose up to 1GiB just for a bios boot + # partition... if target_boot_mode == 'uefi': # Leave 129MiB - start_sector s for the esp (approx 128MiB) # NOTE: any image efi partition is expected to be less diff --git a/releasenotes/notes/softraid-bootable-with-uefi-aa22e6cbaf1ea747.yaml b/releasenotes/notes/softraid-bootable-with-uefi-aa22e6cbaf1ea747.yaml index 593a1ebd2..da4a11685 100644 --- a/releasenotes/notes/softraid-bootable-with-uefi-aa22e6cbaf1ea747.yaml +++ b/releasenotes/notes/softraid-bootable-with-uefi-aa22e6cbaf1ea747.yaml @@ -1,12 +1,12 @@ --- features: - | - - Adds UEFI boot support for Software RAID, and for partition table + - | + Adds UEFI boot support for Software RAID, and for partition table creation based upon boot mode in use. upgrade: - | - - The type of the partition table created for Software RAID is now based + - | + The type of the partition table created for Software RAID is now based upon the boot mode in use (GPT for UEFI or if explicitly passed via the instance's capabilities or the node's properties, otherwise MSDOS). - - The amount of reserved space on the drives now also depends on the boot + The amount of reserved space on the drives now also depends on the boot mode (128MiB for UEFI/GPT, 8MiB for BIOS/GPT, and one sector otherwise). \ No newline at end of file