Partitie Rescue mini HOWTO

Jean-Daniel Dodin, vertaald door Ellen Bokhorst

jan 22, 2000 - do005722_partition_03


Wauw ! mijn disk is leeg ! Linux is weg ! Als je vreest op een dag met een dergelijk of ander probleem te worden geconfronteerd, lees dit dan...

1. Wat staat er in

Deze mini-HOWTO richt zich alleen tot het "lost partition table" probleem. Dit kan zo zijn wanneer:

Hier zal je leren dat als je het juiste weet en het toepast, Linux gewoonlijk veilig uit dergelijke situaties komt.

We zullen eerst bekijken wat je kunt doen voordat het probleem zich voordoet om een toekomstig herstel te vereenvoudigen en wat je na het herstel moet doen. Er is weinig aan te doen om het verwijderen van een disk te voorkomen, meestal gebeurt dit automatisch door windows of een Linux installatie met niet juist functionerende programma's of fouten van gebruikers - er kan niets worden gedaan om dit te voorkomen behalve voorzichtig te zijn, maar dat ben je al, nietwaar?

Het kan ook gebeuren door het gebruik van MSDOS/Windows fdisk. Vermijd dit zoveel je kan, maar waarschijnlijk kun je dat niet.

Ik heb dit heel wat keren gedaan, op mijn computer en op die van anderen, en wist Linux meestal en soms ook windows te herstellen. Ik wens je geluk!

2. Wat nu te doen?

Als je dit uit nieuwsgierigheid leest of slechts op zoek bent naar informatie en je bevindt je op een Linux-systeem, doe dan onmiddellijk het volgende:

je zal worden beloond op een lijst met alle huidige partities op alle disks die op je computer aanwezig zijn.

Als je geen systeembeheerder bent, zou je je over dit probleem geen zorgen hoeven maken en kun je ophouden met dit te lezen.

3. Wettige zaken

Deze mini-HOWTO valt onder het Copyright (c) 2000 door Jean-Daniel Dodin. Alle rechten voorbehouden. Je mag er (bijna) alles mee doen wat je wilt. Het maakt me niet uit. Zorg er alleen voor dat mijn naam intact blijft. Ik hoop slechts dat het voor iemand in de Linux-gemeenschap bruikbaar zal zijn.

Ik ben niet verantwoordelijk voor enige schade aan computers als resultaat van het lezen van deze HOWTO. Als je enige schade veroorzaakt, _is het je EIGEN fout, NIET DE MIJNE!_ Wees voorzichtig bij het partitioneren van disks, en maak geen vergissingen, omdat het fataal kan zijn! Maak van al je belangrijke gegevens een backup en controleer dat alles wat je doet juist is! Wat hier wordt beschreven, werkte op mijn computer, maar het werkt mogelijk wel of niet op jouw computer. Alhoewel het voor iedereen zou moeten werken, kan ik je niets garanderen. Dit is de laatste waarschuwing die je krijgt: _MAAK EEN BACKUP VAN BELANGRIJKE GEGEVENS!_ Of kort gezegd: Gebruik het op eigen risico!

4. Wat moet ik op 't moment weten?

Je moet weten dat je in geval van enig belangrijk probleem met je harddisk moet stoppen het in 't geheel te gebruiken in write mode, tenminste de tijd die nodig is om te begrijpen wat er aan de hand is. De informatie erop is zeer kwetsbaar...

Als je ooit op een morgen wakker wordt, je computer aangeeft "can't load, no system installed", dan moet je niet beginnen met alles opnieuw te installeren.

Als je windows hebt geïnstalleerd, kan ik je niet beloven dat je je gegevens terug kunt krijgen, maar het is waarschijnlijk dat je al je Linux spul kunt herstellen, op voorwaarde dat het zich niet te laag in de diskstructuur bevindt. Dit is omdat een aantal windows virussen al hetgeen zich op de allereerste diskcylinder bevindt, verwijdert. Ik heb echter nog nooit met een dergelijk virus geëxperimenteerd en kan het niet met zekerheid zeggen. Probeer het in ieder geval te herstellen.

