Question

J'ai d'anciennes images d'anciens systèmes de fichiers Linux au format de fichier plat. ils peuvent être utilisés par Bochs , mais je dois les exécuter avec Boîte virtuelle . Virtual Box ne peut pas utiliser les images dans ce format, je dois donc convertir ces images d'un fichier à plat au format de fichier .vmdk. Y a-t-il un moyen de le faire?

Était-ce utile?

La solution

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

Ensuite, exécutez la commande suivante: qemu-img convertir -O vmdk imagefile.dd vmdkname.vmdk

Je suppose qu'une image de disque plat est une image de style DD. L’opération de conversion gère également de nombreux autres formats.

Autres conseils

Puisque la question mentionne VirtualBox, celle-ci fonctionne actuellement:

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

Exécutez-le sans arguments pour quelques détails intéressants (notamment l'indicateur - variant ):

VBoxManage convertfromraw

Sous Windows, utilisez https://github.com/Zapotek/raw2vmdk pour convertir les fichiers bruts créés. par dd ou winhex à vmdk. raw2vmdk v0.1.3.2 a un bogue - une fois le fichier vmdk créé, modifiez-le et fixez le chemin d'accès au fichier brut (dans mon cas, à la place de D: \ Temp \ flash_16gb.raw (créé par winhex), le fichier généré. le chemin était D: Tempflash_16gb.raw). Ensuite, ouvrez-le dans une machine virtuelle vmware version 6.5-7 (5.1 refusant de connecter le disque dur vmdk). howgh!

Pour répondre à TJJ: Mais est-il également possible de le faire sans copier le fichier en entier? . Il vous suffit donc de créer un vmdk-metafile supplémentaire, qui référence le dd-image brut.

Oui , c'est possible. Voici comment utiliser une image de disque plat 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

Vous pouvez ensuite créer un fichier pour VirtualBox qui référence cette image:

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

Vous pouvez utiliser cette image dans VirtualBox telle quelle, mais selon le système d'exploitation invité, il est possible qu'elle ne soit pas visible immédiatement. Par exemple, j’ai essayé d’utiliser cette méthode avec un système d’exploitation invité Windows et je devais procéder comme suit pour lui attribuer une lettre de lecteur:

  • Accédez au Panneau de configuration.
  • Accédez aux outils d'administration.
  • Accédez à Gestion de l'ordinateur.
  • Accédez à Stockage \ Gestion des disques dans le panneau de gauche.
  • Vous verrez votre disque ici. Créez une partition dessus et formatez-la. Utilisez FAT pour les petits volumes, FAT32 ou NTFS pour les gros.

Vous voudrez peut-être accéder à vos fichiers sous Linux. Commencez par le démonter de l'OS invité pour en être sûr et supprimez-le de la machine virtuelle. Nous devons maintenant créer un périphérique virtuel qui référence 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 car 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'

Oui!

Peut-être devriez-vous essayer d'utiliser Starwind V2V Converter, vous pouvez l'obtenir à partir d'ici - http: //www.starwindsoftware .com / convertisseur . Il prend également en charge le format de disque IMG et effectue une conversion secteur par secteur entre IMG, VMDK ou VHD vers et depuis n’importe lequel d’eux, sans apporter aucune modification à l’image source. Cet outil est gratuit :)

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

  • récupère le dd dump via ssh depuis un serveur distant (sous forme de fichier gz)
  • décompressez 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 afficher la progression de chaque étape.

Dans mon environnement, 2 x Ubuntu 12.04 LTS, les étapes ont été suivies:

  • 3 heures pour obtenir un dump de disque de 47 Go d’une partition de 60 Go
  • 20 minutes pour décompresser dans 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: <*> 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 "       <*> frodo.lotr.org sda"
  echo "       <*> 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 "<*> $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

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

Personnellement, imo Qemu et les outils raw2vmdk de Zapotek sont les meilleures options globales pour convertir dd en vmdks.

Divulgation: je suis l'auteur de ce projet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top