Comment convertir image disque brut plat en vmdk pour virtualbox ou vmplayer?

j'ai quelques vieilles images de vieux systèmes de fichiers Linux en format flat. ils peuvent être utilisés par Bochs , mais je dois les exécuter avec boîte virtuelle . Virtual Box ne peut pas utiliser des images dans ce format, donc je dois convertir ces images de fichier plat à .vmdk format de fichier. Est-il possible de faire cela?

54
demandé sur yourcomputergenius 2009-01-18 13:00:20

6 réponses

apt-get install qemu (installe QEMU sur debian/ubuntu)

exécutez alors la commande suivante: qemu-img convert -O vmdk imagefile.dd vmdkname.vmdk

je suppose qu'une image plate est une image de style dd. L'opération de conversion traite également de nombreux autres formats.

77
répondu krosenvold 2017-10-04 13:15:52

puisque la question mentionne VirtualBox, celui-ci fonctionne actuellement:

VBoxManage convertfromraw imagefile.dd vmdkname.vmdk --format VMDK

exécutez-le sans arguments pour quelques détails intéressants (notamment le drapeau --variant ):

VBoxManage convertfromraw
76
répondu Lloeki 2012-08-01 08:26:48

sur windows, utilisez https://github.com/Zapotek/raw2vmdk pour convertir des fichiers raw créés par dd ou winhex en vmdk. raw2vmdk v0.1.3.2 a un bug - une fois que le fichier vmdk est créé, éditez le fichier vmdk et fixez le chemin vers le fichier raw (dans mon cas au lieu de D:\Temp\flash_16gb.raw (créé par winhex) le chemin généré était D:Tempflash_16gb.brut.) Puis, ouvrez - le dans une machine virtuelle vmware version 6.5-7 (5.1 refusait de joindre le disque dur vmdk). howgh!

6
répondu xhafan 2011-04-07 23:22:24

pour répondre à TJJ: mais est-il également possible de le faire sans copier l'ensemble du fichier? donc, juste pour créer d'une façon ou d'une autre un VMDK-metafile supplémentaire, qui fait référence à l'image dd brute.

Oui , c'est possible. Voici comment utiliser une image de disque plate dans VirtualBox:

vous créez D'abord une image avec dd de la manière habituelle:

dd bs=512 count=60000 if=/dev/zero of=usbdrv.img

alors vous pouvez créer un fichier pour VirtualBox qui fait référence à cette image:

VBoxManage internalcommands createrawvmdk -filename "usbdrv.vmdk" -rawdisk "usbdrv.img"

vous pouvez utiliser cette image dans VirtualBox telle quelle, mais en fonction de l'OS invité elle pourrait ne pas être visible immédiatement. Par exemple, j'ai expérimenté sur l'utilisation de cette méthode avec un Windows guest OS et j'ai dû faire ce qui suit pour lui donner une lettre de lecteur:

  • aller au panneau de configuration.
  • allez à outils administratifs.
  • allez à Gestion Informatique.
  • aller à la gestion de stockage\Disque dans le panneau latéral gauche.
  • , Vous verrez votre disque ici. Créer une partition et la formater. Utilisez la graisse pour les petits volumes, FAT32 ou NTFS pour les gros volumes.

vous pourriez vouloir accéder à vos fichiers sous Linux. Tout d'abord, démontez-le de l'OS invité pour être sûr et retirez-le de la machine virtuelle. Maintenant, nous devons créer un périphérique virtuel qui renvoie à la partition.

sfdisk -d usbdrv.img

réponse:

label: dos
label-id: 0xd367a714
device: usbdrv.img
unit: sectors

usbdrv.img1 : start=          63, size=       48132, type=4

prenez note de la position de départ de la partition: 63. Dans la commande ci-dessous, j'ai utilisé loop4 parce que c'était le premier périphérique de boucle disponible dans mon cas.

sudo losetup -o $((63*512)) loop4 usbdrv.img
mkdir usbdrv
sudo mount /dev/loop4 usbdrv
ls usbdrv -l

réponse:

total 0
-rwxr-xr-x. 1 root root 0 Apr  5 17:13 'Test file.txt'

Yay!

2
répondu Anonymous 2018-04-05 21:46:01

peut - être que vous devriez essayer D'utiliser Starwind V2V convertisseur, vous pouvez l'obtenir d'ici - http://www.starwindsoftware.com/converter . Il prend également en charge le format de disque IMG et effectue la conversion secteur par secteur entre IMG, VMDK ou VHD dans et à partir de l'un d'eux sans faire de changements à l'image source. Cet outil est gratuit:)

1
répondu 2009-07-27 08:44:18

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

  • obtenir le dd dump via ssh sur un serveur distant (en tant que fichier gz)
  • décompresser le dump
  • convertissez - le en vmware

le script peut être redémarré 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 mesures prises:

  • 3 heures pour obtenir un dump disque de 47 Go d'une partition de 60 Go
  • 20 minutes pour décompresser un 60 Go dd fichier
  • 45 minutes pour créer le fichier vmware
#!/bin/bash
# get a dd disk dump and convert it to vmware
#  see /q/how-to-convert-flat-raw-disk-image-to-vmdk-for-virtualbox-or-vmplayer-27294/""
  local l_disk=""
  local l_target=""
  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=""
  l_package=""
  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=""
  local l_vmwareimage=""
  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: " 151900920" 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 "       " 151900920" frodo.lotr.org sda"
  echo "       " 151900920" 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=""
disk=""

# 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 "" 151900920" $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
1
répondu Wolfgang Fahl 2014-10-19 09:07:50