gpart Logo
 
Download Erste Hilfe Man-Page Links Englisch Historie Autor
gpart - Heuristische Rekonstruktion von PC-Partitionstabellen
Gpart ist ein kleines Programm, das im Falle des Verlustes der primären Partitionstabelle im Sektor 0 einer PC Festplatte diese zu erraten und wiederherzustellen versucht. Die erratene Partitionstabelle kann auf die Platte zurückgeschrieben werden. Von gpart unterstützte Dateisysteme bzw. Partitionstypen: 
 
  • DOS/Windows FAT (FAT 12/16/32)
  • Linux ext2
  • Linux Swap Partitionen Versionen 0 und 1 (Linux >= v2.2.X)
  • OS/2 HPFS
  • Windows NTFS
  • *BSD Disklabels
  • Solaris/x86 Disklabels
  • Minix FS
  • Reiser FS
  • Linux LVM Physical Volume (LVM von Heinz Mauelshagen) 

Download
Aktuelle gpart Quellen: gpart-0.1f.tar.gz
Statisch gelinktes Linux Binary (160 KBytes): gpart.linux
Statisch gelinktes FreeBSD Binary (70 KBytes): gpart.freebsd

Erste Hilfe
Falls ein Rechner wiederhergestellt werden soll, bei dem die primäre Partitionstabelle der Bootplatte zerstört oder inkonsistent ist, bestehen zwei Möglichkeiten zur Rettung:
  • der einfachste Weg ist, einen funktionierenden Rechner zu finden, und die Platte dort einzubauen. Falls dieser Rechner die Plattengeometrie nicht korrekt erkennt, sollte vorher noch die Geometrie der Platte aufgeschrieben, und gpart via "-C c,h,s" mitgeteilt werden.
  • das gpart Binary runterladen, in "gpart" umbenennen, auf eine Diskette speichern, die Manual-Page oben ausdrucken, und den infragekommenden Rechner mit einer Rettungsdiskette starten.
Nach dem Booten sollte geschaut werden, ob die Platte erkannt wurde. Dazu eine Shell starten, und "dmesg" eintippern. Linux z.B. meldet erkannte Platten während des Bootens so: "hdc: ST320430A, 19569MB w/512kB Cache, CHS=39761/16/63". Dann die Diskette mit gpart einlegen, mounten und in das Diskettenverzeichnis wechseln. 

Jetzt "gpart /dev/<Festplatte>", also z.B. "gpart /dev/hdc". starten. Ohne irgendwelche zusätzlichen Optionen führt gpart einen Standardscan durch, versucht also nur eine konsistente primäre Partitionstabelle zu erraten (ohne diese im Erfolgsfall gleich zurückzuschreiben). Eine typische, positive Ausgabe sieht so aus:

Begin scan...
Possible partition(DOS FAT), size(3999mb), offset(0mb)
Possible extended partition at offset(4000mb)
  Possible partition(Windows NTFS), size(3999mb), offset(4000mb)
  Possible partition(Linux ext2), size(3072mb), offset(8000mb)
  Possible partition(Linux ext2), size(3072mb), offset(11072mb)
Possible partition(Linux ext2), size(3072mb), offset(14144mb)
Possible partition(Linux ext2), size(2353mb), offset(17216mb)
End scan.

Checking partitions...
Partition(DOS or Windows 95 with 32 bit FAT): primary
  Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): logical
  Partition(Linux ext2 filesystem): logical
  Partition(Linux ext2 filesystem): logical
Partition(Linux ext2 filesystem): primary
Partition(Linux ext2 filesystem): primary
Ok.

Guessed primary partition table:
Primary partition(1)
  type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
  size: 3999mb #s(8191953) s(63-8192015)
  chs:  (0/1/1)-(1023/15/63)d (0/1/1)-(8126/15/63)r

Primary partition(2)
  type: 005(0x05)(Extended DOS)
  size: 10144mb #s(20775888) s(8192016-28967903)
  chs:  (1023/15/63)-(1023/15/63)d (8127/0/1)-(28737/15/63)r

Primary partition(3)
  type: 131(0x83)(Linux ext2 filesystem)
  size: 3072mb #s(6291456) s(28967904-35259359)
  chs:  (1023/15/63)-(1023/15/63)d (28738/0/1)-(34979/8/24)r

Primary partition(4)
  type: 131(0x83)(Linux ext2 filesystem)
  size: 2353mb #s(4819248) s(35259840-40079087)
  chs:  (1023/15/63)-(1023/15/63)d (34980/0/1)-(39760/15/63)r

Hat gpart wie oben sein "Ok" zur erratenen Partitionstabelle gegeben, sollte diese nochmal sehr sorgfältig überprüft werden. Danach kann die Tabelle via "gpart -W /dev/hdc /dev/hdc" (statt /dev/hdc das eigentliche Device angeben) auf die Platte zurückgeschrieben werden. Nach dem Zurückschreiben den Rechner neu starten und überraschen lassen.

Meldet gpart nach dem Scan Inkonsistenzen, ist noch nicht alles verloren. Gpart bietet vielfältige Optionen zur Steuerung des Scanvorgangs, z.B. "-n s" (Scannen auf Sektorgrenzen, nicht auf Kopfgrenzen), oder "-f" (kompletter Scan, normalerweise überspringt gpart den Bereich einer möglichen Partition auf der Platte, und setzt den Scanvorgang danach fort). Die Manual-Page sollte einen guten Überblick geben.

Falls gpart keine oder nur eine blödsinnige Partitionstabelle errät, kann ich nur noch auf ähnliche Programme wie gpart verweisen: rescuept von Andries Brouwer (ist im Paket "util-linux" enthalten), und fixdisktable von Gordon Chaffee. Viel Glück.

Links

Historie
v0.1f:
  • Normalscan wieder auf Kopfgrenzen.
  • Falsche Kopfgrenzenbedingung gefixt.
  • Möglichkeit zum Nacheditieren der Partitionen geschaffen.
  • Scan fängt jetzt auf dem zweiten Kopf an (außer "-k <start>" wurde angegeben).
  • Länge erratener NTFS-Partitionen umfaßt jetzt den Ersatzbootsektor von NT4.
v0.1e:
  • Normalscan auf Sektorgrenzen, erweiterte Partitionstabellen werden entweder auf Kopfgrenzen (bei "-n s") oder Zylindergrenzen (bei "-n h") gesucht.
  • LVM Physical Volume Modul (LVM von Heinz Mauelshagen, http://linux.msede.com/lvm).
v0.1d:
  • Plattenlesefehler überspringen.
  • Werden logische Partitionen als üngültig abgewiesen,  den Grund angeben ("-vv" übergeben). 
v0.1c:
  • Logische Partitionen, die kürzer als ihr korrespondierender Eintrag in der erweiterten Tabelle sind, nicht als ungültig abweisen.
  • Manchmal wurden korrekte ext2-Superblöcke nicht erkannt.
  • Falsche Berechnung der Länge von Linux Swappartitionen .
  • Reiser FS Modul. 
v0.1b:
  • Erste veröffentlichte Version.
  • Schneller Scan jetzt Default ("-f" schaltet kompletten Scan ein).
  • Toleranter im Akzeptieren erweiterter Partitionstabellen. 
v0.1a:
  • Erste Version.

Autor
Kommentare, Anmerkungen, Verbesserungsvorschläge oder sonstiges bitte an mich,
Michail Brzitwa
Letzte Veränderung: 4. März 2000

 
Bobby Approved (v 3.1)