2011-11-17 183 views
1

我正在运行Ubuntu 10.04,并在其上运行kvm/qemu。我用'raw'格式创建了一个存储设备,并在其上安装了XP,所以我认为该文件具有NTFS格式。我在主机上需要一个XP虚拟机上的文件。这是2gigs,所以我不能只使用zip驱动器或将其刻录到CD。运行Windows XP的KVM虚拟机:如何从guest虚拟机获取文件到主机?

我试图安装使用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? 

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

回答

3

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

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

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

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

Ñ心灵感应模式是32256 心灵感应模式关闭

,最后,在谷歌模式(我将谷歌 “偏移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

在我看来,通用的,正确的方法是通过libguestfs http://libguestfs.org/ 如果你掌握了它,你可以在任何格式打开每个虚拟形象,并得到文件,甚至使快照

相关问题