Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Nov 2012 14:50:09 +0000
From:      Arthur Chance <freebsd@qeng-ho.org>
To:        dweimer@dweimer.net
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Advanced Format Drive ?
Message-ID:  <50A652A1.6050402@qeng-ho.org>
In-Reply-To: <46dc11a33f41ccb597efc1f2efb94403@dweimer.net>
References:  <26514.1353022306@tristatelogic.com> <46dc11a33f41ccb597efc1f2efb94403@dweimer.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 11/16/12 14:07, dweimer wrote:
> On 2012-11-15 17:31, Ronald F. Guilmette wrote:
>> (This stuff would probably be a lot less confiusing if I actually knew
>> what I was doing, but...)
>>
>> OK, Warren, I've just done the following steps.  The first two I drew
>> from the manpage examples, and then followed those up with two commands
>> from your tutorial.
>>
>>   /sbin/gpart create -s GPT ada0    # manpage example is wrong, ad0 ->
>> ada0
>>   /sbin/gpart bootcode -b /boot/mbr ad0  # manpage wrong again, pmbr
>> -> mbr
>>   gpart add -t freebsd-boot -l gpboot -b 40 -s 512K ada0
>>   gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
>>
>> That last one, done at the suggestion of your tutorial page, has me
>> completely perplexed, because of what is said, very explicitly, in the
>> gpart(8) manpage:
>>
>>      bootcode  Embed bootstrap code into the partitioning scheme's
>> metadata on
>>                the geom (using -b bootcode) or write bootstrap code
>> into a
>>                partition (using -p partcode and -i index).
>>
>> Please note the use of the word "or".
>>
>> The man page is telling me to _either_ use the -p option _or else_ use
>> the -p and -i options together.  But you are telling me to use all three
>> in one go!
>>
>> Forgive me, but I'm confused.  (As you can tell by now, I am often easily
>> confused.  Sorry.)
>> _______________________________________________
>> freebsd-questions@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
>> To unsubscribe, send any mail to
>> "freebsd-questions-unsubscribe@freebsd.org"
>
> I saw this, and well started wondering myself, as I have been using this
> while doing work on booting FreeBSD via ZFS (of course using -p
> /boot/gptzfsboot), I got the line from a tutorial on booting from ZFS.
> Never thought much of it, until now, but I believe I see now why, the
> secret is the pmbr, notice the "p".  Its the protective mbr, it lets
> formatting tools that understand mbr, but not gpart know that there is
> something there, the actual boot code is in the partition.

pmbr serves two purposes. It's both the first stage boot code, as a 
traditional BIOS always loads the first block of the disk into memory 
and runs it to boot the machine regardless of whether you've got an MBR 
or GPT disk, and it contains a traditional MBR that shows the entire 
disk is occupied by the first DOS partition (slice in BSD terminology) 
and that is of type 0xee. The latter means that GPT ignorant utilities 
see the disk as fully occupied by a partition of unknown type, which 
should mean they won't touch anything.

The pmbr boot code understands the GPT table and runs through the 
partition entries looking for one of type freebsd-boot. When it finds 
one, it then loads the contents of the partition (or the first 545k if 
it's larger) into memory and jumps to the second stage boot loader.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?50A652A1.6050402>