我知道这个问题以前被问过很多次了,应该很简单。我想我已经很接近了,但我肯定做错了什么。
这是我第一次使用 QEMU,我真的很挣扎。我正在使用 virt manager 来托管 windows 7,并尝试从 MX Linux 获取文件。首先,我尝试从 windows VM 上的 github 下载一些东西,以便它可以识别 linux 文件(可能是 winfsp 或其他东西,我没有搜索历史记录)。
然后我遇到了第一个障碍:
Windows 只安装了 Internet Explorer,我几乎无法查看任何页面,我无法在 VM 上下载 chrome、chromium、firefox 或 brave。我尝试使用 USB 棒在 VM 中加载文件,但我也没有成功。我放弃了在客户 VM 上从互联网下载任何东西的尝试。我决定不将 Linux 文件传递给 Windows,而是尝试将 Linux 上的 Windows 文件传递给 Windows 客户机-
最后我有点粗略,但我使用 fdisk 在我的 nvme 驱动器上创建了一个 NTFS 然后是 exFAT 8mb 分区,然后是 mkfs.ntsf,当这不起作用时,mkfs.exfat 也没有成功。我不太明白“标签名称”(如“共享”)是什么意思,这会成为 Windows VM 中的驱动器名称吗?我的粗略方法是sudo mount -t virtiofs shared /dev/nvme0n1p4
在 virt 管理器中添加一个硬件 > 文件系统:我尝试了驱动程序= 安装,模式我尝试了不少,如 squich 和 passthrough,对于源路径我尝试了“/dev/nvme0n1p4”,我还尝试了“/media/1toneboy/352D-156E/test 文件夹”,对于目标路径我将其称为“共享”
但是当我启动虚拟机时,它说(抱歉,我不在家,我不知道确切的措辞)错误:文件类型错误,超级块....权限被拒绝
在将 NTFS 或 exfat 分区传递给虚拟机时,我是否做错了什么?有没有更简单的文件传输方法?
非常感谢!
您混淆了两个完全不同的特征。
此功能不用于将分区传递给 VM。它用于传递文件夹或分区的内容。其工作原理类似于网络文件共享 - VM 使用网络协议(FUSE 协议的改编)与主机通信以访问单个文件,并且完全不知道底层使用的实际文件系统。换句话说,“共享文件系统”功能类似于通过 FTP 或 HTTP 提供文件。
因此,
mount -t virtiofs
可以在客户机上通过 VirtioFS 访问该共享文件夹 - 这就是“标签”发挥作用的地方 - 而在主机上,您需要使用它实际包含的任何文件系统来挂载该分区(例如-t exfat
exFAT 分区)。(但要明确的是,由于客户机只处理文件和文件夹,而不是原始文件系统,因此您不需要对VirtioFS 方法使用 NTFS 或 exFAT——您可以共享任何文件系统中的任何文件夹,例如“/home/1tone/shared”,没有必要为此创建专用分区。)
但是,您只能在支持 VirtioFS(或较旧的 9p)的客户机上使用此方法。Windows 需要VirtioFS 的第三方驱动程序。理论上它应该具有原生 9p 支持(它将其用于 WSL),但我不确定是否可以从客户机端使用它。
因此,除了上述这些,您可能还希望将实际内容传递
/dev/nvme0n1p4
给虚拟机 - 但您需要将其作为附加“磁盘”(块设备)传递,而不是“文件系统”。在这种情况下,它确实需要是 NTFS 或 exFAT 或 Windows 可以理解的其他格式,并且在这种情况下,必须在启动客户机之前将其从主机上卸载。