我有一些老的图像老Linux文件系统中的平文件的格式。他们可以使用由 柏核, 但是我需要跑他们 虚拟盒.虚拟箱无法使用的图像,在这种格式,所以我需要转换这些图像是从平面文件。虚拟机磁盘文件的格式。是否有任何方式做到这一点?

有帮助吗?

解决方案

apt-get install qemu(安装QEMU上于Debian / Ubuntu)

然后运行下面的命令: qemu-img convert -O vmdk imagefile.dd vmdkname.vmdk

我假设一个平坦的盘图像是DD风格图像。转换操作也处理许多其他格式。

其他提示

由于议题提到VirtualBox的,这一个工程目前:

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

无参数运行,等待几个有趣的细节(尤其是--variant标志):

VBoxManage convertfromraw

在窗,使用 https://github.com/Zapotek/raw2vmdk 以转换创建的原始文件通过DD或WINHEX到VMDK。 raw2vmdk v0.1.3.2有一个bug - 一旦创建了VMDK文件,编辑VMDK文件并修复路径原始文件(在我的情况,而不是d:所产生的\ Temp \ flash_16gb.raw(由WINHEX创建)路径是d:Tempflash_16gb.raw)。然后,在VMware虚拟机版本6.5-7(5.1被拒绝附加VMDK硬盘)打开它。 howgh!

回答TJJ: 但是它也可以这样做没有复制的整体的文件? 所以,只要以某种方式创建一个额外的虚拟机磁盘-元文件,引用原dd-图像。

是的, ,这是可能的。这里是如何使用平磁盘镜像在在开始:

首先,你创建一个图像与dd在通常的方式:

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

然后您可以创建一个文件,用于在开始引用了这个图像:

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

你可以使用这种图像在开始,但根据客户操作系统很可能不会立即可见。例如,我尝试使用这种方法与Windows客户操作系统,我不得不这样做以下要给它一个驱动的信:

  • 去控制面板。
  • 去管理工具。
  • 去计算机管理。
  • 进入存储\盘管理在左边面板。
  • 你会看到你的磁盘在这里。创建一个分区上和格式。使用脂肪的小卷,FAT32的大量。

你可能要访问你的文件在Linux。第一卸除它从客户操作系统可以肯定的是,把它从虚拟机。现在我们需要建立一个虚拟装置引用的分区。

sfdisk -d usbdrv.img

答复:

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

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

注意到起始位置的分区:63.在该命令下面我使用loop4,因为它是第一个提供环装置在我的情况。

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

答复:

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

耶!

//www.starwindsoftware: HTTP -

也许你应该尝试使用的StarWind V2V转换器,你可以从这里得到它.COM /转换器。它还支持IMG磁盘格式和无需对源图像的任何变化来执行扇区由IMG,VMDK或VHD之间扇区转换成并从它们中的任何。这个工具是免费:)

krosenvold的答案的启发下面脚本,并如下:

  • 获得dd转储通过ssh从远程服务器(作为gz文件)
  • 压缩的倾倒
  • 把这转换为vmware

脚本是可重新启动和检查的存在中间的文件。它还使用的光伏和这-img-p,以显示取得的进展的每一个步骤。

在我的环境2x Ubuntu12.04它采取的步骤:

  • 3小时得到47Gb的磁盘存储的60Gb分区
  • 20分钟的解到60Gb dd文件
  • 45分钟到创建文件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: $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

只是给你一个另一种选择,你可以使用 https://sourceforge.net/projects/dd2vmdk / 的为好。 dd2vmdk是一个基于* NIX的程序,它允许您安装原始磁盘映像通过取原始图像,分析该主引导记录(物理扇区0),并获得特定的(由DD,DCFLDD,dc3dd,FTK成像器等创建的)即需要建立一个VMDK文件的信息。

个人,海事组织的Qemu和Zapotek的raw2vmdk工具是最好的整体选择,DD转换为VMDK文件。

披露:我是这个项目的作者

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top