Recovering Superblocks.

The weekend started with a catastrophe. After the last crash of my workstation
the disklabel was messed up and it didn’t wanted to boot.
I tried to reinstall FreeBSD on the / partition, but that did’t help anything, fsck(8) threw out thousands of error messages and didn’t reconstruct the disklabel.
Being clueless what to do, I first started with my other Computer maintenance.
I extended huckfinn’s too small /var partition from 20MB to 500MB.
I exchanged the SCSI Controller for my CD Burner from the Dawicontrol UW Controller with a broken BIOS to a used Adaptec Controller that was built into Olga. Suprisingly the CD Burner was detected and I didn’t had to deal with Jumpers, Termination and SCSI IDs.
Now I plugged the Dawicontrol Controller into the last-but-one PCI Slot of Sauna and connected it with a spare 6GB UW Seagate HD. Again i jumpered everything right and I installed FreeBSD over an old Windows partition that was on the drive. After reading the fsck_ffs(8) manpage I tried fsck with the -b 32 option and that went well. So only the primary superblock was damaged. Now I just had to find a way to recover the original one. That was difficult, since most postings on the FreeBSD mailinglist said that fsck will do that automagically. But my fsck didn’t!
Since it was already late at night and I went to bed. After sleeping long and an extensive breakfast I tried some different search queries on Google.
And finally I found this thread.

dd if=<disk> skip=32 of=<disk> seek=16 bs=512 count=16

saved my life, everything is mountable again and most data was recovered.
Since I now have two disks in my workstation, I am going to share the diskload between the two drives and perhaps I should think about a better backup solution 🙂