Monter une image .vdi (Virtual Box)

Après avoir fait diverses installations dans une machine virtuelle, on peut avoir envie de récupérer le travail en le copiant ou en le transferant sur une nouvelle partition de notre système. La méthode que je vais vous présenter est résonablement longue et nécessite environ deux fois l’espace maximun que vous avez alloué à votre machine virtuelle.

1. La première étape va permetre de transformer le disque vdi dynamique en fichier raw.

VBoxManage clonehd Ubuntu.vdi --format RAW Ubuntu.raw

Attention pour utiliser cette commande, VBoxManage n’utilise pas le répertoire courant, mais le répertoire dans lequel sont situées vos images .vdi (par exemple : ~/.VirtualBox/HardDisks/). Si vous voulez utiliser un autre répertoire, il faudrat spécifier le chemin absolue.

2. Avec la deuxième étape, nous allons obtenir les informations sur le partitionnement du disque .raw

fdisk -lu Ubuntu.raw

Moi j’obtiens :

Vous devez initialiser cylindres.
Vous pouvez faire cela depuis le menu des fonctions avancées.
 
Disque Salome.raw: 0 Mo, 0 octets
255 têtes, 63 secteurs/piste, 0 cylindres, total 0 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Identifiant de disque : 0x000cdcbe
 
Périphérique Amorce  Début        Fin      Blocs     Id  Système
Ubuntu.raw1   *          63    15952544     7976241   83  Linux
Ubuntu.raw2        15952545    16771859      409657+   5  Etendue
La partition 2 a des fins physique/logique différentes:
     phys=(1023, 254, 63) logique=(1043, 254, 63)
Ubuntu.raw5        15952608    16771859      409626   82  Linux swap / Solaris

La partition qui m’intéresse particulièrement est : Ubuntu.raw1.

3. Lors de la troisième étape, nous allons éxtraire cette particiton avec l’utilitaire dd (ou dcfldd identique en plus verbeux).

dd if=Ubuntu.raw of=Ubuntu.img bs=512 skip=63 count=15952481
  • bs=512 -> taille des blocs d’une image raw.
  • skip=63 -> numéro du premier bloc de la première partition.
  • count=15952481 -> nombre de blocs pour atteindre la fin ( 15952544 – 63 ).

4. Pour finir, nous allons monter l’image sur /mnt

sudo mount -o loop Ubuntu.img /mnt/

Il vous suffit de copier ce dont vous avez besoin maintenant.

Cette procédure n’est peu etre pas la meilleurs et je suis ouvert à toute proposition pour l’améliorer et la simplifier.

A+

PS : Pour ce qui voudrait convertir des images VMware (.vmdk) voir la commentaire de kouin (n°1)

9 commentaires

  1. kouin dit :

    A combiner avec ce tuto (http://doc.ubuntu-fr.org/tutoriel/vmdk2vdi) pour convertir le vmdk en raw, et on fait du « Monter une image .vmdk (VMware) » :)

  2. djiock dit :

    Merci ! Tuto quasi unique on dirait, bravo pour l’initiative !

  3. z3bu dit :

    Et si l’on veut rajouter des fichiers sur notre partition, et qu’on veuille la re-transformer en vdi, est-il possible alors de faire une opération inverse de dd if=Ubuntu.raw of=Ubuntu.img bs=512 skip=63 count=15952481 ?

    • Pierre BLONDEAU dit :

      Bonjour,

      Je ne suis pas sur que ça fonctionne, mais pourquoi ne pas tester.

      Mais la commande devra changer un peu du genre :
      dd if=Ubuntu.img of=Ubuntu.raw bs=512 seek=63 count=15952481

      Pour le count, il faut peut être tester avec 15952544.

      Pensez à faire une copie avant de tenter cette opération.

  4. Ava dit :

    Ce n’est pas vraiment clair pour moi. Mais je comprends certains trucs. Mais je vais essayer et voir moi-même si je comprends vraiment ou pas.

  5. PhobosA dit :

    Salut Pierre!
    Ton p’tit tuto m’a été bien utile! J’en profite pour ajouter qu’il n’est pas nécessaire d’extraire la partition du fichier disque pour pouvoir la monter grâce à l’option offset. Dans mon cas j’ai obtenu un fichier ipcop.raw

    fdisk -l ipcop.raw

    Disque ipcop.raw : 1073 Mo, 1073741824 octets
    64 têtes, 63 secteurs/piste, 520 cylindres, total 2097152 secteurs
    Unités = secteurs de 1 * 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d’E/S (minimale / optimale) : 512 octets / 512 octets
    Identifiant de disque : 0x00000000

    Périphérique Amorçage Début Fin Blocs Id. Système
    ipcop.raw1 * 1 20159 10079+ 83 Linux
    ipcop.raw2 20160 1532159 756000 83 Linux
    ipcop.raw4 1532160 2096639 282240 83 Linux

    La première partition commence au secteur 1, un secteur faisant 512 octets je dois introduire un décalage de 512, ce qui peut sembler logique puisque le premier secteur (secteur 0) est utilisé justement par la table des partitions et le programme de boot. Pour monter la première partition on tape la commande:

    sudo mount ipcop.raw -o offset=512 /mnt/

    Ça fonctionne à merveille!

Laisser un commentaire

*