lost and found ( for me ? )

can't convert VMWare Server's VM image(vmdk) into KVM's image...

VMWare Server 2 で作成した Win XP Pro のイメージを KVM 用に変換してみた。。
が、うまくできん。。

[root@arizona vmware_vmdk_xp]# cat /etc/redhat-release
Fedora release 11 (Leonidas)

[root@arizona vmware_vmdk_xp]# uname -r
2.6.29.6-217.2.8.fc11.i686.PAE

KVM のバージョン:

qemu-kvm-0.10.6-1.fc11.i586
libvirt-0.6.2-14.fc11.i586

python-virtinst ってパッケージに クローン作成や、コンバーターがある。

[root@arizona vmware_vmdk_xp]# rpm -ql python-virtinst-0.400.3-8.fc11.noarch | grep bin
/usr/bin/virt-clone
/usr/bin/virt-convert
/usr/bin/virt-image
/usr/bin/virt-install
/usr/sbin/virt-install

VMWare Server 2 で作成したイメージなどを、KVMマシンにコピー。とりあえず、全部コピーした。

[root@arizona vmware_vmdk_xp]# file *
vmware.log: UTF-8 Unicode English text, with very long lines, with CRLF line terminators
winxppro.nvram: VMware nvram
winxppro.vmdk: VMware4 disk image
winxppro.vmsd: empty
winxppro.vmx: ASCII text, with CRLF line terminators
winxppro.vmxf: XML document text

qcow2 ディスクフォーマット指定するとエラーになるなー。
[root@arizona ~]# virt-convert --hvm --arch=i686 --os-variant=winxp -i vmx -o virt-image -D qcow2 -d vmware_vmdk_xp/winxppro.vmx kvm_image_xp
Usage: virt-convert [options] inputdir|input.vmx [outputdir|output.xml]

virt-convert: error: Unknown output disk format "qcow2"
[root@arizona ~]#

[root@arizona ~]#
[root@arizona ~]# virt-convert --hvm --arch=i686 --os-variant=winxp -d -i vmx -o virt-image -d vmware_vmdk_xp/ kvm_image_xp/
/usr/lib/python2.6/site-packages/virtconv/diskcfg.py:21: DeprecationWarning: The popen2 module is deprecated. Use the subprocess module.
import popen2
水, 19 8月 2009 02:30:50 DEBUG Creating directory kvm_image_xp/
水, 19 8月 2009 02:30:50 DEBUG input_file: vmware_vmdk_xp/winxppro.vmx
水, 19 8月 2009 02:30:50 DEBUG input_dir: vmware_vmdk_xp/
水, 19 8月 2009 02:30:50 DEBUG output_file: kvm_image_xp/winxppro.virt-image.xml
水, 19 8月 2009 02:30:50 DEBUG output_dir: vmware_vmdk_xp/
Generating output in 'virt-image' format to kvm_image_xp//
Converting disk 'winxppro.vmdk' to type raw...
Done.
[root@arizona ~]#

raw フォーマットでトライ。

[root@arizona ~]# virt-convert --hvm --arch=i686 --os-variant=winxp -i vmx -o virt-image -D raw -d vmware_vmdk_xp/winxppro.vmx kvm_image_xp
Generating output in 'virt-image' format to kvm_image_xp/
Converting disk 'winxppro.vmdk' to type raw...
Done.
[root@arizona ~]#

[root@arizona ~]# cd kvm_image_xp/
[root@arizona kvm_image_xp]# ls
winxppro.raw winxppro.virt-image.xml

[root@arizona kvm_image_xp]# file winxppro.raw
winxppro.raw: x86 boot sector, Microsoft Windows XP MBR, Serial 0x513c513b; partition 1: ID=0x7, active, starthead 1, startsector 63, 16755732 sectors, code offset 0xc0

[root@arizona ~]# virsh -c qemu:///system define kvm_image_xp/winxppro.virt-image.xml
エラー: kvm_image_xp/winxppro.virt-image.xml からのドメイン定義に失敗しました
エラー: internal error incorrect root element

