WSL

WSL是一个启用适用于 Linux 的 Windows 子系统

为Window开启WSL2功能

打开控制面板程序和功能启用或关闭Windows功能勾选 适用于Linux的Windows子系统
程序和功能
或者已管理员权限在powershell中运行以下命令

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

安装

Microsoft Store 搜索Ubuntu,安装 Ubuntu 22.04.1 LTS
Ubuntu
安装完成后可以在开始菜单找到Ubuntu,第一次打开的时候会提示你设置账号密码,按照要求设置完成就好了

将版本从 WSL 1 升级到 WSL 2

在powershell 中运行 wsl -l -v 命令查看当前系统中的WSL版本

PS D:\> wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
  Ubuntu-22.04           Running         1

切换到WSL2

wsl --set-version Ubuntu-22.04 2

执行命令需要一段时间,成功后会提示

正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。

重新查看版本

PS D:\> wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
  Ubuntu-22.04           Stopped         2

可以看到 Ubuntu-22.04的版本已经是 2 了。

迁移WSL到其他盘(非必须)

WSL在应用商店中下载时模式是下载到C盘的,如果C盘容量不高, 未来WSL文件夹可能会越来越大,所以我这里提前将WSL迁移到了D盘。

todo…

一、安装LxRunOffline

下载迁移工具LxRunOffline v3.5.0安装完成后在终端中进入安装的文件夹,执行 LxRunoffline.exe list 查看已安装的子系统
LxRunOffline

二、查看默认位置

执行命令查看Unbuntu子系统所在的安装目录

 ./LxRunOffline.exe get-dir -n Ubuntu-22.04

img
因为我这里已经是迁移完成后的目录了,所在在D盘,没迁移前的默认位置应该是在

C:\Users\${UserName}$\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

${UserName}是你本地的系统用户名称,替换后进入这个文件夹可以看到Linux子系统的根目录了

三、创建目标目录

在D盘或者其他非系统盘创建目录,例如我这里在D盘创建了Unbuntu目录,并设置这个目录的权限

icacls D:\Unbuntu /grant "${UserName}:(OI)(CI)(F)"

${UserName}替换为你的系统用户名,如果不知道自己的用户名是什么,可以执行 whoanmi 命令查看

四、迁移

执行下面的命令

.\LxRunOffline move -n Ubuntu-22.04 -d D:\Ubuntu\Ubuntu-22.04

命令执行完成后输出一堆Waring,迁移如果成功了,会自动退出,重新进入D盘就可以看到系统文件夹了
Unbuntu

五、WSL权限问题

.zshrc 配置文件中添加以下配置

# wsl 权限问题
# Fixing Bad Default Permissions
if [ "$(umask)" = "000" ]; then
  umask 022
fi

Windows Terminal

Windows Terminal是一款新式、快速、高效、强大且高效的终端应用程序,适用于命令行工具和命令提示符,PowerShell和 WSL 等 Shell 用户。主要功能包括多个选项卡、窗格、Unicode、和 UTF-8 字符支持,GPU 加速文本渲染引擎以及自定义主题、样式和配置
在Microsoft Store 中安装 WIndows Terminal
Windows Terminal
安装完成后启动软件,默认打开的应该是 Windows PowerShell 模式,可以在右边按钮选择新打开 WSL标签页
Window Terminal
选择 Ubuntu-22.04 即可打开WSL终端,也可以选择在 Windows Terminal 设置中设置默认配置文件为Ubuntu-22.04,这样以后每次启动Windows Terminal打开的就都是 WSl环境了

设置美化

默认的WSL环境在Windows Terminal中看起来不是很好看,可以通过一些设置来美化终端,打开设置,选择 Unbuntu 22.04 外观,设置以下四个选项
Window Terminal
强烈推荐 Comic Mono 字体,可以在这里下载 Comic Mono | comic-mono-font

on-my-zsh

todo
WSL迁移过程-阿里云开发者社区

插件

主题插件:推荐 GitHub - romkatv/powerlevel10k: A Zsh theme

权限问题

todo

开发依赖安装

Node

进入WSL,执行下面命令来安装NodeJs

curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -

然后

sudo apt-get install -y nodejs

执行完成后通过 node -v 或者 npm —version 查看是否安装成功

n

安装 n node 版本管理器

 npm install -g n

Pnpm

wget -qO- https://get.pnpm.io/install.sh | sh -

Git

多账号配置

TODO 这个不多说了,网上很多都是,直接贴一份config文件吧

Host aliyun
  HostName codeup.aliyun.com
  User LiYang
  IdentityFile /home/liyang/.ssh/id_rsa
 
Host github
  HostName github.com
  User xxx
  PreferredAuthentications publickey
  IdentityFile /home/liyang/.ssh/id_rsa_github

不太确定能否直接使用window环境的git配置,没有试过,我是直接重新生成了ssh key
存在的问题,每次启动无法直接使用 ssh 相关命令,需要先执行

eval "$(ssh-agent)"

执行ssh-add -l 查看添加的公钥,如果没有,则添加

ssh-add ~/.ssh/xxx

xxx 是你自己定义的密钥文件

设置终端启动时自启动ssh-agent和自动添加ssh-add,在.zshrc或者.bashrc 文件中添加以下配置

# git ssh
eval $(ssh-agent -s) > /dev/null
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_github
trap 'test -n "$SSH_AGENT_PID" && eval `/usr/bin/ssh-agent -k` > /dev/null' 0
# git ssh end

参考

VsCode

在vscode 中可以直接使用 wsl 进行开发,首先我们配置好git之后,在wsl中创建目录文件夹(直接在根目录创建就好),然后从github 或者 gitlab上clone项目,cd 进项目目录后,执行 code . 命令,该命令会直接在外部Windows 打开Vscode,与正常的Window 本地项目的区别是在vscode左下角会展示WSL的链接
vscode wsl
我们还可以下载Vscode Project Manager 插件来快捷管理项目
Project Manager
在侧边栏中可以直接管理项目
Project Manager
点击保存按钮可以将当前打开的项目保存起来,下次可以直接从Vscode中进行打开
另外对于VSCode的插件,部分插件需要在WSL中进行单独安装才可以使用
Vscode Plugin

参考文档

安装 WSL | Microsoft Docs