wsl2 该怎样才能共享文件给局域网?

2020-05-04 00:18:24 +08:00
 hakono

这里说的局域网其实是同一台电脑上的另一台 Hyper-V 的 Win10 虚拟机,里面有公司配置的开发环境之类的

我该怎么把 wsl2 里的文件共享给那台 Win10 虚拟机?

在宿主机里访问 wsl2 的文件是很简单的,直接访问 \\wsl$ 就行了,但是宿主机上的另一台虚拟机没办法

目前想了两个方法都感觉不行:

  1. 在 wsl2 里装 samba 服务器,把文件共享给局域网然后虚拟机挂载成磁盘。 这个是最轻松简单也符合直觉的,但这方法有个大问题是 wsl2 的 ip 不 是 固 定 的 ,每次重启电脑 wsl2 都会获得一个随机的 ip 地址(这个随机的 ip 不是同一个网段的随机,而是连网段都随机了,因为 wsl2 用的是 Hyper-V 的那个默认交换机而且不能改,那个默认交换机每次重启电脑就会自动被删除并重新创建,然后随机一个新的 ip 网段)

  2. 放弃使用宿主机里的 wsl2,转而直接在 Win10 虚拟机里安装 wsl2 (即虚拟机里跑虚拟机)。一个很优雅的解决办法,看起来很美好,但是可惜目前 Hyper-V 的嵌套虚拟化只支持 Intel 平台,我是 AMD 平台不支持(说起来微软嵌套虚拟化的官方文档下,大家呼吁 AMD 平台支持嵌套虚拟化的帖子已经 2 年多了,微软到现在都还拖拖拉拉的不支持 AMD 这个越来越重要的平台。wsl2 没法设置固定 ip 这个问题也是,gihutb 的 issue 已经快一年了,讨论了一长串微软都不支持,也不知道微软是怎么想的。不过 wsl 的 repo 下那 900 多个 issue 估计微软想处理也处理不过来。。。)

4116 次点击
所在节点    问与答
8 条回复
hakono
2020-05-04 10:28:09 +08:00
沉到看不到了,顶一下依旧在等待回答。。。。
zhfish
2020-05-04 11:43:10 +08:00
稍微麻烦点, 用内网穿透的方法吧
goproxy 或者 frpc,同宿主,穿透损耗接近没有

以 goproxy 为例
wsl2 做 client
win10 做 bridge 和 server
zhfish
2020-05-04 11:44:26 +08:00
Win10 虚拟机里安装 wsl2 有什么优雅的? 用 wsl 不就是为了不装虚拟机用 linux 么?
用虚拟机直接装个 alpine 不香?
hakono
2020-05-04 14:20:13 +08:00
@zhfish 很感谢提供思路和方法。但想了下解决办法应该不在内网穿透上。因为实际上 Win10 已经自动为 wsl2 做了内网穿透了(宿主机通过 localhost:wsl2_port 就可以访问到 wsl2 端口,局域网内其他电脑则可以通过 宿主的局域网 ip:wsl2_port 访问到 wsl2 端口)

但这里的问题在于,wsl2 里装 samba 服务器的话要占用 445 等端口,而宿主自己也在 445 等端口上跑着 samba 服务,这样的话通过 宿主 ip:wsl2_port 只能访问到宿主的 samba 服务。当然解决办法似乎是很理所当然的把 wsl2 的 samba 服务器端口换一个,比如 1145 之类的,但是很可惜的是 windows 是根本不支持访问非 445 端口之外的 samba 服务器的。也就是说,换成其他端口的话 windows 就没法访问到 wsl2 里的 samba 服务了,走到这一步我感觉目前似乎完全没有解决办法了。。。。


------------

至于优雅这事,我想说的意思是虚拟机里跑 wsl2 的话一个虚拟机里就包含了所有的开发环境,开发环境的迁移和小组内共享环境都极其方便(几分钟的事情),对于因一些原因经常换电脑的我司来说这是很有必要的。。。

至于 "用 wsl 不就是为了不装虚拟机用 linux 么" 这点,wsl 虽然是原生的,但 wsl2 则是个轻量的 Hyper-V 虚拟机啊,用了 wsl2 其实就是在用 linux 虚拟机。但是因为 wsl2 轻量启动快,docker 还支持把 wsl2 设为 backend,体验是真的比单纯的 linux 虚拟机强非常多。我现在就是同时还开着一台 Debian mini 虚拟机在用,体验并不好。。。。
zhfish
2020-05-04 23:12:38 +08:00
@hakono
思路清晰,samba 冲突没跑了
宿主和 wsl2 的 samba 只能二选一

可以考虑 nfs, 宿主和 wsl2 哪个做客户端哪个做服务端都无所谓
宿主的 samba 里的某个目录,是 wsl2 的 nfs 这样子
flynaj
2020-05-05 23:33:58 +08:00
wsl2 本来就是虚拟机,精简版的速度快,要完整版就自己安装完整版虚拟机。
hakono
2020-05-06 00:17:36 +08:00
@flynaj 我也没说 wsl2 不是虚拟机啊? 现在我就是开了台 Debian 虚拟机在用,就是因为体验并不好才想迁移到 wsl2 上( wsl2 还支持 Docker Backend 体验好很多)
lonewolfakela
2020-05-14 17:10:27 +08:00
在宿主机上创建一个指向\\wsl$的符号链接,然后把这个符号链接所在的位置共享出去不行么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/668362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX