运行Windows XP的KVM虚拟机:如何从guest到主机获取文件?

时间:2011-11-17 17:00:30

标签: linux windows-xp qemu kvm

我正在运行Ubuntu 10.04,并在其上运行kvm / qemu。我创建了一个“原始”格式的存储设备,并在其上安装了XP,因此我假设该文件具有ntfs格式。我在主机上有一个我想要的XP虚拟机上的文件。它是2gig,所以我不能只使用一个zip驱动器或刻录到CD。

我尝试使用losetup挂载文件(winxp.img):

$ sudo losetup /dev/loop1 winxp.img
$ sudo losetup -a
/dev/loop1: [0801]:40637460 (/home/robert/kvm/images/winxp.img)
$ sudo mount -t ntfs /dev/loop1 /home/robert/kvm/images/tmp
NTFS signature is missing.
Failed to mount '/dev/loop1': Invalid argument
The device '/dev/loop1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

我认为这样可行。它没有。有没有人有另一个想法?

2 个答案:

答案 0 :(得分:3)

winxp.img和loop1不是单个分区(可以挂载),它是具有自己分区表的完整硬盘映像。

您应该使用fdisk从loop1读取分区表;计算第一个分区的偏移量并执行:

sudo mount -o offset=N -t ntfs /dev/loop1 /home/robert/kvm/images/tmp

其中N以字节为单位进行偏移。

上的心灵感应模式 N是32256 关闭心灵感应模式

最后,google模式开启(我将谷歌“偏移32256”):

http://en.wikibooks.org/wiki/QEMU/Images#Mounting_an_image_on_the_host

  

Linux和其他类Unix主机可以使用环回设备挂载使用原始格式类型创建的映像。从root登录(或使用sudo),安装偏移量为32,256的环回。

     

mount -o loop,offset=32256 /path/to/image.img /mnt/mountpoint

答案 1 :(得分:1)

在我看来,通用和正确的方法是通过libguestfs http://libguestfs.org/ 如果您掌握它,您可以打开任何格式的每个虚拟图像并获取文件甚至制作快照