From: Michael Olbrich <m.olbrich@pengutronix.de>
To: Roland Hieber <rhi@pengutronix.de>
Cc: distrokit@pengutronix.de
Subject: Re: [DistroKit] [PATCH 6/6] images: convert to GPT format
Date: Wed, 11 Oct 2023 08:58:31 +0200 [thread overview]
Message-ID: <ZSZHl8ENEI/TY4Iq@pengutronix.de> (raw)
In-Reply-To: <20231010191631.31141-6-rhi@pengutronix.de>
On Tue, Oct 10, 2023 at 09:16:31PM +0200, Roland Hieber wrote:
> The GUID Partition Table format has several advantages over the legacy
> MBR format. Especially when we want to make use of systemd-repart
> functionality later, the GPT format is a necessity. Therefore, migrate
> all images to the GPT format.
>
> For some platforms (Raspberry Pi, AM355x, AT91), we still need a legacy
> MBR partition table so that the ROM code can find a bootable partition
> (which contains our barebox image). For those cases, transform the image
> into a hybrid format containing an MBR at offset 0, which contains the
> VFAT boot partition for the ROM loader, and a protective GPT partition
> of partition type 0xEE after it to claim the remaining space on the
> storage medium for GPT porpuses. Then a GPT header is added at the
s/porpuses/purposes/
> default GPT offset of 0x200, which defines the boot partition as well as
> the root partition, and which is read by Barebox and Linux to boot the
> system.
>
> For images that contain a raw barebox image at a fixed offset outside of
> a GPT partition, make sure that the GPT does not conflict with the
> barebox image, and write only the primary GPT header into the hole
> specified by the barebox image (offset 440 to 1K), but move the GPT
> partition array to an offset behind the barebox image. (genimage will
> then also offset the following partitions accordingly.)
>
> Remove any 'disk-signature' options, which are not compatible with GPT;
> genimage will generate a random Disk UUID instead. Also remove any
> partition type options which specify a 0x83 or 'Linux'/'L' partition
> type, which is the default assumed by genimage.
GPT has a special types for rootfs. I think that should be used for the
root partitions.
Michael
> For the rpi1 image-hdimg, overwrite the upstream hd.config with a
> hardcoded genimage config file since it is not possible to build a
> hybrid MBR/GPT image with the image recipe from upstream PTXdist.
>
> For the v7a image-hdimg, enable GPT support in the platformconfig menu,
> and re-add the respective config lines from the upstream version of the
> config file in order to make GPT work.
>
> The images with fixed partition sizes for qemu need to stay below the
> size specified in the 'size' option, so decrease the size of the last
> partition further to make space for the secondary GPT header, which will
> reside in the last block of the image.
>
> Signed-off-by: Roland Hieber <rhi@pengutronix.de>
> ---
> configs/platform-mips/config/images/ar9331.config | 6 ++----
> configs/platform-mips/config/images/malta.config | 6 ++----
> .../platform-mipsel/config/images/malta.config | 6 ++----
> configs/platform-rpi1/config/images/hd.config | 15 +++++++++++++++
> configs/platform-rpi1/platformconfig | 4 ----
> configs/platform-rpi1/platforms/image-hdimg.in | 11 +++++++++++
> configs/platform-v7a/config/images/at91-sd.config | 5 ++---
> .../platform-v7a/config/images/beaglebone.config | 6 ++----
> configs/platform-v7a/config/images/gf.config | 5 ++---
> configs/platform-v7a/config/images/hd.config | 4 ++--
> .../platform-v7a/config/images/riotboard.config | 6 ++----
> configs/platform-v7a/config/images/rpi2.config | 6 ++----
> .../platform-v7a/config/images/sabrelite.config | 5 ++---
> .../platform-v7a/config/images/udoo-neo.config | 5 ++---
> .../platform-v7a/config/images/vexpress.config | 7 ++-----
> configs/platform-v7a/platformconfig | 2 +-
> .../config/images/at91-sd.config | 5 ++---
> .../config/images/vexpress.config | 6 ++----
> .../platform-v8a/config/images/espressobin.config | 3 +--
> configs/platform-v8a/config/images/rock3a.config | 4 +---
> 20 files changed, 57 insertions(+), 60 deletions(-)
> create mode 100644 configs/platform-rpi1/config/images/hd.config
> create mode 100644 configs/platform-rpi1/platforms/image-hdimg.in
>
> diff --git a/configs/platform-mips/config/images/ar9331.config b/configs/platform-mips/config/images/ar9331.config
> index 8012cf0f839d..f3aa28c78e53 100644
> --- a/configs/platform-mips/config/images/ar9331.config
> +++ b/configs/platform-mips/config/images/ar9331.config
> @@ -3,17 +3,15 @@ image @IMAGE@ {
> size = 1G
> hdimage {
> align = 1M
> - disk-signature = 0x74823abf
> fill = true
> + partition-table-type = gpt
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> size = 512M
> }
> partition data {
> - partition-type = 0x83
> - size = 511M
> + size = 510M
> }
> }
>
> diff --git a/configs/platform-mips/config/images/malta.config b/configs/platform-mips/config/images/malta.config
> index 8012cf0f839d..f3aa28c78e53 100644
> --- a/configs/platform-mips/config/images/malta.config
> +++ b/configs/platform-mips/config/images/malta.config
> @@ -3,17 +3,15 @@ image @IMAGE@ {
> size = 1G
> hdimage {
> align = 1M
> - disk-signature = 0x74823abf
> fill = true
> + partition-table-type = gpt
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> size = 512M
> }
> partition data {
> - partition-type = 0x83
> - size = 511M
> + size = 510M
> }
> }
>
> diff --git a/configs/platform-mipsel/config/images/malta.config b/configs/platform-mipsel/config/images/malta.config
> index 8012cf0f839d..f3aa28c78e53 100644
> --- a/configs/platform-mipsel/config/images/malta.config
> +++ b/configs/platform-mipsel/config/images/malta.config
> @@ -3,17 +3,15 @@ image @IMAGE@ {
> size = 1G
> hdimage {
> align = 1M
> - disk-signature = 0x74823abf
> fill = true
> + partition-table-type = gpt
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> size = 512M
> }
> partition data {
> - partition-type = 0x83
> - size = 511M
> + size = 510M
> }
> }
>
> diff --git a/configs/platform-rpi1/config/images/hd.config b/configs/platform-rpi1/config/images/hd.config
> new file mode 100644
> index 000000000000..b67369d2c0c7
> --- /dev/null
> +++ b/configs/platform-rpi1/config/images/hd.config
> @@ -0,0 +1,15 @@
> +image @IMAGE@ {
> + hdimage {
> + align = 1M
> + partition-table-type = hybrid
> + }
> + partition boot-vfat {
> + image = boot.vfat
> + partition-type-uuid = F
> + partition-type = 0xc
> + bootable = true
> + }
> + partition root {
> + image = root.ext2
> + }
> +}
> diff --git a/configs/platform-rpi1/platformconfig b/configs/platform-rpi1/platformconfig
> index 67e5f161cd78..8fd1b1983015 100644
> --- a/configs/platform-rpi1/platformconfig
> +++ b/configs/platform-rpi1/platformconfig
> @@ -230,10 +230,6 @@ PTXCONF_IMAGE_BOOT_VFAT=y
> PTXCONF_IMAGE_BOOT_VFAT_GPU_MEM=16
> # PTXCONF_IMAGE_HD_VDI is not set
> PTXCONF_IMAGE_HDIMG=y
> -# PTXCONF_IMAGE_HDIMG_GPT is not set
> -# PTXCONF_IMAGE_HDIMG_NONE is not set
> -# PTXCONF_IMAGE_HDIMG_BAREBOX is not set
> -PTXCONF_IMAGE_HDIMG_VFAT=y
> PTXCONF_IMAGE_KERNEL=y
>
> #
> diff --git a/configs/platform-rpi1/platforms/image-hdimg.in b/configs/platform-rpi1/platforms/image-hdimg.in
> new file mode 100644
> index 000000000000..052e7e71df38
> --- /dev/null
> +++ b/configs/platform-rpi1/platforms/image-hdimg.in
> @@ -0,0 +1,11 @@
> +## SECTION=image
> +
> +config IMAGE_HDIMG
> + bool
> + select HOST_GENIMAGE
> + select IMAGE_BOOT_VFAT
> + select IMAGE_ROOT_EXT
> + prompt "Generate images/hd.img"
> + help
> + Build a harddisk root image. The image will contain one partition
> + containing the root.ext2 and a corresponding partition table.
> diff --git a/configs/platform-v7a/config/images/at91-sd.config b/configs/platform-v7a/config/images/at91-sd.config
> index 641db071224f..e1522462815c 100644
> --- a/configs/platform-v7a/config/images/at91-sd.config
> +++ b/configs/platform-v7a/config/images/at91-sd.config
> @@ -9,19 +9,18 @@ image @IMAGE@-boot.vfat {
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0x67823abf
> + partition-table-type = hybrid
> }
> partition boot {
> image = @IMAGE@-boot.vfat
> partition-type = 0xc
> + partition-type-uuid = F
> bootable = true
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a/config/images/beaglebone.config b/configs/platform-v7a/config/images/beaglebone.config
> index 07d251bfbe69..135a49b3908b 100644
> --- a/configs/platform-v7a/config/images/beaglebone.config
> +++ b/configs/platform-v7a/config/images/beaglebone.config
> @@ -9,23 +9,21 @@ image beaglebone-boot.vfat {
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0xabe26147
> + partition-table-type = hybrid
> }
> partition boot {
> image = beaglebone-boot.vfat
> partition-type = 0xc
> + partition-type-uuid = F
> bootable = true
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
> partition root-B {
> image = root.ext2
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a/config/images/gf.config b/configs/platform-v7a/config/images/gf.config
> index fbaddf15f527..ed6fd3ba2bbb 100644
> --- a/configs/platform-v7a/config/images/gf.config
> +++ b/configs/platform-v7a/config/images/gf.config
> @@ -9,19 +9,18 @@ image gf-boot.vfat {
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0x74823abf
> + partition-table-type = hybrid
> }
> partition boot {
> image = gf-boot.vfat
> partition-type = 0xc
> + partition-type-uuid = F
> bootable = true
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a/config/images/hd.config b/configs/platform-v7a/config/images/hd.config
> index 03cf37a0dbcf..d33ddc43490a 100644
> --- a/configs/platform-v7a/config/images/hd.config
> +++ b/configs/platform-v7a/config/images/hd.config
> @@ -4,11 +4,11 @@
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0xdfb978e3
> + partition-table-type = "@PARTITION_TABLE_TYPE@"
> }
> @BOOTLOADER_PARTITIONS@
> partition root {
> image = root.ext2
> - partition-type = 0x83
> + partition-type@PARTITION_TYPE_SUFFIX@ = @ROOT_PARTITION_TYPE@
> }
> }
> diff --git a/configs/platform-v7a/config/images/riotboard.config b/configs/platform-v7a/config/images/riotboard.config
> index f311fd5e41b0..f10858cbb0bd 100644
> --- a/configs/platform-v7a/config/images/riotboard.config
> +++ b/configs/platform-v7a/config/images/riotboard.config
> @@ -1,7 +1,8 @@
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0x67bac764
> + partition-table-type = gpt
> + gpt-location = 2M
> }
>
> partition barebox {
> @@ -13,16 +14,13 @@ image @IMAGE@ {
>
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
>
> partition root-B {
> image = root.ext2
> - partition-type = 0x83
> }
>
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a/config/images/rpi2.config b/configs/platform-v7a/config/images/rpi2.config
> index eebf7052713f..78b46b92ffa5 100644
> --- a/configs/platform-v7a/config/images/rpi2.config
> +++ b/configs/platform-v7a/config/images/rpi2.config
> @@ -10,24 +10,22 @@ image rpi2-boot.vfat {
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0xbedf7893
> + partition-table-type = hybrid
> }
> partition boot {
> offset = 4M
> image = rpi2-boot.vfat
> partition-type = 0xc
> + partition-type-uuid = F
> bootable = true
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
> partition root-B {
> image = root.ext2
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a/config/images/sabrelite.config b/configs/platform-v7a/config/images/sabrelite.config
> index 29e6b5f5a44a..b362534c4346 100644
> --- a/configs/platform-v7a/config/images/sabrelite.config
> +++ b/configs/platform-v7a/config/images/sabrelite.config
> @@ -1,7 +1,8 @@
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0x67bac764
> + partition-table-type = gpt
> + gpt-location = 2M
> }
>
> partition barebox {
> @@ -13,10 +14,8 @@ image @IMAGE@ {
>
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a/config/images/udoo-neo.config b/configs/platform-v7a/config/images/udoo-neo.config
> index da677757804d..0dbed62e9441 100644
> --- a/configs/platform-v7a/config/images/udoo-neo.config
> +++ b/configs/platform-v7a/config/images/udoo-neo.config
> @@ -1,7 +1,8 @@
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0x374ac764
> + partition-table-type = gpt
> + gpt-location = 2M
> }
>
> partition barebox {
> @@ -13,10 +14,8 @@ image @IMAGE@ {
>
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a/config/images/vexpress.config b/configs/platform-v7a/config/images/vexpress.config
> index ba677fc3c946..41424f79724c 100644
> --- a/configs/platform-v7a/config/images/vexpress.config
> +++ b/configs/platform-v7a/config/images/vexpress.config
> @@ -3,22 +3,19 @@ image @IMAGE@ {
> size = 256M
> hdimage {
> align = 1M
> - disk-signature = 0x74823abf
> fill = true
> + partition-table-type = gpt
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> size = 96M
> }
> partition root-B {
> image = root.ext2
> - partition-type = 0x83
> size = 96M
> }
> partition data {
> - partition-type = 0x83
> - size = 63M
> + size = 62M
> }
> }
>
> diff --git a/configs/platform-v7a/platformconfig b/configs/platform-v7a/platformconfig
> index 1e83fb3620cd..63e98e7ff4af 100644
> --- a/configs/platform-v7a/platformconfig
> +++ b/configs/platform-v7a/platformconfig
> @@ -242,7 +242,7 @@ PTXCONF_IMAGE_BEAGLEBONE=y
> PTXCONF_IMAGE_GF=y
> # PTXCONF_IMAGE_HD_VDI is not set
> PTXCONF_IMAGE_HDIMG=y
> -# PTXCONF_IMAGE_HDIMG_GPT is not set
> +PTXCONF_IMAGE_HDIMG_GPT=y
> PTXCONF_IMAGE_HDIMG_NONE=y
> # PTXCONF_IMAGE_HDIMG_BAREBOX is not set
> # PTXCONF_IMAGE_HDIMG_VFAT is not set
> diff --git a/configs/platform-v7a_noneon/config/images/at91-sd.config b/configs/platform-v7a_noneon/config/images/at91-sd.config
> index caecd247065a..e8a4592b5c05 100644
> --- a/configs/platform-v7a_noneon/config/images/at91-sd.config
> +++ b/configs/platform-v7a_noneon/config/images/at91-sd.config
> @@ -9,19 +9,18 @@ image @IMAGE@-boot.vfat {
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0x67823abf
> + partition-table-type = hybrid
> }
> partition boot {
> image = @IMAGE@-boot.vfat
> partition-type = 0xc
> + partition-type-uuid = F
> bootable = true
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v7a_noneon/config/images/vexpress.config b/configs/platform-v7a_noneon/config/images/vexpress.config
> index 5291cb31e385..bd82e3b8a4f6 100644
> --- a/configs/platform-v7a_noneon/config/images/vexpress.config
> +++ b/configs/platform-v7a_noneon/config/images/vexpress.config
> @@ -3,17 +3,15 @@ image @IMAGE@ {
> size = 256M
> hdimage {
> align = 1M
> - disk-signature = 0x74823abf
> fill = true
> + partition-table-type = gpt
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> size = 192M
> }
> partition data {
> - partition-type = 0x83
> - size = 63M
> + size = 62M
> }
> }
>
> diff --git a/configs/platform-v8a/config/images/espressobin.config b/configs/platform-v8a/config/images/espressobin.config
> index c4ab201691a9..ec6fac6b19ec 100644
> --- a/configs/platform-v8a/config/images/espressobin.config
> +++ b/configs/platform-v8a/config/images/espressobin.config
> @@ -1,14 +1,13 @@
> image @IMAGE@ {
> hdimage {
> align = 1M
> + partition-table-type = gpt
> }
> partition root-A {
> image = root.ext2
> - partition-type = 0x83
> size = 512M
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> diff --git a/configs/platform-v8a/config/images/rock3a.config b/configs/platform-v8a/config/images/rock3a.config
> index 522d82cdc9c9..c3edc9617c86 100644
> --- a/configs/platform-v8a/config/images/rock3a.config
> +++ b/configs/platform-v8a/config/images/rock3a.config
> @@ -1,7 +1,7 @@
> image @IMAGE@ {
> hdimage {
> align = 1M
> - disk-signature = 0xf5feaddc
> + partition-table-type = gpt
> }
> partition boot1 {
> offset = 32k
> @@ -24,10 +24,8 @@ image @IMAGE@ {
> partition root-A {
> offset = 5M
> image = "root.ext2"
> - partition-type = 0x83
> }
> partition data {
> - partition-type = 0x83
> size = 512M
> }
> }
> --
> 2.39.2
>
>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2023-10-11 6:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-10 19:16 [DistroKit] [PATCH 1/6] v7a: image-stm32mp: use 'partition-table-type' option instead of 'gpt' Roland Hieber
2023-10-10 19:16 ` [DistroKit] [PATCH 2/6] v7a: images: use 'partition-table-type' option instead of 'partition-table' Roland Hieber
2023-10-10 19:16 ` [DistroKit] [PATCH 3/6] v7a: barebox: pass root=mmcblkXpN instead of root=PARTUUID=… to kernel Roland Hieber
2023-10-10 19:16 ` [DistroKit] [PATCH 4/6] v7a: barebox: enable GUID Partition Table support Roland Hieber
2023-10-10 19:16 ` [DistroKit] [PATCH 5/6] images: remove qemu size hack Roland Hieber
2023-10-11 6:51 ` Michael Olbrich
2023-10-11 9:40 ` Roland Hieber
2023-10-11 9:45 ` Roland Hieber
2023-10-11 10:03 ` Roland Hieber
2023-10-10 19:16 ` [DistroKit] [PATCH 6/6] images: convert to GPT format Roland Hieber
2023-10-11 6:58 ` Michael Olbrich [this message]
2023-10-11 9:34 ` Roland Hieber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZSZHl8ENEI/TY4Iq@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=distrokit@pengutronix.de \
--cc=rhi@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox