Creating code slice before disk image in nanobsd

Warren Block wblock at wonkity.com
Wed Jan 15 19:50:37 UTC 2014


On Thu, 16 Jan 2014, Ian Smith wrote:

> On Wed, 15 Jan 2014 07:53:08 -0700, Warner Losh wrote:
>
> > I'll take a look at things... It isn't obvious at first blush this is
> > the right thing to do, but I need to think about it a bit...
> >
> > Warner
>
> Perhaps an aside, but I'm pretty sure Warren (cc'd) has said that gpart
> can do anything that fdisk AND bsdlabel can do?

Yes.  Although there is an exception: gpart silently forces alignment to 
CHS values on MBR slices, and fdisk does not.  So to get a 4K-aligned 
slice requires fdisk.  gpart can align BSD partitions inside a slice to 
4K, but that is a workaround.  (I believe gpart should default to CHS 
but use -a alignment or -b values when given for MBR slices, regardless 
of the MBR spec.  This becomes increasingly important as 4K drives and 
SSDs become more common.)

>  If that's so, and the
> object here is to deprecate fdisk, why not also replace these lines:
>
> +
> +	bsdlabel -w -B -b ${NANO_WORLDDIR}/boot/boot ${MD}
> +	bsdlabel ${MD}
> +
>
> with their gpart equivalents?
>
> (and no, I don't know what those should be in this context)

To create the initial MBR, probably already done before the code above:
   gpart create -s mbr ${MD}
   gpart bootcode -b ${NANO_WORLDDIR}/boot/boot ${MD}

To create a slice and set it active:
   gpart add -s freebsd ${MD}    [1]
   gpart set -a active -i1 ${MD}

To create the BSDlabel inside the slice and write the bootcode to it:
   gpart create -s bsd ${MD}s1
   gpart bootcode -b ${NANO_WORLDDIR}/boot/boot ${MD}s1

Then BSD partitions can be added with, for example:
   gpart add -t freebsd-ufs -s2g ${MD}s1  [2]

[1] when creating the slice, -a4k or -b1m can be specified but will be
     silently rounded to CHS values
[2] when creating BSD partitions, -a4k can be used and they will be
     created with an offset inside the slice to end up aligned

For reference, see 
http://www.wonkity.com/~wblock/docs/html/disksetup.html#_the_old_standard_mbr

> cheers, Ian
>
> > On Jan 14, 2014, at 9:23 PM, Adrian Chadd wrote:
> >
> > > Yes, please!
> > >
> > >
> > > -a
> > >
> > >
> > > On 14 January 2014 08:15, Arrigo Marchiori <ardovm at yahoo.it> wrote:
> > >> Hello list,
> > >>
> > >> in 2012 I wrote a patch to build the code image before the full disk
> > >> image. It seemed to apply cleanly to 8-STABLE and it seems to apply now
> > >> cleanly to 9-STABLE.
> > >>
> > >> Another effect of that patch is using gpart instead of fdisk.
> > >>
> > >> Is it of interest to anyone? Shall I file a PR?
> > >>
> > >> You can find the original patch and explanation at
> > >> http://lists.freebsd.org/pipermail/freebsd-embedded/2012-June/001580.html
> > >>
> > >> Regards,
> > >> --
> > >> rigo
> > >>
> > >> http://rigo.altervista.org
>


More information about the freebsd-embedded mailing list