From 9c647747fb6487004d7952e419d71aa8e2008bda Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Thu, 14 Nov 2019 17:50:25 +0100 Subject: [PATCH] DIB: Add custom block-device-efi element Upstream block-device-efi DIB element hardcodes the root partition filesystem type to 'ext4', hence ignoring our FS_TYPE env var during image building. Although the image builds successfully, booting the resulting ISO will run into various issues, especially since most of our scripts assume an XFS root partition. To allow overriding the rootfs type, provide our own block-device-efi DIB element, identical to upstream [1] apart from hardcoding mkfs.type for /. Our override will take precedence during image building. $ diff -Naur \ ../diskimage-builder/diskimage_builder/elements/block-device-efi/ ./dib_elements/block-device-efi/ @@ -22,7 +22,6 @@ type: '8300' size: 100% mkfs: - type: ext4 mount: mount_point: / fstab: [1] https://github.com/openstack/diskimage-builder/tree/2.29.1/ \ diskimage_builder/elements/block-device-efi Signed-off-by: Alexandru Avadanii Change-Id: Ic611bfcf00ad38e8a8a7332a64562f615096207a --- dib_elements/block-device-efi/README.rst | 14 +++++++++++ .../block-device-efi/block-device-default.yaml | 29 ++++++++++++++++++++++ dib_elements/block-device-efi/element-provides | 1 + .../environment.d/15-block-device.bash | 10 ++++++++ 4 files changed, 54 insertions(+) create mode 100644 dib_elements/block-device-efi/README.rst create mode 100644 dib_elements/block-device-efi/block-device-default.yaml create mode 100644 dib_elements/block-device-efi/element-provides create mode 100644 dib_elements/block-device-efi/environment.d/15-block-device.bash diff --git a/dib_elements/block-device-efi/README.rst b/dib_elements/block-device-efi/README.rst new file mode 100644 index 0000000..ac730c0 --- /dev/null +++ b/dib_elements/block-device-efi/README.rst @@ -0,0 +1,14 @@ +================ +Block Device EFI +================ + +This provides a block-device configuration for the ``vm`` element to +get a single-partition disk suitable for EFI booting. + +Based on upstream DIB element block-device-efi, the only modification +being the root fs type from hardcoded 'ext4' to relying on FS_TYPE. + +Note on x86 this provides the extra `BIOS boot partition +`__ and a EFI boot +partition for maximum compatability. + diff --git a/dib_elements/block-device-efi/block-device-default.yaml b/dib_elements/block-device-efi/block-device-default.yaml new file mode 100644 index 0000000..1f3c18b --- /dev/null +++ b/dib_elements/block-device-efi/block-device-default.yaml @@ -0,0 +1,29 @@ +- local_loop: + name: image0 + +- partitioning: + base: image0 + label: gpt + partitions: + - name: ESP + type: 'EF00' + size: 550MiB + mkfs: + type: vfat + mount: + mount_point: /boot/efi + fstab: + options: "defaults" + fsck-passno: 1 + - name: BSP + type: 'EF02' + size: 8MiB + - name: root + type: '8300' + size: 100% + mkfs: + mount: + mount_point: / + fstab: + options: "defaults" + fsck-passno: 1 diff --git a/dib_elements/block-device-efi/element-provides b/dib_elements/block-device-efi/element-provides new file mode 100644 index 0000000..c0180a2 --- /dev/null +++ b/dib_elements/block-device-efi/element-provides @@ -0,0 +1 @@ +block-device \ No newline at end of file diff --git a/dib_elements/block-device-efi/environment.d/15-block-device.bash b/dib_elements/block-device-efi/environment.d/15-block-device.bash new file mode 100644 index 0000000..ad8a267 --- /dev/null +++ b/dib_elements/block-device-efi/environment.d/15-block-device.bash @@ -0,0 +1,10 @@ +# +# Arch gate +# + +if [[ "ppc64 ppc64le ppc64el" =~ "$ARCH" ]]; then + echo "block-device-efi is not supported on Power; use block-device-gpt or block-device-mbr" + exit 1 +fi + +export DIB_BLOCK_DEVICE=efi -- 2.16.6