V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
erlinux
V2EX  ›  Windows

Windows 开放了 WSL( Linux 子系统),所以到底开放了什么权限?什么机理。

  •  
  •   erlinux · 2017-11-20 21:45:42 +08:00 · 8344 次点击
    这是一个创建于 2566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Windows 10 里面有 WSL 可以直接开一个 bash 终端。(默认 ubuntu,现在 store 还能下载 OpenSuse )

    但是我安装 firewalld 不行、nmap 也跑不出来。


    这我就懵逼了啊,那这个到底有什么用?

    对微软来说,到底开放了什么权限。这背后又有什么含义?
    又是如何实现的,听说不是虚拟机...好像是在 Windows 的核心层做了对应...

    我也不很懂,突然想到了这个问题,就来 v2 求大神指点下。

    11 条回复    2019-01-23 19:16:24 +08:00
    erlinux
        1
    erlinux  
    OP
       2017-11-20 21:47:12 +08:00
    借楼再问下:ebtables 和 iptables 的关系...
    erlinux
        2
    erlinux  
    OP
       2017-11-20 21:48:13 +08:00
    另外,我的 ubuntu 的 bash.exe 经常会收到。信号为 1 的进程结束...然后我给命令加 "-y" ,静默执行就没啥问题了。奇怪..............
    billlee
        3
    billlee  
       2017-11-20 21:54:17 +08:00
    应用空间的基本没问题,内核的东西不用想。
    whwq2012
        4
    whwq2012  
       2017-11-20 22:00:09 +08:00 via Android
    b 站有个视频,是印度人介绍 wsl 的原理,你可以去搜搜看
    erlinux
        5
    erlinux  
    OP
       2017-11-20 23:21:11 +08:00
    @erlinux 不是信号 1...是信号 6

    E: Method http has died unexpectedly!
    E: 子进程 http 收到信号 6。
    jakes
        6
    jakes  
       2017-11-21 00:18:07 +08:00 via iPhone
    yyfearth
        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 程序
    kaneg
        8
    kaneg  
       2017-11-21 08:21:10 +08:00 via iPhone
    微软搞 wsl,最终目标可能是想让 Windows 成为 docker 容器的宿主机,从而开拓自己的服务器市场。
    honeycomb
        9
    honeycomb  
       2017-11-21 09:22:10 +08:00 via Android
    @erlinux 据说微软白盒实现了 Linux 内核 API 的驱动
    xml123
        10
    xml123  
       2017-11-21 10:37:45 +08:00 via Android
    github.com/ethanhs/WSL-Programs
    可以参考这个页面,能兼容的东西还在不断更新
    junjieyuanxiling
        11
    junjieyuanxiling  
       2019-01-23 19:16:24 +08:00 via Android
    @honeycomb Linux 不是没有 API 吗…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2535 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:56 · PVG 12:56 · LAX 20:56 · JFK 23:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.