Lost FreeBSD slices (labels?) after NetBSD install -- please help!!

Nikola Lečić nikola.lecic at anthesphoria.net
Tue Dec 18 19:40:05 PST 2007

On Wed, 19 Dec 2007 03:54:00 +0100
"Snow Mountains" <snow.mountains.4 at gmail.com> wrote:
> Hello and thanks veeeery much for this response and because you
> pointed me to right direction - what to read! It took me some time to
> run this and to understand always what I am doing, but it seems to
> work!
> testdisk gives me sizes that 100% correspond with _partition_ (:))
> proportions I remember (and some nonsenses about tiny FAT partition
> somewhere...). dlfind homepage was incredibly useful for me as newbie
> in creating BSD partition labels, and I created bsdlabel file,
> carefully calculated offsets, I am happy that former ad1s4a is
> mountable so that I can read /etc/fstab!

Excellent! Just note that you don't need to calculate offsets; you can
use asterisk (*) for all offsets from b: (swap) onward; and you can use
* as the size of the last partition, too.

> However I have several questions just to be 100% sure.
> a. swap size: by an accident, I have written swapsize (from swapinfo)
> of 1024 1kb blocks; it is slightly different from what I get when I
> subtract all partition size from total slice's size (as testdisk
> reported). What I should trust?

Use the value from swapinfo; swap is just that space (unlike sizes that
you see in df(1) output: they are not sizes of partitions).

The size of slice: you should anyway _first_ run 'bsdlabel-w /dev/ad1s4'
-- it will write initial info and the value for c: will be the value
you should use.

> b. Do I need just bsdlabel -R -e? 

You probably typoed, either '-R' or '-e' (= 'from file' or 'to edit
directly'). However, I believe you should use '-B' as well, because
bootstrap code was destroyed too, and you won't be able to boot
FreeBSD even with recovered partitions.

> Is it safe to experiment?

Yes, it is. If you write wrong data, it will just not work. Once you
get mountable partitions, please fsck(8) them.

> c. What to write as fsize, bsize

fsize and bsize are 2048 and 16384 if you used all defaults when
installed FreeBSD (read newfs(8)). 

> and bps/cpg? It is completly confusing for me, bps/cpg explanation
> from bsdlabel man page is unclear to me, I see that some people use
> all zeros and I can not find a clue in various examples...

Hmm, yes... Actually, it seems that they can be calculated by comparing
data obtained  from 'bsdlabel -A /dev/ad1s4...' (look at the top of the
output) and from particular 'newfs -N /dev/ad1s4X' (this command doesn't
create new file system but just prints all data about how it would be
created) -- but after recovery, of course. Read the entire thread that
contains this:


However, I've never been able to find any info in the docs that exactly
explains what algorithm newfs(8) uses for this field...

Therefore I believe (although I'm not 100% sure) that the only way to
get old bps/cpg data is to 

  (1) dump(8) partitions once they work;
  (2) "bsdlabel -e" bps/cpg of these partitions to zeros;
  (3) recreate file systems there (this will write new (true) bps/cpg
  (4) restore(8) filesystems.

However, if fsck(8) tells you that filesystems are clear once you
recover them, I believe you don't have to worry about this. Maybe
some filesystem guru can confirm. (According to this reputable


last three values are actually ignored...)
Nikola Lečić :: Никола Лечић

More information about the freebsd-questions mailing list