频道
bg

WSL2

coding四月 18, 20161mins
OP Windows

安装H1

  1. 安装 Windows Subsystem for Linux

    bash

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  2. 启用 Virtual Machine Platform 组件

    bash

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  3. Windows商店安装Linux发行版本

  4. 设置WSL 2

    bash

    wsl --set-version Ubuntu 2 # 设置已经安装的发型版本
    wsl --set-default-version 2 # 设置全局的默认版本

问题H1

设置wsl --set-default-version 2 报错

Error: 0x1bc For information on key differences with WSL 2 please visit https://aka.ms/wsl2

需要更新WSL2内核,https://docs.microsoft.com/nl-nl/windows/wsl/wsl2-kernel

内部端口访问

子系统内和Windows是可以通过localhost互相访问服务的。但是本地网络的其他主机是无法通过文芳Windows主机的IP访问到子系统内的服务内,因为在子系统的端口监听在Windows下都是12.0.0.1(或者让TCP6的:::1)。

可以通过netsh转发来解决这个问题

netsh其他命令

bash

netsh interface portproxy reset #清除所有转发规则
netsh interface portproxy show v4tov4 #查看所有ipv4的转发规则

文件共享

子系统默认会把c盘等Windows的分区挂载到/mnt 目录下。

但是默认情况下,挂载目录的文件权限均为777,这会导致一些程序运行出问题。DrvFs 文件系统类型支持Additional Metadata 来正确显示linux下文件权限。

通过wsl.conf 可以配置挂载目录的参数

jsx

enabled = true
options = "metadata,umask=22,fmask=11"

使用共享目录时,性能会比较差还会模型奇妙出现一些奇怪的问题,所以最好不好把共享目录用做工程的开发目录。


参考:

  1. https://docs.microsoft.com/en-us/windows/wsl/install-win10
  2. https://github.com/microsoft/WSL/issues/5651
  3. https://dev.to/vishnumohanrk/wsl-port-forwarding-2e22

评论


新的评论

匹配您的Gravatar头像

Joen Yu

@2022 JoenYu, all rights reserved. Made with love.