Windows 10 里面有 WSL 可以直接开一个 bash 终端。(默认 ubuntu,现在 store 还能下载 OpenSuse )
但是我安装 firewalld 不行、nmap 也跑不出来。
这我就懵逼了啊,那这个到底有什么用?
对微软来说,到底开放了什么权限。这背后又有什么含义?
又是如何实现的,听说不是虚拟机...好像是在 Windows 的核心层做了对应...
我也不很懂,突然想到了这个问题,就来 v2 求大神指点下。
1
erlinux OP 借楼再问下:ebtables 和 iptables 的关系...
|
2
erlinux OP 另外,我的 ubuntu 的 bash.exe 经常会收到。信号为 1 的进程结束...然后我给命令加 "-y" ,静默执行就没啥问题了。奇怪..............
|
3
billlee 2017-11-20 21:54:17 +08:00
应用空间的基本没问题,内核的东西不用想。
|
4
whwq2012 2017-11-20 22:00:09 +08:00 via Android
b 站有个视频,是印度人介绍 wsl 的原理,你可以去搜搜看
|
5
erlinux OP |
6
jakes 2017-11-21 00:18:07 +08:00 via iPhone
|
7
yyfearth 2017-11-21 05:12:29 +08:00 2
@erlinux @jakes 其实简单来说就是 WSL 就像是 Wine 是一个应用兼容层
Wine 是在 Linux/Unix 下让你可以兼容直接运行部分 Win32 程序 WSL 是在 Windows 下让你可以兼容直接运行部分 Linux 程序 所以 WSL 不是一个 VM 虚拟机 他建立了一个 Linux 内核虚拟层 但不是也不包含 Linux 内核 所以 WSL 没办法运行需要很内核功能的东西 但是随着 WSL 底层的完善 他就会变得越来越兼容 Linux 内核 慢慢的越来越多的 Linux 程序可以跑在 WSL 上面了 firewalld nmap 这些跑不起来 估计是因为 Linux 的网络栈还没有在 WSL 兼容层完全实现 和 Linux VM 比 WSL 的优势之一是损耗小 不需要一直有一个 Hyperviser 跑在后台 而且占用大量系统资源 因为实际上 Windows + WSL 都是同时运行在同一个 Windows 内核上 没有另外一个 Linux kernel 跑在 VM 里面 另外一个优势就是整合度高 如果是 VM 实际上就相当于是 Windows 通过网络或其他接口和另外一台机器通信 而 WSL 是直接在同一个系统里面 WSL 的文件 就在 Windows 的文件系统里面 而且 Windows 可以一定程度上管理 WSL 里面的东西 缺点自然就是不能 100% 当作一个完整的 Linux 使用 可以认为 VM 是在本机虚拟了一个另外一台电脑硬件 然后你在这个虚拟的电脑里面跑 Linux 或者 另一个 Windows 而 WSL 是在 Windows 上面 虚拟了一个 Linux 内核 然后在这个虚拟的内核上面跑 Linux 应用 而 Wine 是在 Linux/Unix 上面虚拟了一个 Win32 API 然后让这个虚拟层上面跑 Win32 程序 |
8
kaneg 2017-11-21 08:21:10 +08:00 via iPhone
微软搞 wsl,最终目标可能是想让 Windows 成为 docker 容器的宿主机,从而开拓自己的服务器市场。
|
10
xml123 2017-11-21 10:37:45 +08:00 via Android
github.com/ethanhs/WSL-Programs
可以参考这个页面,能兼容的东西还在不断更新 |
11
junjieyuanxiling 2019-01-23 19:16:24 +08:00 via Android
@honeycomb Linux 不是没有 API 吗…
|