むむ、ドメイン定義に失敗

xmlはむしして、virt-install で image を import してみよう。

man virt-install 抜粋

Create a guest from an existing disk image ’mydisk.img’ using defaults
for the rest of the options.

# virt-install \
--name demo
--ram 512
--disk path=/home/user/VMs/mydisk.img
--import


[root@arizona ~]# virt-install --name demo --ram 512 --disk path=kvm_image_xp/winxppro.raw --import
Traceback (most recent call last):
File "/usr/lib/python2.6/logging/handlers.py", line 74, in emit
if self.shouldRollover(record):
File "/usr/lib/python2.6/logging/handlers.py", line 145, in shouldRollover
msg = "%s\n" % self.format(record)
File "/usr/lib/python2.6/logging/__init__.py", line 637, in format
return fmt.format(record)
File "/usr/lib/python2.6/logging/__init__.py", line 428, in format
s = self._fmt % record.__dict__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 1: ordinal not in range(128)


インストールを開始しています...
ゲストのインストールが完了しました... ゲストを再起動しています。

うーん、起動しない。。 Booting from hard disk ... で止まる。。



qemu-img コマンドでコンバートしてみるかー。

convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename
Convert the disk image filename to disk image output_filename using
format output_fmt. It can be optionally encrypted ("-e" option) or
compressed ("-c" option).


[root@arizona vmware_vmdk_xp]# qemu-img convert -f vmdk winxppro.vmdk -O qcow2 winxppro.qemu-img.img

[root@arizona vmware_vmdk_xp]# file winxppro.qemu-img.img
winxppro.qemu-img.img: Qemu Image, Format: Qcow , Version: 2

ちなみに、KVM上で作成したイメージは:

[root@arizona vmware_vmdk_xp]# file /var/lib/libvirt/images/win2003R2.img
/var/lib/libvirt/images/win2003R2.img: x86 boot sector, Microsoft Windows XP MBR, Serial 0x1110111; partition 1: ID=0x7, active, starthead 1, startsector 63, 16755732 sectors, code offset 0xc0

[root@arizona vmware_vmdk_xp]# virt-install --name aaa --ram 512 --disk path=winxppro.qemu-img.img --import
Traceback (most recent call last):
File "/usr/lib/python2.6/logging/handlers.py", line 74, in emit
if self.shouldRollover(record):
File "/usr/lib/python2.6/logging/handlers.py", line 145, in shouldRollover
msg = "%s\n" % self.format(record)
File "/usr/lib/python2.6/logging/__init__.py", line 637, in format
return fmt.format(record)
File "/usr/lib/python2.6/logging/__init__.py", line 428, in format
s = self._fmt % record.__dict__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 1: ordinal not in range(128)


インストールを開始しています...
ゲストのインストールが完了しました... ゲストを再起動しています。

だめだー。。raw にしてみよう。。

[root@arizona vmware_vmdk_xp]# qemu-img convert -f vmdk winxppro.vmdk -O raw winxppro.qemu-img.raw

[root@arizona vmware_vmdk_xp]# file *.raw
winxppro.qemu-img.raw: x86 boot sector, Microsoft Windows XP MBR, Serial 0x513c513b; partition 1: ID=0x7, active, starthead 1, startsector 63, 16755732 sectors, code offset 0xc0

boot sector とかの情報がでているのでいけるかー。

[root@arizona vmware_vmdk_xp]# virt-install --name zzz --ram 512 --arch=i686 --os-variant=winxp --disk path=winxppro.qemu-img.img --import

ブルースクリーンになるなー。
うーん、、、google であとで調べてみよう。。( google を verb として使うと、I will google how to convert vmdk into KVM's image って感じ ?? )


Steve Vai の Glorious いいなー。。。すげーぞ、Vai 。
Firewall とかもいい :D

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.