unlikely secondary GPT LBA

Joan Picanyol i Puig lists-freebsd at biaix.org
Tue Jul 27 17:48:12 UTC 2010


[please honour MFT, not subscribed]

Hi,

Trying to setup a 8.1-RELEASE system such that:

1. glabeled discs
2. two of this previous discs are gmirrored
3. this mirror is gparted 

Taking order into account I go like:

#!/bin/sh
glabel label -v escota /dev/da1
gmirror label -v system /dev/label/escota
# create GPT partition table
gpart create -s GPT /dev/mirror/system
# add boot partition, aligning it's end to 1MB boundary
gpart add -b 64 -s 1984 -t freebsd-boot -l boot /dev/mirror/system
# install boot code unto boot partition
gpart bootcode -p /boot/gptboot -i 1 mirror/system
# create 2GB root partition
gpart add -b 2048 -s 4194304 -t freebsd-ufs -l std-root mirror/system
# create 10GB partition
gpart add -b 4196352 -s 20971520 -t freebsd-ufs -l apps mirror/system
# create 10GB partition
gpart add -b 25167872 -s 20971520 -t freebsd-ufs -l std-var mirror/system

Things kind of make sense, because I store the last 2MB of my disk at
every step with 'dd if=/dev/da1 of=/tmp/foobar oseek=488255488' and then
I can see how it's being altered:

charlie# cmp /tmp/da1.zeroed /tmp/da1.labeled
/tmp/da1.zeroed /tmp/da1.labeled differ: char 2096641, line 1
charlie# cmp /tmp/da1.labeled /tmp/da1.mirrored
/tmp/da1.labeled /tmp/da1.mirrored differ: char 2096129, line 1
charlie# cmp /tmp/da1.mirrored /tmp/da1.gpted
/tmp/da1.mirrored /tmp/da1.gpted differ: char 2095617, line 1
charlie# cmp /tmp/da1.gpted /tmp/da1.gpted.full
/tmp/da1.gpted /tmp/da1.gpted.full differ: char 2079233, line 1

So far so good: glabel & gmirror each take one sector for their
metadata, the secondary GPT header takes another sector, and once
partitioned we use an extra 16Kb.

However, gpart is not happy:

GEOM: da1: the secondary GPT table is corrupt or invalid.
GEOM: da1: using the primary only -- recovery suggested.

And to my surprise I find:

Primary GPT header:
00000200  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
00000210  7c 89 1f 33 00 00 00 00  01 00 00 00 00 00 00 00  ||..3............|
00000220  fd 3f 1a 1d 00 00 00 00  22 00 00 00 00 00 00 00  |.?......".......|
00000230  dc 3f 1a 1d 00 00 00 00  b8 69 7f ec cd 98 df 11  |.?.......i......|
00000240  8d 0b 00 30 48 f0 15 52  02 00 00 00 00 00 00 00  |...0H..R........|
00000250  80 00 00 00 80 00 00 00  97 02 0f ce 00 00 00 00  |................|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

Secondary GPT header:
00004000  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
00004010  6d a1 f5 62 00 00 00 00  fd 3f 1a 1d 00 00 00 00  |m..b.....?......|
00004020  01 00 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
00004030  dc 3f 1a 1d 00 00 00 00  b8 69 7f ec cd 98 df 11  |.?.......i......|
00004040  8d 0b 00 30 48 f0 15 52  dd 3f 1a 1d 00 00 00 00  |...0H..R.?......|
00004050  80 00 00 00 80 00 00 00  97 02 0f ce 00 00 00 00  |................|
00004060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

I must be misunderstanding something, because I see this as gpart
deciding that my secondary GPT header is at LBA FD3F1A1D00000000 which
way past the end of my disk.

What am I missing?
-- 
pica


More information about the freebsd-geom mailing list