linux - KVM 运行 Windows XP 的虚拟机 : How to get files from guest to host?

标签 linux windows-xp qemu kvm

我正在运行 Ubuntu 10.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 关闭心灵感应模式

最后,打开谷歌模式(我将用谷歌搜索“offset 32​​256”):

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

Linux and other Unix-like hosts can mount images created with the raw format type using a loopback device. From a root login (or using sudo), mount a loopback with an offset of 32,256.

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

关于linux - KVM 运行 Windows XP 的虚拟机 : How to get files from guest to host?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171179/

相关文章:

linux - 在基于 Bluez 的面向 GATT 的应用程序中更改连接间隔

linux - 我的 Linux 开发人员如何将代码 checkin 到我的 Visual Studio Team System 项目中?

python - 无法在Python中导入GoogleMaps

python - 我在 1and1 上的 python 安装停止工作(bashrc 问题)

windows-xp - 我在 XP 上创建的应用程序无法在 Windows 7 上运行

windows - Windows XP 和 Vista+ 中 %ALLUSERSPROFILE% 的差异

c# - 是否可以在 Windows CE 平台上运行我的 Windows 窗体应用程序?

android - 在 qemu-arm 中运行 Android 应用程序?

linux - 在 ubuntu 中安装 qemu?显示一些错误

c - 使用libvirt API在C程序中获取KVM虚拟机域名