From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 11 Oct 2023 08:58:35 +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 1qqTAx-00478e-Fk for lore@lore.pengutronix.de; Wed, 11 Oct 2023 08:58:35 +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 1qqTAw-0006sc-Av; Wed, 11 Oct 2023 08:58:34 +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 1qqTAu-0006rz-BK; Wed, 11 Oct 2023 08:58:32 +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 1qqTAt-000pwq-VJ; Wed, 11 Oct 2023 08:58:31 +0200 Received: from mol by pty.whiteo.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1qqTAt-006Mi8-M3; Wed, 11 Oct 2023 08:58:31 +0200 Date: Wed, 11 Oct 2023 08:58:31 +0200 From: Michael Olbrich To: Roland Hieber Message-ID: Mail-Followup-To: Roland Hieber , distrokit@pengutronix.de References: <20231010191631.31141-1-rhi@pengutronix.de> <20231010191631.31141-6-rhi@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231010191631.31141-6-rhi@pengutronix.de> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-Accept-Language: de,en X-Accept-Content-Type: text/plain 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: , Cc: distrokit@pengutronix.de 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 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 > --- > 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 |