ton*_*nik 5 windows linux mount bash windows-subsystem-for-linux
我想将 Windows C: 驱动器安装到 WSL 中的 /mnt/c 作为 drvfs 文件系统,但如果我指定 drvfs 作为文件系统类型,我会得到 9p 文件系统。
我输入了这些命令:
$ sudo umount /mnt/c
$ sudo mount -t drvfs C: /mnt/c/
$ mount -l
...
C: on /mnt/c type 9p (rw,relatime,dirsync,aname=drvfs;path=C:;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=3,wfd=3)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,类型是 9p 而不是指定的 drvfs。
是的,当您在 WSL 版本 2 中安装 Windows 驱动器时,它使用 9P 协议。与使用 drvfs 的版本 1 相比,这是一个很大的变化。WSL 主机运行 WSL 实例连接到的 9P 服务器。
有很多网站在讨论这个问题,但恕我直言,用搜索引擎找到它们有点困难,因为有关 9P 的“更大”新闻是每个 WSL 实例(无论是WSL1还是 WSL2)也托管自己的 9P服务器,然后 Windows/WSL 主机可以作为客户端连接到该服务器,并提供对该\\wsl$\<distroname>路径上的 WSL 文件的访问。
这是我在 r/bashonubuntuonwindows 上找到的更好的讨论之一。请注意 WSL 开发人员之一 u/benhelioz 的引用(现在,我相信是团队负责人):
很棒的文章。当我这么说时,我想非常明确地表明 - 我们对 Windows 驱动器文件访问性能绝对不满意。这是我们投资最大的领域之一,并正在努力提高绩效。我要强调的一件事是我们的 9p 具有一些 Samba 和 SMB 没有的优点。它更加安全,支持管理员/非管理员,并且与人们在 WSL1 中使用 DrvFs 的任何内容完全兼容。
您的问题明显未得到解答的部分是为什么不能直接将驱动器安装为 drvfs。这是因为 WSL 实例无法直接访问硬件。它们依靠 WSL (LxssManager) 服务接口来提供对 Windows 元素的 API 访问。因此,我们依赖于 WSL 提供访问的方法,在 WSL2 和 NTFS 驱动器的情况下,该方法为 9P。
| 归档时间: |
|
| 查看次数: |
5137 次 |
| 最近记录: |