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?

War es hilfreich?

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top