Je moet ook weten dat ik je al deze informatie alleen verstrek met informatie als doel. Noch ik noch enige andere mensen behalve jijzelf kunnen verantwoordelijk worden gesteld voor enig probleem dat er zich met je gegevens voor kan doen door het gebruik van deze info. Er zijn te veel verschillende systemen in de wereld voor dat ook maar iemand iets kan beloven. Ik kan je slechts geluk wensen en hopen, dat je me aardig vindt, blij zult zijn gegevens te kunnen herstellen.

5. Disks

Een harddisk is opgebouwd uit sectoren genummerd van 0 tot aan het maximum.

dmesg geeft bijvoorbeeld:

hdb: ST34321A, 4103MB w/128kB Cache, CHS=523/255/63

CHS staat voor Cylinders, Heads, Sectoren.

523*255*63=8401995 sectoren van 512 bytes, dus de 4103Mbytes. Dit is slechts een logische indeling, het hoeft niet noodzakelijk hetgeen te zijn wat (afgezien van de totale grootte) op de ombouw van de disk is geschreven.

De werkelijke grootte van de sectoren is voor ons niet interessant, gegeven dat we niets willen wijzigen, maar een voorgaande staat willen herstellen. Voor ons is de door fdisk gegeven grootte prima.

De grootte gezien door het systeem is direct afhankelijk van het werk van de BIOS (Basic Input/Output System - de PC's ROM). De mode van de harddisk aangegeven in de BIOS is essentieel. Het is op een nieuwe disk beter gebruik te maken van de automatische harddisk herkenning van de BIOS en "yes" te antwoorden. Hoe dan ook, iedere wijziging op dit niveau kan alle gegevens van de disk ruïneren, dus speel hier niet zonder belangrijke reden mee.

Dit is waarschijnlijk waar je disk gebruik van maakt, dus maak je niet ongerust.

6. Partities

Disks zijn momenteel groot, 13 Gb is niet zeldzaam, dus het is niet handig alles in slechts één deel te hebben. Alleen windows doet dit, en als je Linux gebruikt, kan dit zo zjn omdat je er niet bewust van bent hoe ineffeciënt het andere is.

Dus een harddisk is gewoonlijk in een aantal stukken onderverdeeld die "partities" worden genoemd (zie de "partitie mini HOWTO" voor details, en lees ook /usr/doc/package/util/README.fdisk)

Laten we eens kijken naar een (deel van) mijn eigen afdruk van fdisk -l :

Disk /dev/hdb: 255 heads, 63 sectors, 523 cylinders Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System

/dev/hdb1 1 153 1228941 83 Linux

/dev/hdb2 154 166 104422+ 82 Linux swap

/dev/hdb3 * 167 291 1004062+ 83 Linux

/dev/hdb4 295 523 1839442+ 5 Extended

/dev/hdb5 295 422 1028128+ 83 Linux

/dev/hdb6 423 523 811251 6 FAT16

Dit is mijn tweede harddisk, gebonden aan gissingen en uitprobeersels (de eerste is te eenvoudig en dus niet interessant).

/dev/hdb is mijn tweede ide-disk (slave op de primaire interface),

/dev/hdb1 is de eerste primaire partitie, draaiend vanaf het eerste (1) blok tot blok 153.

Er kunnen vier van dergelijke primaire partities zijn. Als iemand er meer dan 4 wil, moet één ervan een "extended" partitie zijn (niet noodzakelijkerwijs de vierde) en alle andere partities worden "logical" genoemd en deze bevinden zich binnenin de extended partitie. Merk op dat partitienummer 5 en partitienummer drie hetzelfde begin hebben. Nummer vijf is logical, nummer 4 extended. Logische partities beginnen altijd op 5, zelfs als er geen 4 primaire partities zijn.

7. Waarom is er een probleem?

Het probleem is dat alle geïnstalleerde Besturingssystemen de disks moeten delen en bij de start kan de bios alleen de eerste scannen, er moet een zogeheten "partitietabel" zijn aan het allereerste begin van deze disk. Deze partitietabel is te vinden in de Master Boot Record (MBR) naast de bootloader.

Enig onjuist gebruik van de MBR door één van de OS'sen leidt tot problemen. Bij het trachten te installeren van enig systeem, een ja antwoord op een vraag als "automatische partitionering?" zal zeer waarschijnlijk problemen opleveren... Dit geldt vooral met windows, vooral bij een aangepaste windows installatie die door speciaal gefabriceerde PC's worden uitgevoerd. (wanneer er geen echte "windows" cd is ingesloten). Maar gebeurt tevens bij nieuwe "slimme" (niet zo slimme!) Linux installatie programma's die met de meeste recente distributies worden meegegeven.

8. Oplossen van het probleem

Let alsjeblieft op! De hieropvolgende gegeven uitleg zal je terugleiden naar een vorig systeem, waarbij je alles op je recent geïnstalleerde systeem verliest, als daar iets op staat! Je moet kiezen...

8.1 Het eenvoudiger geval

Alles is eenvoudig als je het bij de hand hebt:

Het is voldoende

  1. Linux te starten,
  2. fdisk /dev/hda te starten (of welke disk je dan ook wilt herstellen),
  3. fdisk te gebruiken om (met de optie d) alle bestaande partities op de beschadigde disk te verwijderen,
  4. fdisk te gebruiken om alle primaire (1-4) partities op het stukje papier opgeschreven, aan te maken,
  5. ze de van toepassing zijnde tag (t optie) te geven: 82 is voor Linux swap, 83 voor Linux main (L geeft je een lijst), 5 is extended en moet worden gedaan voor het aanmaken van de logische partities,
  6. het aanmaken van enige logische partities.

fdisk is een klein en zeer slim programma. Er zijn van fdisk diverse maaksels, maar ik geef altijd de voorkeur aan het allernoodzakelijkste (ik heb het hier over die van Linux uiteraard, niet de anderen...).

Wees je ervan bewust dat fdisk niets naar disk wegschrijft totdat je de w en return aanslaat. Voor het geval je vreest een fout te maken, tik de q (quit) in of Ctrl C (\^{ }C) om veilig te stoppen.

Wanneer je nieuwe partitietabel is weggeschreven, start je Linux. De kans bestaat dat je dat niet zoals gebruikelijk kunt doen: mogelijk is ook lilo beschadigd en zal je een bootdiskette nodig hebben of vanaf een cd moeten booten (kies de optie "booting the installed partition").

Als je lilo gebruikt om te booten, toets je "lilo" in zodra je als root bent ingelogd en druk je op de return om je favoriete bootloader te herinstalleren.

Je Linux zou daar helemaal moeten zijn, test het. Probeer zover van toepassing ook windows te starten. Als je dit niet kunt, bestaat er een (zeer kleine) kans dat je de gegevens vanuit Linux kunt lezen, misschien door het lezen van raw sector per sector. Als je de disksectors waarop je gegevens zich bevinden niet kunt identificeren, gebruik dan dd om ze naar een bestand te kopiëren. Dit is alleen verstandig voor tekst. Dit herstel valt NIET binnen het kader van deze mini-HOWTO.

8.2 Een niet zo eenvoudige situatie

Met de hand

Dit is wanneer de voorgaande situatie niet kan worden gebruikt, vanwege het ontbreken van de uitvoer van fdisk op een stuk papier of als je een verouderde uitdraai hebt.

Houdt als eerste in de gaten dat zolang je niets naar disk wegschrijft, je je gegevens niet kunt verwijderen (behalve met fdisk), dus kun je het blok per blok proberen. Dat wil zeggen dat je het begin van de partitie moet weten. Als, laten we zeggen een 153 niet werkt, probeer dan een 154, enzovoort.

Dit kan vervelend zijn, maar als je bij benadering de grootte van de Linux-partitie weet, bestaat er een kans op herstel.

gpart

Maar er is een betere manier als je het net nog steeds kunt benaderen of als je "gpart" bij de hand hebt.

"gpart - raadt naar PC-type harddiskpartities" geeft de eerste regel van de manpage van gpart (man gpart) aan.

"gpart probeert te gissen welke partities op een harddisk voorkomen. Als de primaire partitietabel verloren is gegaan, is overschreven of geruïneerd komen de partities nog steeds op de disk voor, maar kan het besturingssysteem ze niet benaderen." Dit is precies wat we nodig hebben.

gpart is nog steeds in beta, maar het is reeds een zeer goede tool.

Het probleem is als volgt: het eerste blok van iedere partitie is gemarkeerd. Maar als het niet is overschreven wordt het nooit "gedemarkeerd". Dus op een oude disk komen veel "eerste partitieblokken" voor en gpart probeert naar beste kunnen te gissen welke de goede is. In feite is het niet zo moeilijk uit te proberen, er wordt door gpart niets naar disk weggeschreven.

Hier is het resultaat van gpart over de voorheen bekeken disk hdb:

root@charles:/home/jdd > gpart /dev/hdb

Begin scan...

Possible partition(Linux ext2), size(1200Mb), offset(0Mb)

Possible partition(Windows NTFS), size(1200Mb), offset(1200Mb)

Possible partition(Linux ext2), size(1004Mb), offset(2402Mb)

Possible partition(Windows NTFS), size(1600Mb), offset(4102Mb)

End scan.

Checking partitions...

* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) ends beyond disk end .

