Ik Van Linux

Windows 10 bestanden redden met Linux


Het is al een oud kunstje om een Linux Live USB staaf of CD te gebruiken om bestanden te redden van een kapotte Windows machine. Het maakt daarbij niet uit of dat nu is omdat Windows kapot is gegaan, de harde schijf aan het overlijden is of omdat alles vergeven is van de virussen. Zelf mag ik ook af en toe wat foto's en andere bestanden proberen te redden van een half overleden systeem. Backups zijn vaak niet voorhanden natuurlijk.
Tot nu toe was dat geen enkel probleem. De computer gewoon laten starten vanaf een Live USB staaf met Linux Mint erop, de harde schijf aankoppelen en alles via het netwerk naar mijn eigen computer kopiëren. Je kunt ook de harde schijf in kwestie uitbouwen en direct aansluiten op je Linux machine. Dat kan handig zijn als bijvoorbeeld de computer zelf overleden is.

Maar sinds de komst van Windows 8 en Windows 10 is dat ietsje lastiger geworden. Onlangs mocht weer wat data gaan redden van een backuploos persoon en liep tegen het volgende probleem aan.

Kan de schijf niet aankoppelen

Bij het aankoppelen van de schijf kreeg ik de foutmelding die o.a. zegt "exited with non-zeroexit status 14: Windows is hibernated, refused to mount." Windows is dus niet afgesloten, maar staat in de slaapstand. Daarmee doet Windows straks weer net of het heel snel opstart, wat overigens nog een eeuwigheid duurt. Maar hoe kan ik nu de Windows netjes afsluiten als de machine kapot is? Er moet dus een manier zijn om de schijf toch te kunnen aankoppelen, ongeacht de onveilige status van het bestandssysteem. En die is er gelukkig. De onderste regel in het bovenstaande plaatje geeft al een hint wat je moet doen. Maar hoe doe je dat dan? Het zou handiger geweest zijn als er een "Ik begrijp de risico's en wil de schijf alsnog aankoppelen, in de read only stand" zou zijn.

Aankoppel opties aanpassen


Ik laat hier zie hoe je de mount options (aankoppel opties) kunt aanpassen in Linux Mint. Dit kan ook met Ubuntu, alleen start je het benodigde programma daar op een andere wijze vanwege de Unity interface. Andere Linux distributies hebben dat programma wellicht ook, maar daar kan ik je niet mee helpen.

Start het programma Disks, wat te vinden is in het startmenu onder Preferences.

Start het programma disks

Selecteer nu de juiste disk en de Windows volume (partitie). Doorgaans moet je de grootste volume kiezen. Die is overigens altijd NTFS geformatteerd. Het volgende plaatje laat een voorbeeld van een Windows 10 schijf zien.
Bij een Windows 8 schijf is de keuze een stuk beperkter en is het dus gemakkelijker kiezen.

Selecteer de Windows disk en de juiste volume

Klik nu op het knopje met de tandwieltjes onder de volume lijst en kies de optie Edit Mount Options...

De mount opties aanpassen

Bovenaan in het venster staat de schakelaar Automatic Mount Options. Schakel deze uit (Off dus), anders kun je geen wijzigingen aanbrengen.

Schakel dit uit

Voeg nu de optie ro toe aan het eind van de opties regel (ro staat voor Read Only). De komma voor ro niet vergeten natuurlijk. Daarna mag je op OK klikken en zelfs het Disks programma sluiten als je wil.

ro optie toevoegen

Nu kun je in de bestandsbeheer wel gewoon op de Windows schijf klikken om de inhoud te bekijken. Je kunt natuurlijk niets wijzigen, maar dat doe je ook beter niet op een kapotte harde schijf.

Mounten geslaagd

En nu kun je naar hartenlust bestanden gaan redden. Tip: Red de belangrijkste bestanden eerst. Ik heb al eens meegemaakt dat ik voor het gemak alle data ging kopiëren van een stervende schijf. En toen ik bijna bij de belangrijke bestanden aan kwam was de schijf helemaal dood. Weg data.

En als je toch op de schijf wilt schrijven


Bovenstaande methode is voldoende als je alleen maar de bestanden wilt redden van een kapotte computer met Windows 8 of 10 er op. Maar wat nu als je toch iets wilt schrijven naar die schijf? Dat is mogelijk, maar als de schijf zelf stervende is wil je daar zo min mogelijk schrijfacties naar doen lijkt me.
OK, je wilt dus toch schrijven naar die schijf, ondanks mijn waarschuwing.

