Wie flach Raw-Disk-Image konvertieren für Virtualbox oder vmplayer in VMDK-?
-
19-08-2019 - |
Frage
Ich habe einige alte Bilder von alten Linux-Dateisysteme in Flat-File-Format. sie können von Bochs verwendet werden, aber ich brauche sie mit Virtual Box . Virtual Box können keine Bilder in diesem Format verwenden, so muss ich diese Bilder von Flat-Datei konvertieren Dateiformat VMDK. Gibt es eine Möglichkeit, dies zu tun?
Lösung
apt-get install qemu
(installiert QEMU auf Debian / Ubuntu)
Dann den folgenden Befehl ausführen:
qemu-img convert -O vmdk imagefile.dd vmdkname.vmdk
Ich bin ein flaches Disk-Image unter der Annahme ist ein dd-Stil Bild. Die Umwandlungsoperation behandelt auch zahlreiche andere Formate.
Andere Tipps
Da die Frage VirtualBox erwähnt, diese funktioniert zur Zeit:
VBoxManage convertfromraw imagefile.dd vmdkname.vmdk --format VMDK
Führen Sie es ohne Argumente für ein paar interessanten Details (vor allem der --variant
flag):
VBoxManage convertfromraw
Unter Windows können Sie https://github.com/Zapotek/raw2vmdk Raw-Dateien konvertieren erstellt dd oder winhex in VMDK-. raw2vmdk v0.1.3.2 hat einen Bug - sobald die VMDK-Datei erstellt wird, die VMDK-Datei bearbeiten und den Pfad der RAW-Datei (in meinem Fall statt D beheben: \ Temp \ flash_16gb.raw (von winhex erstellt) die erzeugte Weg war D: Tempflash_16gb.raw). Dann öffnen Sie es in einer virtuellen VMware-Maschine-Version 6.5-7 (5.1 wurde die Ablehnung der VMDK Festplatte zu befestigen). Howgh!
Um TJJ zu antworten: Aber ist es auch möglich, dies zu tun, ohne die gesamte Datei kopieren Also, nur um irgendwie ein zusätzliches VMDK-Metafile zu erstellen, die das rohe dd-Bild verweist ?. p>
Ja , es ist möglich. Hier ist, wie eine flache Scheibe Bild in VirtualBox verwenden:
Zuerst Sie ein Bild mit dd in der üblichen Art und Weise erstellen:
dd bs=512 count=60000 if=/dev/zero of=usbdrv.img
Dann können Sie eine Datei für VirtualBox erstellen, die dieses Bild verweist:
VBoxManage internalcommands createrawvmdk -filename "usbdrv.vmdk" -rawdisk "usbdrv.img"
Sie können dieses Bild in VirtualBox verwenden wie es ist, aber je nach Gastbetriebssystem kann es nicht sofort sichtbar sein. Zum Beispiel experimentierte ich diese Methode mit einem OS Windows-Gast zur Verwendung und ich hatte folgendes zu tun es einen Laufwerksbuchstaben zu geben:
- Gehen Sie zur Systemsteuerung. Gehen Sie
- Sie auf Verwaltung. Gehen Sie
- Computerverwaltung.
- Zum Storage \ Disk Management in der linken Seitenwand.
- Sie werden Ihre Festplatte hier sehen. Erstellen Sie eine Partition auf sie und formatieren Sie es. Verwenden Sie FAT für kleine Volumina, FAT32 oder NTFS für große Volumina.
Vielleicht möchten Sie Ihre Dateien auf Linux zugreifen. Zuerst absteigen es aus dem Gast-Betriebssystem sicher zu sein, und es von der virtuellen Maschine entfernen. Jetzt brauchen wir ein virtuelles Gerät erstellen, die die Partition verweist.
sfdisk -d usbdrv.img
Antwort:
label: dos
label-id: 0xd367a714
device: usbdrv.img
unit: sectors
usbdrv.img1 : start= 63, size= 48132, type=4
Beachten Sie die Startposition der Partition. 63. Im folgenden Befehl I LOOP4 verwendet, weil es das erste verfügbare Loop-Gerät in meinem Fall war
sudo losetup -o $((63*512)) loop4 usbdrv.img
mkdir usbdrv
sudo mount /dev/loop4 usbdrv
ls usbdrv -l
Antwort:
total 0
-rwxr-xr-x. 1 root root 0 Apr 5 17:13 'Test file.txt'
Yay!
Vielleicht sollten Sie versuchen, Starwind V2V Converter verwenden, können Sie es von hier - http: //www.starwindsoftware .com / Konverter . Es unterstützt auch IMG Plattenformat und führt eine Sektor-für-Sektor-Konvertierung zwischen IMG, VMDK- oder VHD in und von einem von ihnen, ohne Änderungen vorzunehmen, um Quellbild. Dieses Tool ist kostenlos:)
krosenvold Antwort inspiriert Sie das folgende Skript, das macht folgendes:
- erhält den dd-Dump über ssh von einem entfernten Server (als gz-Datei)
- entpacken Sie die Dump
- wandeln es in vmware
das Skript anlauffähigen und überprüft die Existenz der Zwischendateien. Es nutzt auch pv und qemu-img -p den Fortschritt der einzelnen Schritte zu zeigen.
In meiner Umgebung 2 x Ubuntu 12.04 LTS die Schritte unternommen haben:
- 3 Stunden ein 47 GByte Festplattenabbild einer 60 GByte-Partition bekommen
- 20 Minuten zu einer 60 GByte dd Datei auspacken
- 45 Minuten die vmware-Datei erstellen
#!/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
Nur um Ihnen eine weitere Möglichkeit zu geben, könnten Sie https://sourceforge.net/projects/dd2vmdk / als auch . dd2vmdk ist ein * nichts-basiertes Programm, mit rohem Disk-Images mounten (dd erstellt, dcfldd, dc3dd, FTK Imager, usw.) durch die rohe Bildaufnahme, Analyse des Master Boot Record (physischer Sektor 0), und immer spezifischen Informationen, die eine vMDK-Datei zu erstellen ist benötigen.
Persönlich imo Qemu und die raw2vmdk-Tools Zapotek sind die besten Gesamt-Optionen dd vmdks zu konvertieren.
Disclosure:. Ich bin der Autor dieses Projekts