Partition(Linux ext2 filesystem): primary

Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary

Partition(Linux ext2 filesystem): primary

Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary

Ok.

Guessed primary partition table:

Primary partition(1)

type: 131(0x83)(Linux ext2 filesystem)

size: 1200mb #s(2457880) s(63-2457942)

chs: (0/1/1)-(152/254/61)d (0/1/1)-(152/254/61)r

Primary partition(2)

type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)

size: 1200mb #s(2457880) s(2457944-4915823)

chs: (152/254/63)-(305/253/60)d (152/254/63)-(305/253/60)r

Primary partition(3)

type: 131(0x83)(Linux ext2 filesystem)

size: 1004mb #s(2056256) s(4919781-6976036)

chs: (306/61/49)-(434/60/47)d (306/61/49)-(434/60/47)r

Primary partition(4)

type: 000(0x00)(unused) size: 0mb #s(0) s(0-0) chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Zoals je kunt zien, kunnen primaire partities worden hersteld, maar extended partities niet.

Dos partities zijn gelabeld met "windows NTFS" omdat ze werden aangemaakt tijdens een poging Windows 2000 te installeren (een zeer vervelende ervaring !). De "invalid" partitie is in feite de extended partitie.

Hiermee kan men met fdisk proberen de partitietabel opnieuw aan te maken (denk eraan dat dit zonder risico is aangezien het origineel reeds verloren is gegaan).

