플랫 원시 디스크 이미지를 virtualbox 또는 vmplayer 용 vmdk로 변환하는 방법은 무엇입니까?
플랫 파일 형식의 오래된 Linux 파일 시스템의 오래된 이미지가 있습니다. Bochs 에서 사용할 수 있지만 Virtual Box 로 실행해야합니다 . Virtual Box는이 형식의 이미지를 사용할 수 없으므로 이러한 이미지를 플랫 파일에서 .vmdk 파일 형식으로 변환해야합니다. 이렇게 할 수있는 방법이 있습니까?
apt-get install qemu
(debian / ubuntu에 QEMU 설치)
그런 다음 다음 명령을 실행하십시오. qemu-img convert -O vmdk imagefile.dd vmdkname.vmdk
플랫 디스크 이미지가 dd 스타일 이미지라고 가정하고 있습니다. 변환 작업은 다른 여러 형식도 처리합니다.
질문에 VirtualBox가 언급되어 있으므로 현재 작동합니다.
VBoxManage convertfromraw imagefile.dd vmdkname.vmdk --format VMDK
몇 가지 흥미로운 세부 사항 (특히 --variant
플래그)에 대한 인수없이 실행하십시오 .
VBoxManage convertfromraw
Windows에서는 https://github.com/Zapotek/raw2vmdk 를 사용 하여 dd 또는 winhex에서 만든 원시 파일을 vmdk로 변환합니다. raw2vmdk v0.1.3.2에는 버그가 있습니다. vmdk 파일이 생성되면 vmdk 파일을 편집하고 원시 파일의 경로를 수정합니다 (내 경우에는 D : \ Temp \ flash_16gb.raw (winhex에서 생성) 대신). 경로는 D : Tempflash_16gb.raw)입니다. 그런 다음 vmware 가상 머신 버전 6.5-7 (5.1은 vmdk 하드 드라이브 연결을 거부 함)에서 엽니 다. 안녕!
TJJ에게 대답하려면 : 하지만 전체 파일을 복사하지 않고도이 작업을 수행 할 수 있습니까? 따라서 어떻게 든 원시 dd-image를 참조하는 추가 vmdk-metafile을 만듭니다.
예 , 가능합니다. VirtualBox에서 플랫 디스크 이미지를 사용하는 방법은 다음과 같습니다.
먼저 일반적인 방법으로 dd를 사용하여 이미지를 만듭니다.
dd bs=512 count=60000 if=/dev/zero of=usbdrv.img
그런 다음이 이미지를 참조하는 VirtualBox 용 파일을 만들 수 있습니다.
VBoxManage internalcommands createrawvmdk -filename "usbdrv.vmdk" -rawdisk "usbdrv.img"
VirtualBox에서이 이미지를 그대로 사용할 수 있지만 게스트 OS에 따라 즉시 표시되지 않을 수 있습니다. 예를 들어, Windows 게스트 OS에서이 방법을 사용해 보았는데 드라이브 문자를 제공하기 위해 다음을 수행해야했습니다.
- 제어판으로 이동하십시오.
- 관리 도구로 이동합니다.
- 컴퓨터 관리로 이동합니다.
- 왼쪽 패널에서 Storage \ Disk Management로 이동합니다.
- 여기에 디스크가 표시됩니다. 그것에 파티션을 만들고 포맷하십시오. 작은 볼륨에는 FAT를, 큰 볼륨에는 FAT32 또는 NTFS를 사용하십시오.
Linux에서 파일에 액세스 할 수 있습니다. 먼저 게스트 OS에서 분리하여 가상 머신에서 제거하십시오. 이제 파티션을 참조하는 가상 장치를 만들어야합니다.
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'
예이!
Starwind V2V 변환기를 사용해 보시면 http://www.starwindsoftware.com/converter 에서 다운로드 할 수 있습니다 . 또한 IMG 디스크 형식을 지원하고 소스 이미지를 변경하지 않고 IMG, VMDK 또는 VHD간에 섹터 별 변환을 수행합니다. 이 도구는 무료입니다. :)
krosenvold의 답변은 다음을 수행하는 다음 스크립트에 영감을주었습니다.
- 원격 서버에서 ssh를 통해 dd 덤프를 가져옵니다 (gz 파일로).
- 덤프 압축을 풀다
- vmware로 변환
스크립트를 다시 시작할 수 있으며 중간 파일이 있는지 확인합니다. 또한 pv 및 qemu-img -p를 사용하여 각 단계의 진행 상황을 표시합니다.
내 환경 2 x Ubuntu 12.04 LTS에서 단계가 수행되었습니다.
- 60GB 파티션의 47GB 디스크 덤프를 얻는 데 3 시간이 걸립니다.
- 60GB dd 파일로 압축을 푸는 데 20 분
- vmware 파일 생성에 45 분
#!/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는 원시 이미지를 가져 와서 마스터 부트 레코드 (물리적 섹터 0)를 분석하고 특정 정보를 가져 와서 원시 디스크 이미지 (dd, dcfldd, dc3dd, ftk 이미 저 등으로 생성)를 마운트 할 수있는 * nix 기반 프로그램입니다. vmdk 파일을 만드는 데 필요한 정보.
개인적으로 imo Qemu와 Zapotek의 raw2vmdk 도구는 dd를 vmdks로 변환하는 가장 좋은 전체 옵션입니다.
공개 : 나는이 프로젝트의 저자입니다.
'UFO ET IT' 카테고리의 다른 글
JDK 1.8 (C : \…)에 연결된 IDEA 주석이 없습니다. 일부 문제가 발견되지 않습니다. (0) | 2020.12.02 |
---|---|
NSData 및 UIImage (0) | 2020.12.02 |
UIGestureRecognizer에 기존 터치를 취소하도록 어떻게 알릴 수 있습니까? (0) | 2020.12.02 |
파일 문서를 프린터로 보내고 인쇄하려면 어떻게해야합니까? (0) | 2020.12.02 |
서랍 레이아웃을 왼쪽으로하여 메인 콘텐츠를 이동하는 방법 (0) | 2020.12.02 |