Currently, choosing IMAGE_HDIMG_GPT together with IMAGE_HDIMG_BAREBOX
leads to an error in genimage because the full GPT array is larger than
the hole in the barebox image. However, the hole in the barebox images
is large enough to fit the protective MBR and the primary GPT header.
The rest of the GPT array needs to moved after the barebox image, so set
the gpt-location setting to the size of the barebox image.

For the other bootloaders, nothing needs to change, so set the
gpt-location to its default value of 1024.

For MBR, this config setting is ignored.

Link: https://www.barebox.org/doc/latest/boards/imx.html#using-gpt-on-i-mx
Signed-off-by: Roland Hieber <r...@pengutronix.de>
---
v1 -> v2: just improve the commit message
---
 config/images/barebox_partitions.config | 2 +-
 config/images/hd.config                 | 1 +
 rules/image-hdimg.make                  | 3 +++
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/config/images/barebox_partitions.config 
b/config/images/barebox_partitions.config
index a5c55e69e952..114b461d9099 100644
--- a/config/images/barebox_partitions.config
+++ b/config/images/barebox_partitions.config
@@ -1,6 +1,6 @@
 partition barebox {
        in-partition-table = false
        image = "barebox-image"
-       holes = {"(440; 512)"}
+       holes = {"(440; 1024)"}
        size = 2M
 }
diff --git a/config/images/hd.config b/config/images/hd.config
index d33ddc43490a..0ae3c27b46b7 100644
--- a/config/images/hd.config
+++ b/config/images/hd.config
@@ -5,6 +5,7 @@ image @IMAGE@ {
        hdimage {
                align = 1M
                partition-table-type = "@PARTITION_TABLE_TYPE@"
+               gpt-location = "@GPT_LOCATION@"
        }
        @BOOTLOADER_PARTITIONS@
        partition root {
diff --git a/rules/image-hdimg.make b/rules/image-hdimg.make
index b470c0fb6b1a..02f7f84bfcad 100644
--- a/rules/image-hdimg.make
+++ b/rules/image-hdimg.make
@@ -30,17 +30,20 @@ IMAGE_HDIMG_BOOTLOADER_ENV := \
 
 ifdef PTXCONF_IMAGE_HDIMG_GRUB
 IMAGE_HDIMG_BOOTLOADER_ENV = \
+       GPT_LOCATION='1024' \
        GRUB_STAGE_DIR=$(GRUB_STAGE_DIR) \
        BOOTLOADER_IMAGES='include("grub.config")' \
        BOOTLOADER_PARTITIONS='include("grub_partitions.config")'
 endif
 ifdef PTXCONF_IMAGE_HDIMG_BAREBOX
 IMAGE_HDIMG_BOOTLOADER_ENV := \
+       GPT_LOCATION='2M' \
        BOOTLOADER_IMAGES='' \
        BOOTLOADER_PARTITIONS='include("barebox_partitions.config")'
 endif
 ifdef PTXCONF_IMAGE_HDIMG_VFAT
 IMAGE_HDIMG_BOOTLOADER_ENV := \
+       GPT_LOCATION='1024' \
        BOOTLOADER_IMAGES='' \
        BOOTLOADER_PARTITIONS='include("vfat_partitions.config")'
 
-- 
2.30.2


Reply via email to