提示:在继续阅读之前,请注意此文章最后更新于 1771 天前,其中的部分内容可能已经无效或过时。

安装wsl2

前置条件:

  • 更新windows到2004: https://go.microsoft.com/fwlink/?LinkID=799445
  • 启用wsl2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
 <!-- more -->
# 重启
# WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel。下载内核包安装
 
wsl --set-default-version 2 # wsl2需要开启BIOS 虚拟化支持

其实官网文档更加的步骤分明和详细,并针对常见错误进行了解答。参见 适用于 Linux 的 Windows 子系统安装指南 (Windows 10)。并提供了自动化安装方法wsl --install

# 常用命令
wsl --help 
wsl --list --verbose # 查看已安装linux分发版的wsl版本

安装docker

参考 docker安装和踩坑记录

安装node

  • 方法一
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
 
sudo apt-get install -y nodejs
  • 方法二(不推荐,会有一些问题) 使用二进制压缩包安装,下载:
随意放到一个目录下,比如放到~/package

cd ~/package
sudo tar xf node-v12.18.3-linux-x64.tar.xz
# 备份.bashrc
cp ~/.bashrc ~/.bashrc.bak
vim ~/.bashrc
# 在结尾加上 export PATH="$PATH:~/package/node-v12.18.3-linux-x64/bin
# 如果碰到使用npm报/usr/bin/env: ‘node’: No such file or directory。需要创建一个软连接
ln -s ~/package/node-v12.18.3-linux-x64/bin/node /usr/bin/node

这种方法只有当前用户可以使用npm,原因目前还没有搞得很清楚。 root用户下node可用但是npm不可用,不知道为什么,想要往~/.bashrc里加$PATH需要注意不能用~/,因为当前用户是root。要用/home/xzdry(node二进制包的位置)

  • 方法三 按照yarn官网推荐的,运行
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt-get update && sudo apt-get install yarn

这种办法下载的node比较老。参考yarn安装 安装q的话只能在sudo下安装。在xzdry用户下依然会报/bin/sh: 1: npm: not found这个错误

其它问题

子系统home路径在哪里

C:\Users\n0049651\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home

也可以通过vscode打开

无法在container里打开git respository?

ssh-add $HOME/.ssh/github_rsa // 将本地的sshkey 传输到 openssh agent # 或者创建一个软链接链接到本地
 
alpine 使用阿里云的源:
 
C:\Users\n0049651\.vscode\extensions\ms-vscode-remote.remote-containers-0.134.1\scripts
 
修改2个Dockerfile文件:
 
FROM alpine:3.11.2
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache \
    nodejs \
    git \
    openssh-client \
    docker-cli \
    ;

切换阿里云

sudo npm config set registry https://registry.npm.taobao.org --global
sudo npm i yarn -g
sudo yarn config set registry https://registry.npm.taobao.org --global

重启wsl

net stop LxssManager
net start LxssManager
# 或
wsl --shutdown

wsl2内存占用过大

%UserProfile%
 
.wslconfig
 
[wsl2]
memory=4GB
swap=0
localhostForwarding=true

不加载windows path

默认会加载windows下的全局PATH,但这样就不够纯净,会导致npm找不到的问题,具体参见: Problems with Windows PATH variable getting imported #1890
问题截图:

原因是linux加载win的脚本会带上^,更为详细的原因还需要继续学习探知

# 在C:\Users\<yourUserName>\.wslconfig下添加,如没有需要创建
# 路径也可以写成 %UserProfile%\.wslconfig
[interop]
enabled = true
appendWindowsPath = false

参考

Problems with Windows PATH variable getting imported #1890
更新 WSL 2 Linux 内核
用 wslconfig 配置全局选项
WSL commands and launch configurations yarn安装