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

Linux 运行Windows XP的KVM虚拟机:如何从来宾到主机获取文件?,linux,windows-xp,qemu,kvm,Linux,Windows Xp,Qemu,Kvm,我运行的是Ubuntu10.04,上面有kvm/qemu。我创建了一个具有“原始”格式的存储设备,并在其上安装了XP,因此我假设该文件具有ntfs格式。我在XP虚拟机上有一个我想要在主机上的文件。它是2gigs,所以我不能只使用zip驱动器或将其刻录到CD 我尝试使用losetup挂载文件(winxp.img): $ sudo losetup /dev/loop1 winxp.img $ sudo losetup -a /dev/loop1: [0801]:40637460 (/home/rob

我运行的是Ubuntu10.04,上面有kvm/qemu。我创建了一个具有“原始”格式的存储设备,并在其上安装了XP,因此我假设该文件具有ntfs格式。我在XP虚拟机上有一个我想要在主机上的文件。它是2gigs,所以我不能只使用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?

我想那会管用的。没有。有人有其他想法吗?

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

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

sudo mount -o offset=N -t ntfs /dev/loop1 /home/robert/kvm/images/tmp
其中N是偏移量,以字节为单位

远程感应模式 N是32256 心灵感应模式关闭

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

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

mount-o循环,偏移量=32256/path/to/image.img/mnt/mountpoint


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