Pergunta

Eu tenho algumas imagens antigas de sistemas de arquivos Linux antigos em formato de arquivo simples. eles podem ser usados ??por Bochs , mas eu preciso para executá-los com Virtual Box . Virtual Box não pode usar imagens neste formato, então eu preciso para converter estas imagens de arquivo simples para o formato de arquivo .vmdk. Existe alguma maneira de fazer isso?

Foi útil?

Solução

apt-get install qemu (instalações QEMU no Debian / Ubuntu)

Em seguida, execute o seguinte comando: qemu-img convert -O vmdk imagefile.dd vmdkname.vmdk

Estou assumindo uma imagem de disco plano é uma imagem de estilo dd. A operação de conversão também lida com vários outros formatos.

Outras dicas

Uma vez que a questão menciona VirtualBox, este funciona atualmente:

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

executá-lo sem argumentos para alguns detalhes interessantes (nomeadamente a bandeira --variant):

VBoxManage convertfromraw

No Windows, usar https://github.com/Zapotek/raw2vmdk para converter arquivos raw criados por dd ou WinHex para VMDK. v0.1.3.2 raw2vmdk tem um bug - uma vez que o arquivo vmdk é criado, editar o arquivo vmdk e corrigir o caminho para o arquivo raw (no meu caso, em vez de D: \ Temp \ flash_16gb.raw (criado por WinHex) o gerado caminho foi a D: Tempflash_16gb.raw). Em seguida, abri-lo em uma versão da máquina virtual VMware 6,5-7 (5.1 foi recusando-se a fixar o disco rígido vmdk). howgh!

Para responder TJJ: Mas é também possível fazer isso sem copiar o arquivo inteiro Assim, apenas para de alguma forma criar um vmdk-metarquivo adicional, que as referências a imagem-dd-primas

Sim , é possível. Veja como usar uma imagem plana de disco no VirtualBox:

Primeiro você cria uma imagem com dd da forma habitual:

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

Em seguida, você pode criar um arquivo para VirtualBox que as referências esta imagem:

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

Você pode usar essa imagem no VirtualBox como é, mas, dependendo do sistema operacional convidado pode não ser visível imediatamente. Por exemplo, eu experimentei em usar este método com um sistema operacional Windows de hóspedes e eu tinha que fazer o seguinte para dar-lhe uma letra de unidade:

  • Vá para o Painel de Controle.
  • Vá para Ferramentas administrativas.
  • Vá para Gerenciamento do computador.
  • Vá para Storage \ Gerenciamento de disco no painel do lado esquerdo.
  • Você verá o disco aqui. Criar uma partição nele e formatá-lo. Use FAT para pequenos volumes, FAT32 ou NTFS para grandes volumes.

Você pode querer acessar seus arquivos no Linux. Primeiro desmontá-lo a partir do sistema operacional convidado para ter certeza e retire-o da máquina virtual. Agora precisamos criar um dispositivo virtual que referências a partição.

sfdisk -d usbdrv.img

Resposta:

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

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

Tome nota da posição inicial da partição:. 63. No comando abaixo eu usei Laco4 porque era o primeiro dispositivo de loop disponíveis no meu caso

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

Resposta:

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

Yay!

Talvez você deve tentar usar Starwind V2V Converter, você pode obtê-lo aqui - http: //www.starwindsoftware .com / conversor . Ele também suporta o formato de disco IMG e executa sector por conversão setor entre IMG, VMDK ou VHD de e para qualquer um deles sem fazer quaisquer alterações imagem de origem para. Esta ferramenta é gratuita:)

resposta

O krosenvold inspirou o seguinte script que faz o seguinte:

  • obter o despejo dd via ssh a partir de um servidor remoto (como arquivo gz)
  • Descompacte o despejo
  • convertê-lo para vmware

o script é restartable e verifica a existência dos arquivos intermediários. Ele também usa pv e qemu-img -p para mostrar o progresso de cada etapa.

No meu ambiente 2 x Ubuntu 12.04 LTS os passos levou:

  • 3 horas para obter um despejo de disco 47 GByte de 60 partição GByte
  • 20 minutos para descompactar um arquivo dd 60 GByte
  • 45 minutos para criar o arquivo 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

Apenas para lhe dar uma outra opção, você pode usar https://sourceforge.net/projects/dd2vmdk / bem. dd2vmdk é um programa * baseada nix que lhe permite montar imagens de disco raw (criado por dd, dcfldd, dc3dd, imager ftk, etc), tendo a imagem crua, analisando o registro mestre de inicialização (setor físico 0), e ficando específica informação que é preciso criar um arquivo vmdk.

Pessoalmente, imo Qemu e ferramentas raw2vmdk do Zapotek são as melhores opções gerais para converter dd para vmdks.

Divulgação:. Eu sou o autor deste projeto

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top