8.3 Het betere geval

Partition Magic is een commercieel product, niet zo goedkoop gezien het weinige dat men ermee kan (in Frankrijk bij benadering honderd dollar), maar met een zeer hoge reputatie. Ik gebruik het echter nooit en zal er geen waarde aan toekennen. Er wordt van gezegd dat het met partities alles kan doen, inclusief het herstellen ervan. Het is echter een windows-tool, en ik weet niet of er een dos-variant van is. Als men voor het gebruik van Partition magic, windows moet installeren, is de belangstelling er niet groot voor.

De oorspronkelijke partition-rescue mini HOWTO van Ralf was in belangrijke mate gebaseerd op het gebruik van Partition Magic, dus veronderstel dat het een zeer goede oplossing is als je waardevolle gegevens op je Linux-partitie hebt en niet veel Linux-capaciteiten. Er zijn nu echter zeer recente maaksels van Partition Magic en ik denk dat het beter is als je de handleiding leest.

9. Auteurs

De auteur van deze HOWTO is Jean-Daniel Dodin. Ik ben te bereiken via jdanield@free.fr of via jdanield@linux-france.org of jdanield@club-internet.fr.

Mijn website is nu (januari 20, 2000) te vinden op http://perso.club-internet.fr/jdanield, maar mogelijk is het spoedig te vinden op jdanield.free.fr of enig persoonlijk adres gegeven door www.free.fr IAP. Linux pages, die voor jou van het meeste belang zijn, zijn te vinden op www.linux-france.fr/article/jdanield.

Ik wil Rolf Klausen (E-mail: rolfk@romsdal.vgs.no http://www2.romsdal.vgs.no/~rolfk/) bedanken wie de vorige partition-rescue mini HOWTO schreef, zelfs al herschreef ik het bijna volledig, hij had als eerste het goede idee.

Ieder ander lid van de Linux-gemeenschap en iedereen die Linux ondersteunt en documentatie en programma's voor Linux schrijft en alle auteurs van de LDP en praktisch iedereen die ook maar betrokken is in alles dat met Linux heeft te maken. In het bijzonder Linus B. Thorvalds - hij is _The King_ !!!

Ik wil ook Michail Brzitwa <mb@ichabod.han.de> bedanken; voor het schrijven van gpart !

10. Meest recente versie

De meest recente versie van deze mini-HOWTO is te vinden op mijn Linux website op www.linux-france/article/jdanield/.