75 votes

Comment convertir une image disque brute plate en vmdk pour virtualbox ou vmplayer ?

J'ai quelques vieilles images d'anciens systèmes de fichiers Linux au format de fichier plat. Elles peuvent être utilisées par Bochs mais j'ai besoin de les exécuter avec Boîte virtuelle . Virtual Box ne peut pas utiliser les images dans ce format. Je dois donc convertir ces images de fichier plat en format de fichier .vmdk. Existe-t-il un moyen de le faire ?

2 votes

3 votes

Un mot d'avertissement lorsque vous utilisez qemu-img pour convertir les images à utiliser avec VMWare Fusion - Fusion n'aime pas les disques qui ne sont pas dimensionnés exactement au mégaoctet près. Si vous avez une telle image, assurez-vous de la redimensionner au mégaoctet près, puis convertissez-la au format vmdk. Si vous ne le faites pas, vous obtiendrez un vmdk qui pourra être attaché à une VM au moment de l'installation, mais si vous tentez de l'ajouter à une VM ultérieurement, le bouton Appliquer ne fonctionnera pas.

4 votes

Merci pour ce commentaire. J'avais du mal à comprendre pourquoi le Apply ne fonctionnait pas. Il m'a fallu quelques minutes pour trouver comment augmenter la taille du fichier au mégaoctet près. Voici comment j'ai procédé. Mon fichier devait être augmenté de 600 kilo-octets. Cette commande a fait le travail dd if=/dev/zero count=600 bs=1k >> image.dd

1voto

Wolfgang Fahl Points 1920

La réponse de krosenvold a inspiré le script suivant qui fait ce qui suit :

  • récupérer le dump dd via ssh depuis un serveur distant (sous forme de fichier gz)
  • dézipper le dump
  • le convertir en vmware

le script est redémarrable et vérifie l'existence des fichiers intermédiaires. Il utilise également pv et qemu-img -p pour montrer la progression de chaque étape.

Dans mon environnement 2 x Ubuntu 12.04 LTS les étapes se sont déroulées :

  • 3 heures pour obtenir un vidage de disque de 47 Go d'une partition de 60 Go.
  • 20 minutes pour décompresser un fichier dd de 60 Go.
  • 45 minutes pour créer le fichier vmware

    !/bin/bash

    get a dd disk dump and convert it to vmware

    see http://stackoverflow.com/questions/454899/how-to-convert-flat-raw-disk-image-to-vmdk-for-virtualbox-or-vmplayer

    Author: wf 2014-10-1919

    #

    get a dd dump from the given host's given disk and create a compressed

    image at the given target

    #

    1: host e.g. somehost.somedomain

    2: disk e.g. sda

    3: target e.g. image.gz

    #

    http://unix.stackexchange.com/questions/132797/how-to-use-ssh-to-make-a-dd-copy-of-disk-a-from-host-b-and-save-on-disk-b

    getdump() { local l_host="$1" local l_disk="$2" local l_target="$3" echo "getting disk dump of $l_disk from $l_host" ssh $l_host sudo fdisk -l | egrep "^/dev/$l_disk" if [ $? -ne 0 ] then echo "device $l_disk does not exist on host $l_host" 1>&2 exit 1 else if [ ! -f $l_target ] then ssh $l_host "sudo dd if=/dev/$disk bs=1M | gzip -1 -" | pv | dd of=$l_target else echo "$l_target already exists" fi fi }

    #

    optionally install command from package if it is not available yet

    1: command

    2: package

    # opt_install() { l_command="$1" l_package="$2" echo "checking that $l_command from package $l_package is installed ..." which $l_command if [ $? -ne 0 ] then echo "installing $l_package to make $l_command available ..." sudo apt-get install $l_package fi }

    #

    convert the given image to vmware

    1: the dd dump image

    2: the vmware image file to convert to

    # vmware_convert() { local l_ddimage="$1" local l_vmwareimage="$2" echo "converting dd image $l_image to vmware $l_vmwareimage"

    convert to VMware disk format showing progess

    see http://manpages.ubuntu.com/manpages/precise/man1/qemu-img.1.html

    qemu-img convert -p -O vmdk "$l_ddimage" "$l_vmwareimage" }

    #

    show usage

    # usage() { echo "usage: $0 host device" echo " host: the host to get the disk dump from e.g. frodo.lotr.org"
    echo " you need ssh and sudo privileges on that host" echo " echo " device: the disk to dump from e.g. sda" echo "" echo " examples: echo " $0 frodo.lotr.org sda" echo " $0 gandalf.lotr.org sdb" echo "" echo " the needed packages pv and qemu-utils will be installed if not available" echo " you need local sudo rights for this to work" exit 1 }

    check arguments

    if [ $# -lt 2 ] then usage fi

    get the command line parameters

    host="$1" disk="$2"

    calculate the names of the image files

    ts=date "+%Y-%m-%d"

    prefix of all images

    .gz the zipped dd

    .dd the disk dump file

    .vmware - the vmware disk file

    image="${host}_${disk}image$ts"

    echo "$0 $host/$disk -> $image"

    first check/install necessary packages

    opt_install qemu-img qemu-utils opt_install pv pv

    check if dd files was already loaded

    we don't want to start this tedious process twice if avoidable

    if [ ! -f $image.gz ] then getdump $host $disk $image.gz else echo "$image.gz already downloaded" fi

    check if the dd file was already uncompressed

    we don't want to start this tedious process twice if avoidable

    if [ ! -f $image.dd ] then echo "uncompressing $image.gz" zcat $image.gz | pv -cN zcat > $image.dd else echo "image $image.dd already uncompressed" fi

    check if the vmdk file was already converted

    we don't want to start this tedious process twice if avoidable

    if [ ! -f $image.vmdk ] then vmware_convert $image.dd $image.vmdk else echo "vmware image $image.vmdk already converted" fi

0 votes

Pour MacOS, vous pouvez remplacer apt-get install par sudo port install et à la place de qemu-utils vous avez besoin de qemu alors ...

0voto

labgeek Points 9

Juste pour vous donner une autre option, vous pouvez utiliser https://sourceforge.net/projects/dd2vmdk/ dd2vmdk est un programme *nix qui vous permet de monter des images disques brutes (créées par dd, dcfldd, dc3dd, ftk imager, etc) en prenant l'image brute, en analysant le master boot record (secteur physique 0), et en obtenant les informations spécifiques nécessaires à la création d'un fichier vmdk.

Personnellement, je pense que Qemu et les outils raw2vmdk de Zapotek sont les meilleures options pour convertir des dd en vmdks.

Divulgation : Je suis l'auteur de ce projet.

1 votes

À en juger par votre nom d'utilisateur et le nom de l'auteur de ce projet, il semble que ce soit votre travail. Veuillez divulguer votre affiliation, sinon ceci est considéré comme du spam. Lire Comment ne pas être un spammeur .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X