On Wednesday, June 27, 2012 8:45:45 am Andrey V. Elsukov wrote: > On 27.06.2012 16:07, John Baldwin wrote: > >> • Check the Signature > >> • Check the Header CRC > >> • Check that the MyLBA entry points to the LBA that contains the GUID > >> Partition Table > >> • Check the CRC of the GUID Partition Entry Array > >> If the GPT is the primary table, stored at LBA 1: > >> • Check the AlternateLBA to see if it is a valid GPT > >> If the primary GPT is corrupt, software must check the last LBA of the > >> device to see if it has a > >> valid GPT Header and point to a valid GPT Partition Entry Array." > > > > Right, we break the last rule. If you want to use a partition editor > > that doesn't grok gmirror (because you are using another OS's editor), > > to repair a GPT, it will do the wrong thing. > > When we are in the FreeBSD, our loader can detect that device size > is lower than it see and it will work. When primary header is OK, then > other OSes should work with this GPT. When it isn't OK, you just can't > load other OS :)
Ah, yes. The solution to violating standards is to make sure you never use standards-compliant software. That's a great argument. :) (Although not entirely uncommon. Standards aren't always perfect, but if we had a way to not gratuitously violate them it would be nice to avoid doing so.) > > We can't write bootcode with gpart? What do you think the 'bootcode' > > command > > does? > > `gpart bootcode -b` reads file, creates ioctl request and sends this data to > the GEOM_PART class. GEOM_PART receives the control request, checks the data > and writes it to the provider. > `gpart bootcode -p` works like dd(1) and writes bootcode to the given > partition. > gpart(8) haven't any knowledge about specific partitioning scheme. Correct, but in both cases it writes "bootcode". > > Also, there is no reason we can't have a 'recover' command that attempts to > > recover a corrupted table including repairing the PMBR. gpart(8) already > > generates a full PMBR when you use 'gpart create' to create a GPT even > > though > > there isn't a GPT object yet. > > `gpart create` creates only ioctl control request to the GEOM_PART class. > GEOM_PART class creates new GPT geom object and this objects writes PMBR and > its > metadata to the provider. You can't add a new ioctl? -- John Baldwin _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"