gpart, slice starts at 0

Warren Block wblock at
Sat Feb 16 15:44:54 UTC 2013

On Sat, 16 Feb 2013, Erich Dollansky wrote:

> I did this to get a disk partitioned:
> #!/bin/tcsh


> gpart destroy -F da0
> diskinfo da0
> dd if=/dev/zero of=/dev/da0 bs=512 count=34
> dd if=/dev/zero of=/dev/da0 bs=512 count=34 seek=312581774

Someone here on the lists (I unfortunately forget who) showed a sneaky 
easier way to do this:

gpart destroy -F da0
gpart create -s gpt da0
gpart destroy -F da0

> gpart show  -p da0
> gpart create -s MBR da0
> gpart add -t freebsd da0
> gpart show  -p da0
> gpart show  -p da0s1
> gpart set -a active -i 1 da0
> #
> # The following line always gives an error:
> #
> # gpart create -s BSD da0s1

'destroy' is not recursive.  It destroys the geom found on the device 
given, but does not write to any geoms inside those geoms.

MBR/bsdlabel puts FreeBSD partitions inside MBR slices.

So da0 has been erased, but the bsdlabel blocks for da0s1 are still 
present.  If you recreate da0, da0s1 will magically reappear.

Destroy the FreeBSD disklabel stuff in the slices first:
   gpart destroy -F da0s1

Or instead, use GPT partitioning to avoid dealing with the problem of 
one type of partitions inside a different type of partitions.  GPT makes 
disk partitioning a lot easier.

The second part of your question, about da0 starting a block zero:

> [X220]...Appl/Some Tools (root) > gpart show da0
> =>       63  312581745  da0  MBR  (149G)
>          63  312581745    1  freebsd  [active]  (149G)
> [X220]...Appl/Some Tools (root) > gpart show da0s1
> =>        0  312581745  da0s1  BSD  (149G)
>           0  312581745         - free -  (149G)

That shows slice one starts at block 63, standard for MBR.  The space 
inside the slice (da0s1) starts at block 0 *of the slice*.

More information about the freebsd-current mailing list