微软打算在为 WSL 提供一个真正的 Linux 内核

2019-05-07 09:30:50 +08:00
 qcts33

https://devblogs.microsoft.com/commandline/shipping-a-linux-kernel-with-windows/

不知道是不是为了提供 Docker 的支持才这么干的,而且 Linux 内核是不是需要用 Hyper-V 的虚拟化啊?

感觉从原来的转译 API 变成基于虚拟机的结构在某种意义上说反而是倒退了……

另外,这个话题应该属于哪个节点啊……

7057 次点击
所在节点    微软
46 条回复
deorth
2019-05-07 09:51:31 +08:00
感觉这个不好实现啊,也不知道实现出来是什么样的效果。看评论似乎是只虚拟化用户空间?那需要内核提供的功能(比如挂载 ext4)还是没法实现?
rayhy
2019-05-07 09:53:15 +08:00
不说别的,对 https://github.com/microsoft/Terminal 很期待!
k9982874
2019-05-07 10:20:42 +08:00
@rayhy #2 同等 ms terminal,现在的 cmd 太烂了
Track13
2019-05-07 10:24:34 +08:00
感觉是 Hyper-v。我选择 vm
ly50247
2019-05-07 10:34:21 +08:00
为什么说是倒退呢?从性能上讲 API 转译并不比虚拟机实现更高(做性能测试的话,很多情况 WSL 要比虚拟机要差,只有一部分会强些),功能上也存在缺陷。重点还是和 Windows 环境整合上,比如访问 Windows 分区中的文件、互相调用程序等等,只要这些功能都高效地实现了,是否用虚拟机实现是没有什么区别的。而且实现了这个的话,原来用其他虚拟机运行 Linux 的用户,也不再需要继续使用其他虚拟机了,这样基本上也就不存在多个虚拟机不能共存等可能的问题了。
cdwyd
2019-05-07 10:58:54 +08:00
只要是网络,文件还是能够方便的共享访问的话,怎么实现无所没
redsonic
2019-05-07 13:00:29 +08:00
巨硬的 VM 支持硬件虚拟化,不会比 api 转译慢。
0attocs
2019-05-07 13:02:55 +08:00
@ly50247 wsl 好像是 io 性能低吧?甚至关闭 windows defender 等杀软后 wsl 性能会大幅提升………
qcts33
2019-05-07 13:17:25 +08:00
@ly50247 确实从用户角度来说肯定不是倒退。我说倒退是从实现的角度来说,总觉得原来的转译的技术实现有一种让人眼前一亮的感觉,这回使用虚拟机的实现就感觉没有那么惊艳了……而且原来花那么大力气写得转译层就这么浪费掉了

不过仔细想想,如果能把 Linux 内核与 window 用户界面的互操作做得比较无缝的话估计也不是什么简单的事情,不知道什么时候能进入 release
qcts33
2019-05-07 13:20:16 +08:00
@redsonic 说到巨硬的硬件虚拟化,hyper-v 不是 win10 专业版才能开启的吗? win10 家庭版不会用不了新 wsl 吧
ly50247
2019-05-07 13:21:09 +08:00
@0attocs 不关闭是干脆没法用的,关闭后和原生(包括虚拟机中的) Linux 相比性能依然比较差。
ly50247
2019-05-07 13:29:03 +08:00
@qcts33 如果真的在用户体验不下降的前提下用虚拟机实现了,那只能说之前的技术选型出现严重失误了,比如低估了 linux 内核完整功能的实现难度,高估了转译的性能,那样及时止损也是一个比较理性的选择。但至少有些组件(比如文件系统互访问相关的)可以继续沿用。以后发布了先看下什么情况吧。
qcts33
2019-05-07 13:30:14 +08:00
@deorth 应该是虚拟化内核空间吧?不过内核里面文件系统这一块的东西要怎么处理确实是个大问题。我觉得挂载 ext4 这种能力还是比较悬的,搞不好相关驱动会被去除,然后还是靠转译的方式实现对 ntfs 的互操作,否则不好跟 Windows 本身的用户界面做整合。
qcts33
2019-05-07 13:37:39 +08:00
@ly50247 从测试来看在计算为主的应用中转译的性能其实是相当不错的,估计主要是低估了完整模拟 Linux 内核的难度。不过感觉文件系统互访问这个最大的性能瓶颈是怎么也绕不过去了……
ly50247
2019-05-07 13:44:52 +08:00
@qcts33 我之前想是不是可以把 WSL 的文件系统放到一个单独的文件里,像虚拟机镜像,那就不需要和 NTFS 的各种东西打交道了。但影响编译速度的还有一个很重要的进程启动开销,不用虚拟机的话估计很难优化了。
springmarker
2019-05-07 13:52:24 +08:00
官方也说了是靠虚拟化实现的,本质上跟 Hyper-V+Linux 一样,不过这个是更加高度集成化、更加轻量。GPU 加速也指日可待了。
0attocs
2019-05-07 14:04:02 +08:00
@ly50247

你始终无差别说 wsl 性能差,有什么依据吗?

1. 据我所知,wsl 不是像 wine 那样的转译,而是实现了一个 linux kernel。
2. 因此,WSL 的主要问题是 IO 性能差(关闭 windows defender 可大幅改善,WSL2 宣传就是 IO 提升),非 IO 性能和 native 几乎一样[1]。
3. 不关闭当然是可以用的,我日常用 wsl 下的 emacs 写 LaTeX 和 Coq,用 X11 绘制在 windows 里。
4. wsl 是 windows mobile 的遗产,目标是日常使用环境。wsl2 的目标是生产环境。

[1] https://www.phoronix.com/scan.php?page=article&item=windows-1804-wsl
reus
2019-05-07 14:06:06 +08:00
@ly50247 实现一个读写宿主机文件系统的内核模块不就行了,哪有那么复杂。现在的虚拟机都有现成的共享文件夹方案了。
0attocs
2019-05-07 14:09:52 +08:00
@qcts33
官方说家庭版也可以用 wsl2,因为 lcow 是跑在 type-1 hypervisor 上的,和 windows side by side,不需要专业版的 type-2 hypervisor license 和 GUI。
reus
2019-05-07 14:11:32 +08:00
@0attocs wine 和 wsl 一样,都是实现了 windows 或者 linux 的系统调用,以使现有 binary 可以执行,原理是一样的

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

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

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

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

© 2021 V2EX