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

Win10 的 WSLg 能否完美替代 Linux 下日常开发?

  •  
  •   einsdisp · 2021-06-17 13:31:11 +08:00 · 12498 次点击
    这是一个创建于 1247 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我之前一直是在 linux 下开发( go/node/python/java 都有,但不涉及机器学习这种需要显卡的开发),积累了大量的 shell 脚本、工具链、程序、配置等,日常使用 vs code 或者 jetbrains 开发。

    这么多年了,linux 的图形界面的稳定性一直挺烂的,但考虑到其生态系统与命令行的强大,一直忍了下来,偶尔桌面崩溃,或者图形界面的 bug 啥的,倒也可以忍受。

    直到最近几个月常常需要远程桌面办公,linux 下就没一个好用的远程桌面,效果比微软自带的 RDP 差远了,这件事促使我决定迁移到 win10 。

    虽说很多软件与编程语言的工具链,有 windows 原生版本,但我基本不考虑,只考虑 wsl,一来,我原先在 linux 下积累的大量的脚本、程序、配置,不想再重新搞一遍,二来,原生 win 下,win 的路径分隔、win 系统对 utf8 的支持烂,这些对编程并不友好。

    想问问,目前阶段,WSLg 能否完美替代 Linux 下日常开发?运行 vs code 或者 jetbrains 的图形界面,运行各种编程语言的工具链,性能跟原生 linux 比,能差多少?

    81 条回复    2021-06-21 08:56:11 +08:00
    raaaaaar
        1
    raaaaaar  
       2021-06-17 13:39:06 +08:00 via Android
    怎么说呢,有些命令,文件啥的和真正的 Linux 还是有区别的,经常有些文件,命令不存在啥的
    AoEiuV020
        2
    AoEiuV020  
       2021-06-17 13:39:33 +08:00 via Android   ❤️ 1
    最近在用 wsl2+vcxsrv 搞 Linux 环境安卓开发,最大问题是输入法不支持,其他没感觉比直接 window 差,但理论上是肯定有差距的,
    lawfun
        3
    lawfun  
       2021-06-17 13:42:50 +08:00
    @AoEiuV020 WSL2 连接不了 USB 设备,你那怎么使用 adb 的
    rububio
        4
    rububio  
       2021-06-17 13:46:38 +08:00 via Android
    现在 wslg 稳定性挺差的,再等等吧,现在时不时 Linux 图形程序就打不开了,报错 connection refused,需要重启 wsl 或者重启系统才能解决。。
    MakeItGreat
        5
    MakeItGreat  
       2021-06-17 13:47:00 +08:00 via Android   ❤️ 1
    如果你是因为远程桌面,可以虚拟机里 linux 啊
    3dwelcome
        6
    3dwelcome  
       2021-06-17 13:48:33 +08:00
    去 github 上看了一下 WSLg, 原理就是一个远程桌面,把 linux 内部 GUI RDP 远程到 windows host 上。

    如果只是 vs code/jetbrains,那用 exe 版本也没什么问题吧。
    sunny2580839896
        7
    sunny2580839896  
       2021-06-17 13:48:57 +08:00
    systemctl 貌似不能用
    also24
        8
    also24  
       2021-06-17 13:51:39 +08:00
    @lawfun #3
    可以直接用 adb.exe
    no1xsyzy
        9
    no1xsyzy  
       2021-06-17 13:51:54 +08:00   ❤️ 1
    init 进程是 WSL 自己的,所以相应的一堆东西没得用
    dbus 支持诡异
    输入法得 WSL 内和 Windows 内各自装一套
    WSL2 的话防火墙需要仔细配置一下,并且 IP 会变,倒不是不能解决,但也就那样吧……
    no1xsyzy
        10
    no1xsyzy  
       2021-06-17 13:54:21 +08:00
    对了,
    VS Code 可以把 WSL 当 remote,基本没什么异样感
    JB 付费版也可以,但完成度据说还不如 VSC
    wangsd
        11
    wangsd  
       2021-06-17 13:58:16 +08:00
    感觉没有 Windows 下快
    hwdef
        12
    hwdef  
       2021-06-17 14:01:35 +08:00
    此时此刻, 2021.6.17,是不可用的,也不是正式版,还是 dev,甚至都不是 beta,,,

    用了一会,,感觉,,linux 的窗口都挺丑,好像是默认的 gtk,缩放还是有问题,没有中文字体,要自己装。
    clf
        13
    clf  
       2021-06-17 14:02:31 +08:00
    Jetbrains+Docker 的方案应该更好?
    jswh
        14
    jswh  
       2021-06-17 14:08:32 +08:00
    wsl 目前的影响日常使用体验的,其实是磁盘性能,尤其是小文件一多。
    bthulu
        15
    bthulu  
       2021-06-17 14:13:34 +08:00   ❤️ 1
    并不能, 这就是个小玩具, 别想拿来当生产力
    BeautifulSoap
        16
    BeautifulSoap  
       2021-06-17 14:13:56 +08:00   ❤️ 1
    不一定要用 WSLg,传统的 vcxsrv 运行 GUI 方法你也能用在 wsl 上(和 windows 没有过多文件硬件交互的话,推荐直接上 wsl2 )
    总体来说这类方法最大问题还是在输入法,你没法直接用 windows 输入法在 linux 的 gui 里输入文字,你需要在 wsl2 或虚拟机里配置 linux 的输入法
    对输入法的不便能接受的话,那么 lz 基本能大致完美替代 Linux 的开发了(对 systemd 有刚需的话 wsl2 可能比较折腾)
    LokiSharp
        17
    LokiSharp  
       2021-06-17 14:13:58 +08:00
    直接用 Linux 虚拟机开发不就好了
    AoEiuV020
        18
    AoEiuV020  
       2021-06-17 14:25:31 +08:00
    @lawfun 我 windows linux wsl 一直都是 wifi 远程 adb 连手机的,
    NIYIKI
        19
    NIYIKI  
       2021-06-17 14:29:01 +08:00
    不能
    Dragonphy
        20
    Dragonphy  
       2021-06-17 14:34:46 +08:00
    1. GUI 缩放不行;
    2. VSCode 开发的话不需要 GUI,直接用 remote 插件就行了,我一直用 WSL2 做前端开发,windows 桌面 IDEA
    charlie21
        21
    charlie21  
       2021-06-17 15:15:34 +08:00
    win 10 远程桌面很好
    WSL 里使用 linux 工具链很好( win 作为宿主机)
    WSL 本身可以安装一个 xfce 桌面环境,然后( win 作为一端) xrdp 3389 端口连进去( WSL 作为远程桌面的另一端)。这种方案相当于远程连接到任何一台 linux 电脑
    参考 zhihu.com/question/350529856/answer/1237413438 内置 WSL 2 的 Windows 10 可以完全取代桌面版 Linux 吗

    WSLg 本身和 WSL 耦合得太紧了,故而不值得用
    ysn2233
        23
    ysn2233  
       2021-06-17 15:23:06 +08:00
    我现在用 vcxsrv 配 wsl2 下的 ide 开发就和 linux 下没什么区别了
    silkriver
        24
    silkriver  
       2021-06-17 15:25:36 +08:00
    Linux 下远程桌面服务端程序用 xrdp,客户端程序用 remmina,我觉得比微软自带的 RDP 强
    surfwave
        25
    surfwave  
       2021-06-17 15:35:03 +08:00
    WSL2 时不时就自动更换 IP,很麻烦,不推荐了。
    fo0o7hU2tr6v6TCe
        26
    fo0o7hU2tr6v6TCe  
       2021-06-17 15:37:42 +08:00
    替代可以,完美不行
    LokiSharp
        27
    LokiSharp  
       2021-06-17 15:38:48 +08:00
    WSL 是个残废,WSL2 就是个阉割版虚拟机
    lxrmido
        28
    lxrmido  
       2021-06-17 16:00:01 +08:00
    不能,设备经常变来变去,三天两头就要 winsock reset 一次才能连上网,配置好的端口、IP 绑定经常失效。推荐 VSC 的 ssh remote 开发,配合 vsc 内置的终端还是很好用的。
    Nerv
        29
    Nerv  
       2021-06-17 16:02:57 +08:00 via Android
    ubuntu 的图形界面稳定性本来就堪忧,再套上个 wsl2,真的是 bug 多到飞起,至少现在是这样。
    Kaisar
        30
    Kaisar  
       2021-06-17 16:11:54 +08:00
    linux 下远程桌面用 vnc 目前用起来没什么问题啊 或者说问题不大
    zjsxwc
        31
    zjsxwc  
       2021-06-17 16:17:31 +08:00
    不能,还不如直接 win 下开虚拟机玩 linux,
    或者继续 linux 下开虚拟机玩 win

    我选择后者。
    sleepm
        32
    sleepm  
       2021-06-17 16:18:45 +08:00
    @lxrmido 下载个 uu 加速器,找齿轮菜单里的网络工具,修复 lsp,不重启就好了,不用 winsock reset

    几年用 ubuntu 开发,桌面没崩过,见过最多的错误是 wps 的,不影响使用(大学几年用的 fedora,也很稳定)
    远程桌面 anydesk todesk rustdesk + zerotier 还是可以的
    在家 wsl2,文件在 wsl2 里速度快,在挂载的 /mnt 下就比较慢,有时候会怀疑人生,变 ip 是痛点,不过可以写脚本设置自动更新 ip 到 win10 hosts
    polaa
        33
    polaa  
       2021-06-17 16:27:08 +08:00
    我现在的方式是 vscode 通过 remote ssh 进行开发
    Pycharm 也是设置 remote deployment 环境

    ubuntu 装的 server 版 没有 GUI

    感觉良好
    hihanley
        34
    hihanley  
       2021-06-17 17:32:09 +08:00
    Java 开发,一直 Win10 + VMWare,装 Ubuntu Server,然后用 Jetbrains 的 Projector 开发,Projector 越来越好用了,中文输入也快支持了。
    偶尔也用 VSCode SSH Remote,写 JS,Python,Go
    JustRuning
        35
    JustRuning  
       2021-06-17 17:35:27 +08:00
    用过一段时间,最大的问题是 IO 问题,当挂载的文件过多的时候挺别慢。
    johnsona
        36
    johnsona  
       2021-06-17 17:38:32 +08:00 via iPhone
    不能 双系统虚拟机拉倒
    MiniUniverse
        37
    MiniUniverse  
       2021-06-17 17:50:08 +08:00 via Android
    Manjaro 欢迎你
    zone10
        38
    zone10  
       2021-06-17 17:56:03 +08:00
    最好的 Linux: Docker + VS Code Remote Containers
    次好的 Linux: Ubuntu Server + VS Code Remote SSH
    aristolochic
        39
    aristolochic  
       2021-06-17 18:38:07 +08:00
    目前可公开的情报( x

    以下仅针对 WSL2

    GUI 的话 WSLg 倒是挺好用的,就是会设置奇怪的 XDG Runtime 目录环境变量,而且加了个库不是软链接,Arch 每次更新会提示比较烦;
    Systemd 的话现在 Genie 已经比较成熟了,没遇到什么坑,除了需要放弃在 WSL 里挂载 Windows 文件系统的能力(说起来我用的 zsh 配置由于会高亮路径,要检查 Windows 的目录,结果就是输入有肉眼可见的延迟。用了 Genie 后由于没有 Windows 目录了,体验反而上升了,这才知道是什么原因。
    USB 的话还得自己折腾网络方案,每次需要自己折腾 USB 的时候就想到之前 WSLg 没出的时候配置音频的痛苦,就觉得自己用 WSL 是为了省时间的,就放弃了;
    嵌套虚拟化的话近期更新的内核默认开启了 KVM,但目前 Libvirt 是不行的,会嫌弃 WSL 没有设备信息(当然没有)然后 error,不知道其他怎么样,比如手动拼接 QEMU-KVM 命令能不能行,我是懒得折腾了。
    alexkkaa
        40
    alexkkaa  
       2021-06-17 18:40:30 +08:00 via Android
    个人觉得 gnome 现在已经很好了
    dingwen07
        41
    dingwen07  
       2021-06-17 18:44:51 +08:00
    目前还不支持大多数程序的高分辨率,正式版比较推荐

    踩 WSL2 吹 WSL1 的,你们不知道这俩可以同时开启使用的吗?需要 WSL1 就进 WSL1,需要 2 就进 2 。文件 I/O,WSL1 和 2 分别是 Windows 文件系统更快和 Linux 文件系统更快,那就把需要大量 Windows 文件系统操作的任务放到 WSL1,把需要大量 Linux 文件系统操作的任务放到 WSL2 进行不就得了。
    raynor2011
        42
    raynor2011  
       2021-06-17 18:46:06 +08:00
    wsl2 + emacs 图形化界面 , 用了很久了, 没什么问题
    flyhaozi
        43
    flyhaozi  
       2021-06-17 18:53:55 +08:00
    无图形界面的 wsl2 就可以胜任很多开发工作了,毕竟 wslg 需要 windows 10 预览版,目前还是先用稳定版比较好,另外稳定版的 wsl2 当前只能手动一步步安装: https://docs.microsoft.com/en-us/windows/wsl/install-win10#manual-installation-steps
    编辑器支持方面,vscode 和 jetbrains 都可以用 windows 版来连接到 wsl2,
    vscode: https://code.visualstudio.com/blogs/2019/09/03/wsl2 ,
    jetbrains: https://www.jetbrains.com/help/idea/how-to-use-wsl-development-environment-in-product.html,
    vscode 远程连接 wsl2 的体验目前已经很完美了,可以直接在 wsl2 目录输入 code .在 vscode windows 版中打开项目,也可以使用 wsl2 中的 git ; jetbrains 没有用过,目测体验可能没有那么好。

    性能方面,由于 wsl2 本质上还是虚拟机,所以项目文件一定要放在 wsl2 中性能才不会受影响,在 wsl2 中读取 windows 文件性能并不太好。根据微软的文档 nodejs 在 wsl2 里的性能是要比 windows 版好的。

    语言和工具链支持方面,nodejs 和 python web 在 wsl2 下的开发都有微软官方的入门文档:
    https://docs.microsoft.com/zh-cn/windows/dev-environment/javascript/nodejs-on-wsl,
    https://docs.microsoft.com/zh-cn/windows/python/web-frameworks,
    就个人的体验来看,前端的开发工具链在 wsl2 下是完全没有问题的。

    wsl2 目前很大的一个问题是没有 systemd,wsl2 也不会随 windows 启动而启动,如果有需要长期运行的服务 wsl2 并不适合,wsl2 更合适用来开发调试,不能拿来当作生产环境。
    tsaohai
        44
    tsaohai  
       2021-06-17 19:08:40 +08:00 via iPhone
    弄个 hyperv 的 vm 就完事了
    SenLief
        45
    SenLief  
       2021-06-17 19:14:46 +08:00 via Android
    @flyhaozi 有两个替代的工具,不过都需要在 win 下的终端执行的。开机自启可以利用计划任务吧。
    flyhaozi
        46
    flyhaozi  
       2021-06-17 20:00:19 +08:00
    @SenLief 是可以,想解决的话 wsl2 下大部分问题都有 workaround,最好还是能自身支持
    akira
        47
    akira  
       2021-06-17 20:03:29 +08:00
    在 win 下跑有 ui 的
    在 linux server 下面跑没 ui 的
    Dragonphy
        48
    Dragonphy  
       2021-06-17 20:17:50 +08:00
    wsl2 用 docker 就好了,systemctl 不好用
    kksco
        49
    kksco  
       2021-06-17 22:24:42 +08:00
    我觉得 ubuntu 也还好,非要说缺点就是 jetbrains 家的 ide 总是莫名其妙的内存泄露把内存吃满。。
    her999
        50
    her999  
       2021-06-18 00:27:38 +08:00
    ubuntu 的桌面很稳定。输入法可以用 搜狗 和 rime
    hei1000
        51
    hei1000  
       2021-06-18 05:13:59 +08:00
    "这么多年了,linux 的图形界面的稳定性一直挺烂的"????不知道你用的什么发行版和桌面环境,我用的 Manjaro+XFCE/KDE 很稳定啊,很少出问题,我的 Win10 都只安装在虚拟机里面,日常就 Linux 桌面环境
    zxCoder
        52
    zxCoder  
       2021-06-18 08:47:03 +08:00
    还是稍微有一点别扭
    DonaldY
        53
    DonaldY  
       2021-06-18 09:46:45 +08:00
    ubuntu 也不稳定哈。浏览器老是崩溃。gnome-shell 飙高
    join
        54
    join  
       2021-06-18 10:07:35 +08:00
    linux 的 gui 本身就这么烂,指望非原生 wslg 会好? 幼稚。
    FakNoCNName
        55
    FakNoCNName  
       2021-06-18 10:10:50 +08:00
    @DonaldY 16\18 确实有这个问题,20.04 用到现在还没出现过 gnome 把机器跑死的情况。
    FakNoCNName
        56
    FakNoCNName  
       2021-06-18 10:13:46 +08:00
    Linux 确实没有太好用的远程工具,向日葵、toDesk 也不那么好使。

    不过可以考虑 ssh 过去 vim 开发,但如果能 ssh 过去就说明你的机器可以暴露到公网上,这样的话在 linux 上装个 RDP 服务器,用 RDP 客户端远程连过来开发更爽。
    EIJAM
        57
    EIJAM  
       2021-06-18 10:26:45 +08:00
    wsl 就是个杂合怪胎,换个名字叫“狮虎兽”。想要替代 Linux 是不可能的
    thtznet
        58
    thtznet  
       2021-06-18 11:32:26 +08:00
    想太多,不要为了技术而技术,直接虚拟机,不想装第三方的就用自带的 Hyper-V,所有问题都不是问题,只是不够酷罢了。
    richardwong
        59
    richardwong  
       2021-06-18 12:36:29 +08:00
    @raynor2011 怎么配的,我中文没法输入,也没法显示
    HankAviator
        60
    HankAviator  
       2021-06-18 12:39:31 +08:00 via Android
    @no1xsyzy wsl2,IP 变化的问题,我之前也遇到过。后来为了修复罗技鼠标驱动,打开页面空白的问题,把 wsl2 导出之后导入,结果就可以识别出来真正的 IP 地址。
    写到这儿才想到是不是被导入成 wsl1 了……
    raynor2011
        61
    raynor2011  
       2021-06-18 12:43:49 +08:00
    @richardwong 中文输入法用的 fcitx, 然后把系统语言改成中文
    vone
        62
    vone  
       2021-06-18 14:26:57 +08:00
    @surfwave 你可以使用 localhost,数据会被转发到 WSL2 的系统中。
    surfwave
        63
    surfwave  
       2021-06-18 14:42:50 +08:00
    @vone 如果宿主机本身开了同样端口的服务,用 localhost 会冲突的。
    wccc
        64
    wccc  
       2021-06-18 15:21:06 +08:00
    目前 还是 manjaro + kvm 虚拟化 windows 使用 remmina spice 协议连接
    复制粘贴 到虚拟机没什么问题 外加一个 smb
    hz2019
        65
    hz2019  
       2021-06-18 15:55:10 +08:00
    如果是用 vscode,可以直接 win-vscode+WSL,体验很好。jetbrains 对 WSL 的支持也不错,只是需要经过一些配置,比如 WSL python 开 venv,win-vscode 打开不需要配置,win-jetbrains 得写个脚本来指定目录。WSLg 的 vscode 没用过,用的 QtCreator,按键上的体验不太好,尤其和 win 上的窗口进行切换,比如 qtcreator-vim 在 insert 模式下切到 win,在切回来,有时候会莫名其妙不停自动输入 jjjjjjjjj 。。。。
    SenLief
        66
    SenLief  
       2021-06-18 16:53:06 +08:00
    @flyhaozi 是的,没啥好的办法了。只能说是能用。
    crazykay
        67
    crazykay  
       2021-06-18 18:25:52 +08:00
    小前端一枚, Linux base 开发使用好多年了, 觉得 Linux 下图形界面的稳定性一点也不烂.

    wechat-devtools-linux 实在没有作者跳出来维护了,腾讯更新了版本之后就折腾不好. 最近刚好 win11 出来, 搞个硬盘装来试试, 顺便恰口饭, 日子太难了

    PS. 远程办公一定要远程桌面是什么逻辑? 远程桌面解决方案也挺多的啊, rustdesk 啥的
    libook
        68
    libook  
       2021-06-18 18:56:04 +08:00
    看干啥,如果只是做做 Web 开发啥的应该没问题,但如果做系统开发可能问题会比较多,毕竟 WSL 和 Linux 差别还挺大的。

    比如每次启动 IP 会变,不能使用服务管理(如 Systemd ),没法访问一些硬件设备。

    目前我是用的在 Win10 上用 Cygwin 装 XServer,然后从 WSL2 里启动基于 X 的程序,可以做到让 Win10 来管理窗口。

    我的配置信息在 GitHub 上,可以搜 WSL-GUI

    输入法据说在 WSL2 里装 Fcitx,我没试过,平时没有输入中文的需求。

    其实微软完全可以走 X 那一套,都不需要多少开发成本。
    Outshine
        69
    Outshine  
       2021-06-18 19:04:47 +08:00
    wsl2 太难用,我已经换了 deepin 。。。
    vhui
        70
    vhui  
       2021-06-18 20:40:05 +08:00
    @libook 可以给 wsl2 设置固定 ip,systemd 也有替代方案,比如 subsystemctl 。
    Donahue
        71
    Donahue  
       2021-06-18 21:12:25 +08:00
    ubuntu20.04 原生桌面我觉得挺好用,远程用自带的一个软件 好像叫 remmia
    chaleaoch
        72
    chaleaoch  
       2021-06-19 01:23:12 +08:00
    jetbrains 和 vscode 都有了支持远程开发的方案了.

    我用 windows + docker
    chaleaoch
        73
    chaleaoch  
       2021-06-19 01:23:27 +08:00
    Showfom
        74
    Showfom  
       2021-06-19 02:19:39 +08:00
    不如虚拟机做开发环境的好
    harwck
        75
    harwck  
       2021-06-19 09:58:38 +08:00 via Android
    没有 systemctl,io performance 烂成不知道什么样,用的头疼
    magicdu
        76
    magicdu  
       2021-06-19 16:28:33 +08:00
    ubuntu 用的自带的 remote desktop 感觉还可以啊
    lm902
        77
    lm902  
       2021-06-20 02:45:56 +08:00
    @harwck wsl2 有了,wsl2 就是完整的 Linux 虚拟机
    harwck
        78
    harwck  
       2021-06-20 05:53:37 +08:00
    @lm902 wsl2 也是沒有 systemd 的,但這個已經有人解決了
    真正致命的是 io,就如上面有人說了,小文件一多的話我試過和 native linux 可以有上百倍的差距。
    ysn2233
        79
    ysn2233  
       2021-06-20 17:03:09 +08:00
    可能没法媲美 linux 开发环境,但绝对不会比 macos 差
    ysn2233
        80
    ysn2233  
       2021-06-20 17:04:10 +08:00
    @harwck 只用 wsl2 内部的文件系统不会吧,只是和 windows 文件系统交互比较慢,用 wslg 的目的就是直接在 wsl2 里打开 ide 了,文件性能问题应该影响不大。
    aneostart173
        81
    aneostart173  
       2021-06-21 08:56:11 +08:00
    图形性能感觉不是很好,开个 emacs 都会卡。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5424 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:55 · PVG 13:55 · LAX 21:55 · JFK 00:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.