Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Mar 2013 12:53:14 +0100
From:      Peter Maloney <peter.maloney@brockmann-consult.de>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        freebsd-fs@FreeBSD.org
Subject:   Re: Aligning MBR for ZFS boot help
Message-ID:  <5141BA2A.9080904@brockmann-consult.de>
In-Reply-To: <5141B8B6.4010209@brockmann-consult.de>
References:  <513C1629.50501@caltel.com> <alpine.BSF.2.00.1303101006490.5989@wonkity.com> <513CD9AB.5080903@caltel.com> <alpine.BSF.2.00.1303101326530.7218@wonkity.com> <513CE369.4030303@caltel.com> <alpine.BSF.2.00.1303101349540.7637@wonkity.com> <1362951595.99445.2.camel@btw.pki2.com> <alpine.BSF.2.00.1303101807550.8481@wonkity.com> <CABXB=RTt-j0SGxktWMfLcgLAEN6Vi%2Bf=psBuN0jQaJthk_3cbw@mail.gmail.com> <513E1208.5020804@caltel.com> <20130312203745.A1130@besplex.bde.org> <513F8F04.60206@caltel.com> <20130313232247.B1078@besplex.bde.org> <5140F373.1010907@caltel.com> <20130314195715.Y909@besplex.bde.org> <5141B8B6.4010209@brockmann-consult.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2013-03-14 12:47, Peter Maloney wrote:
> On 2013-03-14 10:41, Bruce Evans wrote:
>> On Wed, 13 Mar 2013, Cody Ritts wrote:
>>
>>> So, by setting those CHS values I am:
>>>  making the partition table more compatible with other operating
>>> systems and BIOSes?
>>>  and giving some utilities the CHS stuff they need to function right?
>> It's not completely clear that S=32 H=64 is portable, but it is what most
>> old SCSI BIOSes used.
>>
>> Also, if the disk already has some partitions with a certain geometry,
>> use
>> the same geometry for other partitions and don't use fdisk's defaults if
>> they differ.
>>
>> Bruce
> Oh man... I thought yeah that -a 1 or -a 2048 should work, but it
> doesn't. And then I thought I'd be extra crafty and use dd to directly
> write the partition table myself and send that as a solution to you
> guys, but even that fails!
>
>
> Here's writing a 63 alignment mbr to the disk, just to prove dd can do this:
>
> # gdd if=mbr.img of=/dev/md10 bs=512 count=1
> 1+0 records in
> 1+0 records out
> 512 bytes (512 B) copied, 16.8709 s, 0.0 kB/s
>
> # gpart show md10
> =>     63  4194241  md10  MBR  (2.0G)
>        63    40950     1  freebsd  (20M)
>     41013  4153291        - free -  (2G)
>
> Here's changing the start sector on the first partition to 2048 ;)
> Writing to the device works with bs=512, but not bs=1, so we use a file
> and bs=1 to do our edits, and then bs=512 to the disk.
>
> # gdd if=<(echo -ne "\x00\x08" ) of=mbr.img bs=1 seek=454
> 2+0 records in
> 2+0 records out
> 2 bytes (2 B) copied, 0.000112023 s, 17.9 kB/s
>
> Here's writing the new 2048 aligned mbr to the disk:
>
> # gdd if=mbr.img of=/dev/md10 bs=1 count=1
> gdd: writing `/dev/md10': *Invalid argument*
> 1+0 records in
> 0+0 records out
> 0 bytes (0 B) copied, 21.0247 s, 0.0 kB/s
>
> :O
> _________________________________________


Oh, and I almost forgot the most important part... the solution!

The solution is to align to 129024 sectors instead, which fits the needs
of modern 512/1024/2048 alignment, and also the crazy old thing.

# gpart add -t freebsd -a 129024 -s 1M md10
md10s1 added
# gpart add -t freebsd -a 129024 -s 1511M md10
md10s2 added
# gpart show md10
=>     63  4194241  md10  MBR  (2.0G)
       63   128961        - free -  (63M)
   129024     2016     1  freebsd  (1M)
   131040   127008        - free -  (62M)
   258048  2967552     2  freebsd  (1.4G)
  3225600   968704        - free -  (473M)

Above -s numbers are basically random for testing. So now let's check
that they are indeed aligned, with the modulus in bc. (Note that
strangely, % is only modulus if scale=0 in bc)

# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
129024%2048
0
258048%2048
0




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5141BA2A.9080904>