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?
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.
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
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!
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!
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:)
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