Date: Fri, 30 Mar 2007 08:07:23 +1000 From: Antony Mawer <fbsd-questions@mawer.org> To: Kris Kennaway <kris@obsecurity.org> Cc: freebsd-questions@freebsd.org, "Marc G. Fournier" <freebsd@hub.org> Subject: Re: Why is 'disklabel'ng a new drive so difficult? Message-ID: <460C389B.7060703@mawer.org> In-Reply-To: <20070328204126.GA27217@xor.obsecurity.org> References: <C0012B02FE5D8BE2EC25FE05@ganymede.hub.org> <20070328204126.GA27217@xor.obsecurity.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 29/03/2007 6:41 AM, Kris Kennaway wrote:
> On Wed, Mar 28, 2007 at 05:26:49PM -0300, Marc G. Fournier wrote:
>> Just bought a new WD SATA drive: WDC WD5000YS-01MPB1 09.02E09
>>
>> Tried to disklabel it, and it gives me all kinds of warnings when I look at it
>> after running the disklabel:
>>
>>
>> ganymede# bsdlabel -w ad4s1 auto
>> ganymede# bsdlabel ad4s1c
>> # /dev/ad4s1c:
>> 8 partitions:
>> # size offset fstype [fsize bsize bps/cpg]
>> a: 976767986 79 unused 0 0
>> c: 976768002 63 unused 0 0 # "raw" part, don't
>> edit
>> partition a: partition extends past end of unit
>> partition c: partition extends past end of unit
>> bsdlabel: partition c doesn't start at 0!
>> bsdlabel: An incorrect partition c may cause problems for standard system
>> utilities
>>
>> Even if I try to use /stand/sysinstall to do the fdisk, the end result has
>> 'issues' ...
>>
>> So, what is the generally accepted method of label'ng a new drive? :(
>
> I learned a useful trick the other day: you can use abbreviations like
> "1g", also '*' to mean "automatically calculate". See the manpage.
This timely thread came as I was experimenting with disklabel, and I
noticed in the man page it says this:
> offset The offset of the start of the partition from the beginning of
> the drive in sectors, or * to have bsdlabel calculate the correct
> offset to use (the end of the previous partition plus one, ignor-
> ing partition `c'. For partition `c', * will be interpreted as
> an offset of 0. The first partition should start at offset 16,
> because the first 16 sectors are reserved for metadata.
When I tried using "16" as the offset for my 'a' partition, I could no
longer user "*" on my last partition to make it auto-size... disklabel
then sized the partition so it went past the end of the disk. Presumably
it's not taking into account the starting offset when it does this (gm0
is a 3gb gmirror device, with a single slice created on it using fdisk):
$ bsdlabel -R /dev/mirror/gm0s1 /dev/stdin
8 partitions:
a: 2097152 16 4.2BSD
b: 102400 * swap
c: * 0 unused
d: 102400 * 4.2BSD
e: * * 4.2BSD
partition e: partition extends past end of unit
However if I change the 'a' partition offset to 'e', it works:
$ bsdlabel -R /dev/mirror/gm0s1 /dev/stdin
8 partitions:
a: 2097152 0 4.2BSD
b: 102400 * swap
c: * 0 unused
d: 102400 * 4.2BSD
e: * * 4.2BSD
$ disklabel /dev/mirror/gm0s1
# /dev/mirror/gm0s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 2097152 0 4.2BSD 0 0 0
b: 102400 2097152 swap
c: 6281352 0 unused 0 0 # "raw"
d: 102400 2199552 4.2BSD 0 0 0
e: 3979400 2301952 4.2BSD 0 0 0
Is it important to use 16 as the offset still, or is this a historical
piece of information that is no longer relevant? Or is this is a bug in
disklabel that should be fixed?
--Antony
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?460C389B.7060703>
