UFS/FFS partitions on a disk
This is the life-saver of typos. If you have ever been working too long, and
just happened to type 'disklabel -w sd0 floppy', instead of 'disklabel -w fd0
floppy', you know what I am talking about.
This little program will take a raw disk device (which you might have to create)
that covers the whole disk, and finds all probable UFS/FFS partitions on the
disk. It has various options to make it go faster, and to print out
information to help in the reconstruction of the disklabel.
The options are as follows:
- Tell scan_ffs where to begin
searching for filesystems. This makes it easier to skip swap partitions,
or other large non-UFS/FFS partitions.
- Ditto for telling scan_ffs
where to stop.
- This will make scan_ffs print
out a string looking much like the input to disklabel. With a little
massaging, this output can usually be used in the disklabel edit.
- This tells scan_ffs to be
smart about skipping partitions (when it thinks it found a valid one). By
not scanning partitions for superblocks, the program completes a couple of
orders of magnitude faster. However, sometimes being smart is too good for
its own good, especially if your disk has had a different layout
previously, or contains other non-UFS/FFS filesystems.
- Tell scan_ffs to be verbose
about what it is doing, and what it has found.
- This specifies which device
scan_ffs should use to scan for filesystems.
Usually this device should cover the whole disk in question.
The basic operation of this program is as follows:
- Panic. You usually do so anyways, so you might as well get
it over with. Just don't do anything stupid. Panic away from your machine.
Then relax, and see if the steps below won't help you out.
- Try to find your old disklabel by any other means
possible. This includes printouts, backups (look in
/var/backups/), screendumps, and whatever
other method you can think of. The more information you have, the better
your chances are in recovering the disklabel of the disk.
- Create a disklabel on the affected disk, which covers the
whole disk, and has at least one partition which covers the whole disk. As
the “c” partition usually covers the whole disk anyways, this
sounds like a good place to start.
- Run scan_ffs over this
partition. If you have any information about the disklabel which used to
exist on the disk, keep that in mind while
scan_ffs spews out its things.
reconstruct the disklabel on the affected disk, using all the information
you gathered from scan_ffs and other
Last but certainly not least, we wish you good luck. The UFS/FFS filesystems are
pretty sturdy. I've seen them reconstructed after some pretty weird and
awesome fumbles. If you can't have backups, at least have funky tools to help
you out of a jam when they happen.
It is not perfect, and could do a lot more things with date/time information in
the superblocks it finds, but this program has saved more than one butt, more