🌝

用 WSL2 在 Windows 上搭建 Linux 开发环境

Posted at — Mar 26, 2022
#WSL2 #Arch Linux #VSCode

平时开发需要多台 Linux 设备搭建分布式环境,但因为穷,只能在实验室电脑上用虚拟机搭建,正好体验一把 Arch Linux 的安装,于是昨天就用 VMware 安装了 Arch Linux(好像也没传闻中那么困难)不过晚些时候沙雕网友叫我用更方便的 WSL2,于是今天就试了试,从此告别 VMware。

WSL (Windows Subsystem for Linux) 是 Windows 自带的 Linux 子系统功能,目的是在 Windows 上运行 GNU/Linux 环境,包括大多数命令行工具和一些应用程序,没有传统的虚拟机(如 VMware)或 DualBoot 设置的开销。WSL2 是 WSL 的第二个版本,比第一个版本有更高的性能,具体差别见官方文档 Comparing WSL and WSL2。这篇文章简单记录下 WSL2 的启用方式,你也可以直接根据 官方文档 来操作。

启用 WSL2

目前官方给了自动和手动两种启用方式,较新的 Windows10 和 Windows11 可以使用自动的方式。

自动

以管理员身份打开 PowerShell 或 CMD 运行下面命令即可。

1
wsl --install

手动

启用 Windows 子系统和虚拟机功能。

因为 Windows 默认关闭这两项功能。这一步有图形界面和命令行两种方式。使用命令行的话依次运行下面两个命令即可

打开子系统功能

1
dism /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

打开虚拟机功能

1
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

使用图形界面的话,首先打开 “控制面板”,然后点击 “程序”,再点击 “启用或关闭 Windows 功能”,勾选 “适用于 Linux 的 Windows 子系统” 和 “虚拟机平台”,最后点击 “确定”。然后会要求重启,立刻重启即可。

更新 Linux 内核包

在官方给的这个 链接 下载新的 Linux 内核安装程序,打开根据提示安装即可。

设置 WSL2 为默认使用版本

同样的,使用 PowerShell 和 CMD 运行下面命令

1
wsl --set-default-version 2

其实自动的方式里运行的那条命令只是帮你完成了手动方式的内容而已。现在 WSL2 已经成功启用了,你可以运行 wsl --help 查看 WSL2 的使用方式。接下来安装具体的 Linux 发行版。

安装子系统

首先运行下面命令查看当前官方应用商店里有哪些可用的 Linux 发行版

1
wsl -l --online

写这篇文章时可安装的发行版有:

Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS

安装 debian(当然你可以选个自己熟悉的,就上列出的里面,我是比较喜欢 debian 的)

1
wsl --install -d debian

然后,等待其下载好即可。下载完成后会自动启动 debian 让你设置用户名和密码(不过,我还是更喜欢 Arch,安装方法见最后面)

安装好后,运行命令 wsl -l 可看到当前已安装的子系统。

进入子系统

进入刚刚安装的 debian 子系统

1
wsl -d debian

VSCode WSL 插件

WSL2 最令我吃惊的功能,也是我从传统虚拟机换到使用 WSL2 的原因,是它可以在宿主机上直接打开子系统里的文件或目录,甚至是打开子系统里带 GUI 的应用程序。比如在子系统里直接运行 explorer.exe 路径 可以看到是宿主机的文件浏览器打开了该路径。

我平时的开发工作,包括 C/C艹, Go, Python, Web 前端, 或 Jupyter Notebook,全是通过 VSCode 进行的,对我来说 VSCode 加上对应环境的插件已经能代替所有的 IDE。这里针对 WSL/WSL2,有个叫 “Remote - WSL” 的插件用来在 VSCode 上打开子系统里的目录,就像是在宿主机上使用一样。

首先在宿主机 VSCode 中安装插件:Remote - WSL,安装成功后,VSCode 的功能栏会多一个图标,点击它能看到当前安装的子系统,选择一个,点击旁边的连接按钮,或者右键点击连接,这样 VSCode 会自动连接上该子系统并为其安装 VSCode Server。

安装完成后,在子系统里运行 code 路径,如

1
code dev

可以看到宿主机的 VSCode 打开了子系统的 dev 路径,然后就像在宿主机上使用 VSCode 一样,只不过操作的是子系统里的。

对于需要在 Windows 上使用 Linux 的小伙伴,WSL2 + VSCode 应该是最简单的方案。比我之前使用的 VMware + VScode SSH 方案方便得多,而且 WSL2 比 VMware 性能高得多,比如软件包安装速度很快,VSCode 上编辑文件感受不到延迟等等。

安装 Arch Linux

好了,现在介绍下我怎么在 WSL2 上使用的 Arch Linux。因为巨硬官方并没有 WSL 版本的 Arch,所以我用的第三方维护的镜像。

首先在 这儿 下载由 yuk7 维护的 WSL Arch 安装器,我直接选的 Arch.zip,下载好解压,运行里面的 Arch.exe 文件,它会自动将 Arch 装进 WSL2 里。

安装好后同样运行命令 wsl -l,可以看到 Arch 已经在 WSL2 中了。然后运行 wsl -d arch 进入该子系统更新下软件包

首先将 pacman 切换为国内的镜像源,打开 pacman 的镜像源地址文件

1
vim /etc/pacman.d/mirrorlist

可以看到里面已经写好了各个国家的镜像源地址,找到 China 的部分,选几个你喜欢的国内源取消注释,保存退出即可。

然后强制更新拉取更新最新软件包

1
pacman -Syyu

你可以装一下基础开发工具链(里面包括 gcc, make 等基础编译工具)

1
pacman -S base-devel

和网络工具包(里面包括 ifconfig 等常用网络工具)

1
pacman -S net-tools

和打印系统信息的 neofetch

1
pacman -S neofetch

看下效果(我用的是巨硬官方的 Windows Terminal,支持一个窗口打开多个标签)

wsl2

最后你可以设置下 root 用户的密码

1
passwd
评论插件加载中 OvO