Zie je in bovenstaande plaatje het bestand hiberfil.sys staan? Dat is de boosdoener. Dat is het teken voor Linux om voorzichtig te zijn met deze partitie. Daarom weigert Linux de partitie in eerste instantie aan te koppelen.
De oplossing is simpel, wissen die hap. Maar als je Windows daarna nog een keer opstart zal deze een schone opstart doen, wat dus langer zal duren. En je bent eventueel niet opgeslagen werk kwijt. Je bent dus gewaarschuwd.
Maar ja, hoe wis je een bestand van een Read Only schijf?

Je kunt bovenstaande procedure helemaal volgen. Het enige wat je moet veranderen is de mount optie. Boven heb je de optie ro toegevoegd, dat mag je veranderen in de optie remove_hiberfile. Dat is alles.

Toegift


Ik heb je al aangeraden rechtstreeks op de bestanden af te vliegen die je wilt redden, om te voorkomen dat de schijf onder je handen helemaal overlijdt. Maar soms is dat niet mogelijk. Soms heeft de schijf zo veel slechte blokken waardoor zelfs het zoeken naar de bestanden enorm lang duurt of zelfs onmogelijk is. Laat staan dat je iets gekopieerd krijgt.
In dat geval kun je gebruik maken van het programma ddrescue. Installeer dat met sudo apt-get install gddrescue. Start het programma met:

sudo ddrescue /dev/sdb1 /home/user/redden.img logfile.txt

Er wordt nu een image gemaakt van de kapotte harde schijf. Je moet natuurlijk wel de juiste bron en bestemming opgeven. Let wel dat de bestemming een image bestand is wat net zo groot wordt als de partitie van de schijf die je wilt redden.
Dit programma doet zijn stinkende best om een image te maken van de harde schijf. Soms moet het daarvoor slechte blokken overslaan. Die slechte blokken worden onthouden. Zodra het programma klaar is kun je het nog een keer draaien en met de juiste opties kun je het programma nog meer moeite laten doen om de beschadigde blokken alsnog gelezen te krijgen. Reeds goed bevonden blokken worden daarbij niet meer opnieuw gelezen, wat dus heel veel tijd bespaart. Daar heeft het programma dus de logfile voor nodig, om te weten wat er allemaal al goed gelukt is zodat dat overgeslagen kan worden.

Let wel, bij een hele zieke harde schijf is dit een erg langdurig proces, zelfs als je het programma maar een keer laat draaien.

Dit ziet er niet goed uit

Zie hierboven het scherm van het programma Disks van een erg zieke schijf waar ik nog data van mocht redden. Dat beloofde al niet veel goeds. De schijf was ook heel traag, elke keer als ik een map opende moest ik een minuut wachten eer de inhoud getoond werd. Als het al zo ver kwam.
Toen heb ik maar geprobeerd om met ddrescue een image te maken. Hieronder zie je dat na ruim 21 uur nog slechts 42GB gekopieerd was, met de nodige errors. Dat was dus nog geen 10% van de totale schijfcapaciteit. Met deze snelheid gaat het nog zo'n 10 dagen duren. Ik heb mijn poging daarop maar gestaakt. Dan had de eigenaar maar backups moeten maken. Soms moet je als hulpverlener ook aan jezelf denken. Het probleem van een ander hoeft niet perse een probleem van jou te worden.

Dit duurt mij te lang

Als je het geluk hebt dat de image wel in een redelijke tijd klaar is, al dan niet met errors, kun je deze aankoppelen en met een beetje geluk kun je daar nog bestanden vinden die gered kunnen worden.

sudo mount -o loop /mnt/gebruiker/redden.img /mnt/image

Maar soms is het bestandssysteem zo ernstig beschadigd dat de image niet aan te koppelen is. In dat geval kun je nog trachten het bestandssysteem van de image te repareren. Hoe je dit kunt doen gaat me hier te ver, maar je kunt het in het Engels nalezen als je de link naar de bron van deze toegift volgt.

Succes is natuurlijk niet verzekerd. De enige verzekering voor succes is regelmatig backups maken. Maar ja, dat is niet gebeurd, anders waren we niet hier.

Bron: Linux Journal - When desaster strikes: Hard drive crashes