Uncategorized

Quand un VHD vous pête à la gueule

Hier soir j’ai eu une idée géniale ! Le genre d’idée qui m’a encore fait griffonner hâtivement quelques feuilles de papier. Le lendemain, j’en noircis encore quelques unes et je me mets au code. Ça m’avait manqué. Du bon gros Windows Phone 8.0 Silverlight qui tâche, parce que pour un prototype autant capitaliser sur ce avec quoi je suis le plus à l’aise et pour lequel j’ai les outils de développement. Le point noir c’est que je travaille en machine virtuelle…

…sur un Macbook auquel il reste peu d’espace disque libre, SSD de 256 Go oblige. Un peu moins de 6 Go à l’heure actuelle. Et les apps OS X swappent comme des malades. Ignorant les avertissement du système (je vis dangereusement), j’arrive au fatidique 0 Kb de libre. Des effets marrants commencent à se faire sentir, comme des pages web qui ne s’affichent plus. Et un autre beaucoup moins drôle : le crash de ma VM Windows 8.

Petit redémarrage de circonstance, et je constate que ma machine virtuelle ne se lance plus ! Et je n’avais pas synchronisé mes derniers commits Git sur Visual Studio Online… Pas de perte totale de données, j’ai un backup de toute la VM de 6 semaines, mais ça me dérange surtout pour le code que je venais d’écrire.

Je teste donc divers logiciels (trois pour être précis) de récupération à partir d’une VM Windows 7 et d’un partage de dossier pour qu’elle puisse travailler dessus. Je vous l’a fait courte : ces softs sont tous basés sur le business model du « je te liste tes fichiers mais pour les récupérer il faut acheter une licence à 99$ ». Bref, je laisse tomber cette option, je vais les récupérer moi-même.

J’ouvre mon fichier avec un éditeur hexadécimal badass (Hex Fiend) et je constate qu’il y a pas mal de fragments de texte clair. Bon, recoller les morceaux, ça veut quand même dire bidouiller avec le format VHD et avec NFTS. Pas facile mais pas impossible. Je me souviens que j’ai justement une copie de la spécification du format VHD que j’avais lu récemment, je m’empresse donc de me rafraîchir la mémoire.

Dès les premières lignes, il y a cette histoire de double header de 512 octets dans un disque dynamique : un au début du fichier, l’autre à la fin. Je copie donc celui du début dans un fichier texte, histoire de pouvoir comparer avec celui de la fin, sait-on jamais. Et surprise ! Celui de la fin n’est composé que de 0xFF. Docteur Louis (au sens médecin hein, je n’ai pas encore de doctorat) remplace donc ces données manifestement corrompue par le header du haut.

Et hop *accent alsacien*, VirtualBox veut bien me laisser booter ma VM !
Il manquait bien les données complètes d’un fichier, mais j’ai pu en récupérer la version précédente grâce à Git 🙂

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s