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

Windows subsystem for Linux (WSL)的用户有踩过什么坑吗

  •  
  •   lydhr · 2021-12-30 04:56:31 +08:00 · 8098 次点击
    这是一个创建于 1091 天前的主题,其中的信息可能已经有所发展或是发生改变。

    run 一个 ubuntu 的时候 memory 几乎没有增加,跑一些开源 code 是没问题了,感觉就是更高效 built-in 的 VM

    64 条回复    2021-12-31 22:08:16 +08:00
    gzlock
        1
    gzlock  
       2021-12-30 05:47:23 +08:00
    也就 wsl2 的文件系统性能不咋行吧,然后 git 会偶发问题,例如修改了文件但是 git 没检测到文件有变化
    datou
        2
    datou  
       2021-12-30 06:30:39 +08:00   ❤️ 1
    没有 IPv6 支持算不算坑?
    sayakafs
        3
    sayakafs  
       2021-12-30 08:15:44 +08:00 via iPhone
    win11 和 vmware 冲突,后者多核挂起报错。
    ericgui
        4
    ericgui  
       2021-12-30 08:23:44 +08:00
    wsl2 的性能还是差点意思
    chaoschick
        5
    chaoschick  
       2021-12-30 08:26:19 +08:00 via Android
    不好用
    me221
        6
    me221  
       2021-12-30 08:26:37 +08:00
    127.0.0.1 和 localhost ?
    ciichen
        7
    ciichen  
       2021-12-30 08:30:53 +08:00 via Android   ❤️ 5
    ip 不固定
    cslive
        8
    cslive  
       2021-12-30 08:31:57 +08:00
    ip 不固定 加+
    857681664
        9
    857681664  
       2021-12-30 08:41:33 +08:00 via Android
    idea 开发的时候 maven sync 特别慢,猜测是文件系统 io 太慢的原因
    charlie21
        10
    charlie21  
       2021-12-30 08:42:35 +08:00
    在 wsl 开着的情况下 让电脑睡眠或休眠 唤醒电脑之后 用 `date` 查看 wsl 系统时间可能会有问题(导致最简单的 `sudo apt update` 都无法使用),此时需要在联网的情况下用 NTP 校准到正常时间
    `sudo ntpdate pool.ntp.org`
    Shokupanman
        11
    Shokupanman  
       2021-12-30 08:52:36 +08:00 via Android   ❤️ 1
    QQ 截图之后任务栏疯狂闪烁,得 wsl --shutdown 才行
    cweijan
        12
    cweijan  
       2021-12-30 08:53:10 +08:00
    - ip 不固定
    - 没有 systemd, 导致部分依赖 systemd 的软件无法安装
    - 内存占用大, 如果设置最大内存, 那这个内存就是 wsl 开机后会立刻占用的内存
    wayne233
        13
    wayne233  
       2021-12-30 08:56:52 +08:00 via iPhone
    io 速度和权限问题(比如在 win 中编辑 wsl 中的文件,以及在 wsl 中编辑 win 中的文件
    Pogbag
        14
    Pogbag  
       2021-12-30 09:03:10 +08:00 via iPhone
    要手动修改 ssh 的端口 22 被 windows 占用了
    wgjtyu
        15
    wgjtyu  
       2021-12-30 09:09:50 +08:00
    如果是微信小程序开发并且用 tarojs 之类的库,用 wsl 里的 nodejs 来编译之外,还得在 windows 系统里再装一个 nodejs 吧。本质上还是虚拟机,因此包括 python 、git 之类的都可能需要在两个系统里面同时安装。
    mx8Y3o5w3M70LC4y
        16
    mx8Y3o5w3M70LC4y  
       2021-12-30 09:12:10 +08:00
    wsl2 关闭后内存释放不掉,会一直占用着。
    cwr31
        17
    cwr31  
       2021-12-30 09:12:15 +08:00 via iPhone
    @gzlock 那是你垮文件系统了吧
    quanjw
        18
    quanjw  
       2021-12-30 09:12:31 +08:00   ❤️ 1
    不好用 还是 vm 靠谱
    gzlock
        19
    gzlock  
       2021-12-30 09:16:12 +08:00
    @cwr31 #17 就是在 windows 安装的 idea 直接打开 wsl 里的项目咯
    Eiden
        20
    Eiden  
       2021-12-30 09:18:41 +08:00
    usb 设备支持非常不好
    gzlock
        21
    gzlock  
       2021-12-30 09:19:23 +08:00
    b/s 开发我都是直接 wsl 里用 docker 开 nginx 再 80 映射端口到宿主机,浏览器直接打开 localhost 就可以访问了,所以 ip 不固定对于我来说也不算啥问题。
    LANB0
        22
    LANB0  
       2021-12-30 09:23:12 +08:00
    之前不配置 wslconfig 会占满主机内存无法释放,现在不知道还是不是存在
    raptor
        23
    raptor  
       2021-12-30 09:25:17 +08:00
    都是坑,反正我试了一会就放弃了,好好用 LINUX 不香嘛
    biguokang
        24
    biguokang  
       2021-12-30 09:26:40 +08:00 via Android
    @wgjtyu 这个是因为微信开发者工具只有 mac 和 win 版,没有 linux 版把。。。我写 go 和 js ,win10 本身很干净只装了个 lol ,开发环境、工具和代码全在装在 wsl2 里面,也没啥问题
    Privileges
        25
    Privileges  
       2021-12-30 09:50:28 +08:00 via Android
    没有 system ,wsl2 会和其他安卓模拟器冲突
    zachgenius
        26
    zachgenius  
       2021-12-30 09:54:19 +08:00
    文件 BOM 还有磁盘格式错误让我根本没法用
    xwcs
        27
    xwcs  
       2021-12-30 09:59:52 +08:00
    wsl --shutdown 之后如果休眠电脑再打开后启动 wsl 有一定概率会出现[已退出进程,代码为 4294967295]的报错,然后只要重启一下电脑就恢复正常了,从 wsl1 到 2 一直都存在的问题
    yangzzzzzz
        28
    yangzzzzzz  
       2021-12-30 10:03:07 +08:00   ❤️ 1
    上半年从 mac 换 win 开发,为了终端好用点用的 wsl2 ,主要用的就 node 后面折腾了一圈放弃了。。一堆小 bug 太影响开发效率了
    ScepterZ
        29
    ScepterZ  
       2021-12-30 10:14:41 +08:00
    读 win 的文件很慢,别的 bug 暂时都用不上
    cwr31
        30
    cwr31  
       2021-12-30 10:32:40 +08:00 via iPhone
    @gzlock 项目稍微大一点基本用不了 各种索引特别慢,已经放弃了
    wangyzj
        31
    wangyzj  
       2021-12-30 10:37:54 +08:00
    cd ${git repo dir}
    卡住了
    radioactivezx
        32
    radioactivezx  
       2021-12-30 10:43:31 +08:00
    在家连进公司 VPN 后 ssh 连不上内网其它机器,cmd/poweshell 就没问题。
    userforg2021
        33
    userforg2021  
       2021-12-30 10:44:09 +08:00
    打了一堆字说上面的问题,然后放弃了,算了。
    这个东西因人而异,使用方式不同,感受完全不同。遇到坑再去网上搜。记得配 wslconfig ,使用 localhost 访问 wsl 。把它当轻量 VM 用。
    ShadowPower
        34
    ShadowPower  
       2021-12-30 10:52:36 +08:00
    挂载不了 ext4 镜像
    secsilm
        35
    secsilm  
       2021-12-30 10:55:36 +08:00 via Android
    我记得之前 wsl 不能用 gpu ,不知道现在咋样了
    ShadowPower
        36
    ShadowPower  
       2021-12-30 11:08:00 +08:00
    @secsilm Windows11+WSL2+测试版驱动已经可以用了
    libook
        37
    libook  
       2021-12-30 11:11:10 +08:00   ❤️ 3
    除了 IP 不固定,楼上所有问题都没遇到过……

    我是在 Windows 上装 XServer 的方式在 WSL2 环境下跑 GUI 界面,用 IDEA 做全栈开发,差不多两年时间了吧,还挺好用的。

    WSL2 是跑在 Hyper-V 里面的,同一个系统上只能有一个虚拟化平台,所以开了 WSL2 之后其他虚拟机软件就用不了了,这个有些杀毒软件开了 VM 引擎之后跟虚拟机软件冲突也是一样的。

    WSL2 有自己的文件系统,但跟 Windows 的文件系统是打通的,git 之类的需要依赖文件系统特性的只要放在 WSL2 自己的文件系统内就没问题。

    WSL2 是类似于 chroot 的方式运行 Linux 环境的,所以没法用 systemd 之类的服务管理工具,我的解决方案是需要跑服务的都跑在 Docker 里,由于 Windows 的 Docker Desktop 太难用了,所以在 Hyper-V 里面开个 Linux 虚拟机专门跑 Docker daemon ,WSL2 里只需要配置一个 DOCKER_HOST 的环境变量就可以了。

    以及有很多问题是因为用户对 Linux 不熟悉,往往调整一下配置就能解决的。

    总体来说 WSL 是面向应用开发的,系统开发、硬件开发还是直接装 Linux 吧。
    TrembleBeforeMe
        38
    TrembleBeforeMe  
       2021-12-30 11:21:54 +08:00   ❤️ 2
    连宿主机可以直接用宿主机名称.local ,比如 DESKTOP-114514.local ,不再需要脚本查找宿主机 IP 了
    zhilincom
        39
    zhilincom  
       2021-12-30 11:35:49 +08:00
    tail -f windows 下的日志文件不能实时更新。
    zmxnv123
        40
    zmxnv123  
       2021-12-30 13:04:55 +08:00
    1. 不要尝试 pycharm 使用 wsl 读取 windows 文件夹中的数据。
    2. 不要尝试 pycharm 使用 wsl 打开浏览器 /文件夹
    3. 搞个开发机吧,使用 wsl 不管是 1 还是 2 ,都是遭罪受。
    uni
        41
    uni  
       2021-12-30 13:13:19 +08:00
    刚遇到一个坑

    需求是写手机端页面要用手机在局域网里面连 wsl2 里面的 vue 开发服务器查看页面,但是局域网不能直接访问到 wsl ,必须要在 windows 上开转发,手机访问电脑,电脑转发到 localhost ,localhost 可以直接访问 wsl 的 localhost 。按照网上教程一通设置之后可以用了。

    可是不知道为什么,过了两个小时之后电脑就访问不了 localhost 了,一访问 localhost:8080 就显示找不到页面,而且电脑还会变卡,打开任务管理器之后发现是 iphelper 这个进程占用了大量 cpu ,网上搜了一圈也不知道是怎么回事

    从此之后电脑再也无法访问 localhost:8080 了,要想访问 vue 的开发服务器只能用 wsl 的 ip:8080 来访问,手机访问 vue 也只能每次开机的时候设置转发到 wsl 的 ip

    尝试了一下 127.0.0.1:8080 也不行,而用 vite 的 localhost:3000 没有问题。至今也不知道是怎么回事。
    neutrino
        42
    neutrino  
       2021-12-30 13:24:37 +08:00 via Android
    wsl 内无法用 localhost 访问 host 的端口
    virualv
        43
    virualv  
       2021-12-30 15:19:02 +08:00 via iPhone
    wsl 里看 win 下文件权限 777
    Zien
        44
    Zien  
       2021-12-30 15:30:21 +08:00 via iPhone
    启用 wsl2 后,用 vbox 和 vmware 会很卡
    makia98
        45
    makia98  
       2021-12-30 16:19:30 +08:00
    @libook 用 NAT 静态 IP 可不可以固定呢?大佬有尝试过吗
    libook
        46
    libook  
       2021-12-30 16:37:14 +08:00
    @makia98 #44 WSL2 是被微软做的一个特殊的 Hyper-V 实例,默认行为就是每次系统启动都随机一个 IP ,这个你自己是没法在 Hyper-V 的控制台里控制的,你调 NAT 静态 IP 最终的结果很可能是 WSL2 依然每次启动随机一个 IP ,然后你跟 WSL2 的网络连接按照你自己配置的静态 IP 来连接,最终发现根本连不上了。
    wangyu17455
        47
    wangyu17455  
       2021-12-30 18:50:50 +08:00   ❤️ 1
    具名管道有问题,读不到东西
    iSecret
        48
    iSecret  
       2021-12-30 19:21:06 +08:00
    用过一段时间 WSL ,装了个 Docker 没有固定 IP ,搞了一些特殊手段绑定了,但是不稳定,后来还是放弃了。
    abersheeran
        49
    abersheeran  
       2021-12-30 20:58:52 +08:00
    WSL 很友好。想用 Linux 内核的请自觉开虚拟机,而不是用到处是 BUG 的 WSL2 。
    aptx4689
        50
    aptx4689  
       2021-12-30 21:01:56 +08:00
    wsl2 + windows11 间歇蓝屏
    efaun
        51
    efaun  
       2021-12-30 21:14:34 +08:00
    在坑里从来没爬出来过, 所以退回到 win10+虚拟机
    oska874
        52
    oska874  
       2021-12-30 21:15:14 +08:00 via Android
    电脑 n 内存放大点( 32g 起步),硬盘要固态放大点( 512 起步),wsl2 不要访问 windows 的文件。
    a22271001
        53
    a22271001  
       2021-12-30 21:21:24 +08:00
    开着 WSL2 ,用 QQ 截图就狂闪😑都快半年了还没修复
    noparking188
        54
    noparking188  
       2021-12-30 22:36:06 +08:00
    我做数据开发的,工作中用了两年半了,WSL1 ,没啥大毛病,就文件系统和 git 文件换行符一些小问题
    用 WSL 最好配上 Windows Terminal
    hez2010
        55
    hez2010  
       2021-12-30 22:38:15 +08:00
    WSL2 走网络协议来做 Linux 和 Windows 文件系统之间的互操作,速度很慢,因此不要跨系统访问文件,如果你要在 WSL 内使用 Windows 下的文件,先复制到 WSL 里面,反之如果要在 Windows 下使用 WSL 里的文件,先复制出去到 Windows 里。
    Ediacaran
        56
    Ediacaran  
       2021-12-31 00:44:43 +08:00
    hyperv 经常莫名其妙的开始占用 1024 开始的端口号,导致梯子和加速器等等失效
    njzjz
        57
    njzjz  
       2021-12-31 08:28:24 +08:00 via iPhone
    电脑从睡眠模式恢复后,偶发性 dns 失效,需要 wsl --shutdown 杀掉 wsl 后重启
    11ssss
        58
    11ssss  
       2021-12-31 09:52:49 +08:00
    docker 配合 wsl 用,记得切换 wsl 磁盘目录,默认在系统用户目录下。
    容易满,前两天刚刚迁移完。
    jswh
        59
    jswh  
       2021-12-31 10:35:50 +08:00
    wsl2 + win 11 , 最大的问题还是 io 性能不行。
    zed1018
        60
    zed1018  
       2021-12-31 10:38:21 +08:00
    win11 上 9pfs 经常挂掉,挂掉以后没办法在 explorer.exe 里访问 wsl fs ,也不能在 wsl fs 里 exec win32 的程序。重启系统可以临时修复,但是肯定会复现。
    kirisamemarisas
        61
    kirisamemarisas  
       2021-12-31 11:14:56 +08:00
    主要还是 IP 和 localhost 问题吧,之前也想过开 docker 。但是有时候要测试一些想法的时还是直接上手撸最快,这坑踩过太多次了。我现在备用一个 U 盘 Manjaro 来快速逃避这些问题了,弄的话太耗心力了。
    ruanimal
        62
    ruanimal  
       2021-12-31 14:16:53 +08:00
    #7 其实是 mac 地址重启 wsl 会变
    chapiom
        63
    chapiom  
       2021-12-31 18:52:54 +08:00
    ip 变,端口映射很麻烦,局域网访问都不好弄
    unklity
        64
    unklity  
       2021-12-31 22:08:16 +08:00
    同 #37
    只是 IP 不固定以及 wslg 目前对多显示器的支持有些问题,在多显示器且使用 DPI 缩放时,部分 GUI 程序元素操作坐标会与显示不符
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5251 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:18 · PVG 15:18 · LAX 23:18 · JFK 02:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.