如何将 WSL2 中存储的文件夹同步到 VirtualBox 客户机?

如何将 WSL2 中存储的文件夹同步到 VirtualBox 客户机?

我已经从 WSL1 切换到 WSL2,并按照性能方面的建议将项目文件移到了 WSL2 中。我在 Windows 端(CentOS 7 客户机)安装了 VirtualBox,在 WSL2 中安装了 Vagrant,并进行了适当的导出,以便它们相互通信。我甚至解决了网络问题,但我只是不能弄清楚当文件现在驻留在这里时如何让 vagrant 文件同步在 WSL2 中工作。

当我使用 vagrant up 时,出现一个错误,提示不支持此功能,因为文件位于 WSL2 中,而不是 DrvFs 挂载:

The host path of the shared folder is not supported from WSL. Host path of the shared folder must be located on a file system with DrvFs type.

除了将文件移回 Windows 端,我怎样才能让它正常工作?

我尝试了 SMB 类型,但得到:

It appears your machine doesn't support SMB

鉴于主机是 Windows,我发现这很难令人相信。Samba/cifs-utils 也安装在客户机中。

NFS 类型给出类似的错误:

It appears your machine doesn't support NFS

在这里我尝试了 vagrant nfs 插件,但它也没有起作用。

rsync 类型可以工作,但不是一个很好的解决方案,并且每次运行时都会不断提示我输入 vagrant 用户密码。

现在我又回到了 WSL1,直到解决最后一点。

答案1

从 WSL2 中的目录创建到 9P 挂载的 Windows 目录的符号链接,并配置 vagrant 通过符号链接进行操作:

ln -s /home/jamie/projects /mnt/d/projects

config.vm.synced_folder "/mnt/d/projects/foo", "/var/www" ...

答案2

  • 主机操作系统:Windows 11 Pro 22H2
  • VirtualBox:6.1.40
  • Vagrant(主机/WSL):2.2.19
  • 客户操作系统:Ubuntu 22.04(通过 WSL2

遇到了同样的问题,尝试使用 NFS 安装 DrvFs。符号链接也不起作用。

毕竟,标准同步文件夹(无 NFS/无 SMB)对我来说是有用的:

config.vm.synced_folder ".", "/vagrant", disabled: false

然后,为了调整 Ubuntu 中挂载目录的权限,我使用绑定文件系统

vagrant plugin install vagrant-bindfs

并指定您的选项Vagrant文​​件

# https://bindfs.org/docs/bindfs-help.txt
config.bindfs.bind_folder "/vagrant", "/var/www/myproject",
    u: "vagrant",
    g: "www-data",
    p: "0774",
    chown_ignore: true,
    chgrp_ignore: true,
    chmod_ignore: true

两个方向均可顺利运行。

相关内容