[U-Boot] GPT overlap on i.MX6
Jagan Teki
jagan at amarulasolutions.com
Thu Nov 28 05:15:10 UTC 2019
Hi Lukasz,
On Wed, Nov 27, 2019 at 9:47 PM Lukasz Majewski <lukma at denx.de> wrote:
>
> Hi Jagan,
>
> > Hi Lukasz,
> >
> > On Wed, Nov 27, 2019 at 4:15 PM Lukasz Majewski <lukma at denx.de> wrote:
> > >
> > > Hi Jagan,
> > >
> > > > Hi,
> > > >
> > > > I have created GPT table start from 8MB for kernel, roots etc.
> > > > something like
> > > >
> > > > Part Start LBA End LBA Name
> > > > Attributes
> > > > Type GUID
> > > > Partition GUID
> > > > 1 0x00004000 0x00023fff "boota"
> > > > attrs: 0x0000000000000004
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: c12a7328-f81f-11d2-ba4b-00a0c93ec93b
> > > > 2 0x00024000 0x00043fff "bootb"
> > > > attrs: 0x0000000000000004
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 21686148-6449-6e6f-744e-656564454649
> > > > 3 0x00044000 0x00243fff "rootfsa"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: b921b045-1df0-41c3-af44-4c6f280d3fae
> > > > 4 0x00244000 0x00443fff "rootfsb"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 8da63339-0007-60c0-c436-083ac8230908
> > > > 5 0x00444000 0x0070bfde "data"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 4f72ab70-69be-5948-81ff-4fc3daf24faa
> > > >
> > > > I have not included SPL, U-Boot to the partition list since it
> > > > start from 0x400 in i.MX6. So
> > > > I'm writing SPL separately using fastboot(with offset) or ums.
> > > >
> > > > But by doing this, the partition header seems overlapped so the
> > > > output looks
> > > >
> > > > GUID Partition Table Entry Array CRC is wrong: 0x6a1aba0a !=
> > > > 0x8e4fd548 find_valid_gpt: *** ERROR: Invalid GPT ***
> > > > find_valid_gpt: *** Using Backup GPT ***
> > > > Part Start LBA End LBA Name
> > > > Attributes
> > > > Type GUID
> > > > Partition GUID
> > > > 1 0x00004000 0x00023fff "boota"
> > > > attrs: 0x0000000000000004
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: c12a7328-f81f-11d2-ba4b-00a0c93ec93b
> > > > 2 0x00024000 0x00043fff "bootb"
> > > > attrs: 0x0000000000000004
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 21686148-6449-6e6f-744e-656564454649
> > > > 3 0x00044000 0x00243fff "rootfsa"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: b921b045-1df0-41c3-af44-4c6f280d3fae
> > > > 4 0x00244000 0x00443fff "rootfsb"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 8da63339-0007-60c0-c436-083ac8230908
> > > > 5 0x00444000 0x0070bfde "data"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 4f72ab70-69be-5948-81ff-4fc3daf24faa
> > > >
> > > > So, what I understand is If I create the GPT first and then write
> > > > the SPL, the SPL writing process will destroy the GPT Table and
> > > > if I write SPL first and then create GPT, the GPT creation
> > > > process will destroy the SPL.
> > > >
> > > > Is there any way to fix this? I remember we can prevent this
> > > > overlap by preserving GPT Table som other or boot partition
> > > > instead of having them at the beginning by default.
> > > >
> > > > Any inputs?
> > >
> > > On the diagram of GPT description [1] there is the info that
> > > partitions can start from LBA 34 (0x200 * 34) = 0x4400
> > >
> > > From the above it seems like you starts from 0x4000 your boota
> > > partition, which then overwrites the "Entries 5-128" which shall be
> > > 0 and are protected by CRC written in the Primary GPT Header.
> > >
> > > Please try to adjust your partition scheme to start from 0x4400.
> >
> > I still see the overlap. I have created boota at 0x4400 and the write
> > the SPL at 0x400
> ^^^^^^ - this overwrites the GPT header IMHO.
True, this overlap GPT. and we don't have an option since ROM
expecting the SPL at 0x400.
>
> You may dump the eMMC and check if this is the case (even with u-boot's
> md.l utility)
>
>
> I had similar problem on some Beagle Bone Black (AM33x) board.
>
> The ROM wanted to boot from the fixed eMMC LBA offset which was clashing
> with GPT.
>
> Fortunately, it was also possible to boot from FAT (it was checked
> before the raw offset from eMMC case) partition, so I used this option
> instead.
You mean create FAT partition and copy SPL/U-Boot binaries on the directory?
>
>
> But hey, isn't it possible to store SPL/u-boot to the eMMC's boot (the
> separate HW partition) partition and store GPT to the user accessible
> one (the large one - e.g. 4 GiB)?
Yes, this is what I'm thinking of. But how to preserve the GPT at
another partition or user accessible area than beginning (which is
done by default).
More information about the U-Boot
mailing list