From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 11 Oct 2023 11:34:09 +0200 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qqVbW-004Ial-9n for lore@lore.pengutronix.de; Wed, 11 Oct 2023 11:34:09 +0200 Received: from localhost ([127.0.0.1] helo=metis.whiteo.stw.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1qqVbV-0003Kg-3L; Wed, 11 Oct 2023 11:34:09 +0200 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qqVbQ-0003KV-LP for distrokit@pengutronix.de; Wed, 11 Oct 2023 11:34:04 +0200 Received: from [2a0a:edc0:2:b01:1d::c5] (helo=pty.whiteo.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qqVbQ-000s41-8x for distrokit@pengutronix.de; Wed, 11 Oct 2023 11:34:04 +0200 Received: from rhi by pty.whiteo.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1qqVbP-006Phi-W2 for distrokit@pengutronix.de; Wed, 11 Oct 2023 11:34:04 +0200 Date: Wed, 11 Oct 2023 11:34:03 +0200 From: Roland Hieber To: distrokit@pengutronix.de Message-ID: <20231011093403.wc4xkz6ocdxbuyzp@pengutronix.de> References: <20231010191631.31141-1-rhi@pengutronix.de> <20231010191631.31141-6-rhi@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Subject: Re: [DistroKit] [PATCH 6/6] images: convert to GPT format X-BeenThere: distrokit@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: DistroKit Mailinglist List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "DistroKit" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: distrokit-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false On Wed, Oct 11, 2023 at 08:58:31AM +0200, Michael Olbrich wrote: > 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. Yes, but until yesterday [1], there wasn't a GUID for big-endian MIPS, so I opted for the default 'linux-generic' instead. Will update this in v2. [1]: https://github.com/uapi-group/specifications/pull/86 - Roland > > 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 > > --- > > 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 | > -- Roland Hieber, Pengutronix e.K. | r.hieber@pengutronix.de | Steuerwalder Str. 21 | https://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |