99 lines
3.5 KiB
Plaintext
99 lines
3.5 KiB
Plaintext
As far as I now know, there are four utilities that attempt to
|
|
assist in recovering a lost partition table, or a partition
|
|
that was deleted by mistake.
|
|
|
|
(i) findsuper is a small utility that finds blocks with the ext2
|
|
superblock signature, and prints out location and some info.
|
|
It is in the non-installed part of the e2progs distribution.
|
|
|
|
(ii) rescuept is a utility that recognizes ext2 superblocks,
|
|
FAT partitions, swap partitions, and extended partition tables;
|
|
it prints out information that can be used with fdisk or sfdisk
|
|
to reconstruct the partition table.
|
|
It is in the non-installed part of the util-linux distribution.
|
|
|
|
(iii) fixdisktable (http://bmrc.berkeley.edu/people/chaffee/fat32.html)
|
|
is a utility that handles ext2, FAT, NTFS, ufs, BSD disklabels
|
|
(but not yet old Linux swap partitions); it actually will rewrite
|
|
the partition table, if you give it permission.
|
|
|
|
(iv) gpart (http://home.pages.de/~michab/gpart/) is a utility
|
|
that handles ext2, FAT, Linux swap, HPFS, NTFS, FreeBSD and
|
|
Solaris/x86 disklabels, minix, reiser fs; it prints a proposed
|
|
contents for the primary partition table, and is well-documented.
|
|
|
|
|
|
|
|
The current directory contains rescuept.
|
|
I would never have written it had I known about fixdisktable
|
|
and gpart. However, now that it exists I find several situations
|
|
that are handled by rescuept and not by any of the others,
|
|
so let it be for the moment.
|
|
|
|
|
|
Two patches for bugs found in gpart-0.1c:
|
|
=================================================================
|
|
diff -r ../gpart-0.1c/src/gm_ext2.c ./src/gm_ext2.c
|
|
74c74,75
|
|
< if ((sb->s_errors != EXT2_ERRORS_CONTINUE) &&
|
|
---
|
|
> if ((sb->s_errors != 0) &&
|
|
> (sb->s_errors != EXT2_ERRORS_CONTINUE) &&
|
|
78c79
|
|
< if (sb->s_state && (sb->s_state != EXT2_VALID_FS) && (sb->s_state != EXT2_ERROR_FS))
|
|
---
|
|
> if (sb->s_state & ~(EXT2_VALID_FS | EXT2_ERROR_FS))
|
|
=================================================================
|
|
(Both bugs have the effect that good ext2 filesystems are not
|
|
recognized by gpart-0.1c. Patches sent to gpart author.)
|
|
|
|
|
|
|
|
|
|
How do you get your partition table back?
|
|
The easy way - if you had been smart you would have done
|
|
# sfdisk -d /dev/xxx > xxx.pt
|
|
before the disaster, where xxx.pt lives on some other disk
|
|
or is printed on a piece of paper and taped to the wall. Now
|
|
# sfdisk /dev/xxx < xxx.pt
|
|
will restore the partition table.
|
|
|
|
In the absence of such good information, try each of the above
|
|
utilities to get an idea of where your partitions were.
|
|
Since gpart is the most elaborate one, it may be your best bet.
|
|
If it misses some of your ext2 partitions, and you have gpart-0.1c,
|
|
apply the above patch and try again.
|
|
|
|
Note that if you in the course of history have deleted some partition
|
|
and created something else on the same spot, then there will often
|
|
be traces of both, and these utilities may easily retrieve outdated
|
|
information.
|
|
|
|
|
|
If you think you found a partition, make a primary partition entry
|
|
in the partition table, and try to mount the partition.
|
|
Note that some utilities count sectors the DOS way (starting with 1)
|
|
while most do it right (starting with 0).
|
|
|
|
|
|
Report successes and failures of rescuept or any of the others
|
|
to aeb@cwi.nl. (It may well be that rescuept ought to be replaced
|
|
by gpart.)
|
|
|
|
|
|
|
|
A comment:
|
|
-----
|
|
From: Nix <nix-kernel@vger.rutgers.edu>
|
|
Subject: Re: [OFFTOPIC] Searching for filesystem locator
|
|
Date: Sun, 9 May 1999 20:26:16 +0100 (BST)
|
|
|
|
> (iii) fixdisktable
|
|
|
|
I've just tried this but it appears to suffer from a 2^31-sectors problem.
|
|
|
|
> (iv) gpart
|
|
|
|
... but this proved a godsend.
|
|
-----
|