什么是WSL
适用于Linux的Windows子系统(
Windows Subsystem for Linux
,
WSL
),是Windows系统的一个可选扩展功能,可让开发人员按原样运行GNU/Linux环境。
- 包括大多数命令行工具、实用工具和应用程序。
- 且不会产生传统虚拟机或双启动设置开销。
之前我们已经通过文章《Windows10上开启WSL2(Windows Subsystem for Linux 2)及Docker Desktop For Windows》介绍过如何在Windows 10上开启WSL2。
接下来,我们重点介绍下,如何在全新一代操作系统Windows 11中开启WSL,这里主要是介绍商店安装和内置启用两种方式。
如果你已经升级到Windows 11,那么推荐你优先使用"商店安装"的方式来使用WSL,这种方式具备如下特点:
- 商店版WSL并非一个新版本,这只是获取及更新WSL的一种新方式。
- 商店版WSL可以帮助你以最快获取WSL的新特性。
- 当商店版WSL更新时,不再需要更新操作系统版本,它可以独立更新,以往它属于Windows版本的一部分。
商店安装
https://devblogs.microsoft.com/commandline/a-preview-of-wsl-in-the-microsoft-store-is-now-available/
1. 确保系统处于Windows 11最新版
从商店安装WSL这个操作对系统的要求是系统版本必须大于22000,这意味着Windows 11首次正式发行版(
22000.194
)及最新Insider通道的预览版都可以支持。
2. 命令行手动开启虚拟机平台依赖
在Windows 11开始菜单上右键,从"Windows终端(管理员)"进入,以管理员权限打开Windows终端,执行如下命令开启WSL依赖的"虚拟机平台"功能。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all
回答"Y",立即重启计算机。
3. 从微软商店(Microsoft Store)安装WSL
https://aka.ms/wslstorepage
点击"获取"按钮启动下载并安装。
可通过
wsl
命令来检查安装结果:
wsl
wsl --status
4. WSLg目前已经内置到商店版WSL
https://aka.ms/wslg
适用于Linux的Windows子系统的可视化界面(
Windows Subsystem for Linux GUI
,
WSLg
),已经被内置到商店版WSl中,无需额外安装了。
5. 安装喜爱的Linux发行版
https://aka.ms/wslstore
如果是才做可视化操作或者老系统命令行操作开启的,那么开启WSL之后,我们还需要前往Microsoft Store,寻找你喜爱的Linux发行版进行安装即可。
内置启用
如果你还是Windows 10或者已经是Windows 11,但是不希望使用商店安装的方式,那么我们仍然可以使用系统内置的方式启用WSL。
这里仍然包含两种方式来开启Windows系统内置的WSL.
1. 可视化操作开启
a. 首选我们需要前往Windows 11设置
通过开始菜单,我们可以找到系统设置入口,进入后切换到"应用"设置分组,找到"可选功能",点击它进入。
b. 进入更多Windows功能设置
遗憾的,虽然微软已经让众多功能都可以被可选,但是WSL的开启,仍然被藏在传统的设置界面,所以我们需要拉到"可选功能"设置页面的最底部,找到"更多Windows功能"的设置入口,点击它进入。
c. 勾选WSL所需的Windows功能依赖项
在"Windows功能"设置对话框中,我们需要拉到最底部,找到并勾选好"适用于Linux的Windows子系统"和"虚拟机平台"这两个选项,然后点击"确定"按钮,接下来会有一个进度条来等待处理。
d. 重启Windows 11系统生效WSL
根据提示重启系统生效。
回来之后,我们可以在Windows终端中输入
wsl
这个关键词来查看是否开启成功。
wsl --status
2. 命令行操作开启(Windows 11/ >= Win10 v2004)
https://docs.microsoft.com/en-us/windows/wsl/install
从Win10 v2004版本开始,系统内置了支持Wsl安装的命令行指令,我们可以直接通过如何指令一键开启并安装:
wsl --install
这个命令,默认会安装Ubuntu发行版,如果你需要指定其他Linux发行版,那么建议
-d
来指定。
wsl --install -d $DistributionName
但是如何知道目前有哪些发行版可选呢?可以通过命令来检索:
wsl --list --online
3. 命令行操作开启(< Win10 v2004)
https://docs.microsoft.com/en-us/windows/wsl/install-manual
a. 以管理员权限打开Windows终端
在Windows 11开始菜单上右键,可以看到"Windows终端(管理员)"菜单,点击它,以管理员权限打开Windows终端。
b. 依次执行如下命令来开启WSL
# 安装适用于 Linux 的 Windows 子系统dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart# 启用“虚拟机平台”可选组件dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
c. 重启Windows 11系统生效WSL
最终,还是需要重启才能生效的。
回来之后,我们可以在Windows终端中输入
wsl
这个关键词来查看是否开启成功。
wsl --status
4. 安装喜爱的Linux发行版
https://aka.ms/wslstore
如果是才做可视化操作或者老系统命令行操作开启的,那么开启WSL之后,我们还需要前往Microsoft Store,寻找你喜爱的Linux发行版进行安装即可。
安装并启用Linux发行版可视化界面
https://docs.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps
基于适用于Linux的Windows子系统的可视化界面(
Windows Subsystem for Linux GUI
,
WSLg
),从WSL2开始我们已经可以开启Linux发行版的GUI桌面应用了。
先安装对应的vGPU驱动程序
若要运行Linux GUI应用,你应该首先安装与你的系统匹配的预览驱动程序。这使你能够使用虚拟GPU(vGPU)以便你可以从硬件加速OpenGL呈现中获益。
- Intel WSL的GPU驱动程序
- AMD WSL的GPU驱动程序
- NVIDIA WSL的GPU驱动程序
a. NVIDIA
b. AMD
检查WSL更新确保到最新版本
以管理员权限运行Windows终端,执行如下命令
wsl --update
若要立即生效,需要执行如下命令来重启:
wsl --shutdown
确保分发包的索引更新到最新
sudo apt update
尝试在Linux中安装带可视化GUI界面的应用
a. 安装Gedit
Gedit是GNOME桌面环境的默认文本编辑器。
sudo apt install gedit -y
输入
gedit
命令启动
b. 安装GIMP
GIMP是一个免费的开源光栅图形编辑器,用于图像操作和图像编辑、自由格式的绘图、不同图像文件格式之间的转换,以及更专门化的任务。
sudo apt install gimp -y
c. 安装Nautilus
Nautilus(也称为GNOME文件)是GNOME桌面的文件管理器。(类似Windows文件资源管理器) 。
sudo apt install nautilus -y
输入
nautilus
命令启动
d. 安装VLC
VLC是一个免费的开源跨平台多媒体播放器和一个播放大多数多媒体文件的框架。
sudo apt install vlc -y
d. 安装X11
X11是Linux窗口系统,这是随附的应用和工具的其他集合,如xclock、xcalc计算器、用于剪切和粘贴的xclipboard、xev用于事件测试等。
sudo apt install x11-apps -y
e. 安装Linux版Google Chrome
- 将目录更改为临时文件夹:
cd /tmp
- 使用wget下载:
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- 获取当前稳定版本:
sudo dpkg -i google-chrome-stable_current_amd64.deb
- 修复包:
sudo apt install --fix-broken -y
- 配置包:
sudo dpkg -i google-chrome-stable_current_amd64.deb
f. 安装Linux版Microsoft Teams
- 将目录更改为临时文件夹:
cd /tmp
- 使用卷下载包:
sudo curl -L -o "./teams.deb" "https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb"
- 使用apt进行安装:
sudo apt install ./teams.deb -y
g. 安装Linux版Microsoft Edge
https://www.microsoftedgeinsider.com/zh-cn/download?platform=linux-deb
## Setupcurl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpgsudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/sudo sh -c \'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-beta.list\'sudo rm microsoft.gpg## Installsudo apt updatesudo apt install microsoft-edge-beta
输入
microsoft-edge
命令启动
使用及开发进阶指南
从老版本WSL升级到最新WSL
以管理员权限运行Windows终端,执行如下命令,可以检查WSL内核的更新。
wsl --update
检索本地已安装的Linux发行版
wsl --list
首次启用并设置Linux发行版
https://docs.microsoft.com/en-us/windows/wsl/setup/environment
https://aka.ms/wslusers
从商店安装完喜爱的Linux发行版之后,我们点击打开,会有个初始化设置的过程,我们需要设置好新的账号信息。
输入新创建用户的账号和密码即可。
首次使用,还建议立即执行Linux发行版的包管理的更新操作
sudo apt update && sudo apt upgrade
从Windows终端进入Linux发行版
因为Windows 11内置了Windows新终端,我们实际上可以直接从它进入到Linux发行版,这样使用起来更加便捷。
从资源管理器访问Linux所在目录
\\\\wsl$
在Windows 11资源管理器的地址栏中输入如上地址,回车,即可访问到已安装的Linux发行版的目录。
点击对应的Linux发行版名称进入,可以查看到Linux内部的目录。
以资源管理器形式访问Linux指定目录
如果在Linux终端中,我们希望查看当前Linux目录对应的Windows系统中实际存储位置的时候,我们可以在终端中输入如下命令:
explorer.exe .
这时候,当前所处的Linux目录就被资源管理器打开了。
我们会发现,原来Linux的这个根目录对应的目录是:
\\\\wsl.localhost\\Ubuntu-20.04
关于在Linux发行版中项目存储目录
https://docs.microsoft.com/zh-cn/windows/wsl/filesystems#file-storage-and-performance-across-file-systems
建议不要跨操作系统使用文件,除非有这么做的特定原因。若想获得最快的性能速度,请将文件存储在WSL文件系统中,前提是在Linux命令行(Ubuntu、OpenSUSE等)中工作。 如果使用Windows命令行(PowerShell、命令提示符)工作,请将文件存储在Windows文件系统中。
比如在存储WSL项目文件的时候,建议使用Linux的文件系统目录,比如:
\\\\wsl$\\<DistroName>\\home\\<UserName>\\Project
,而不是Windows根目录,比如:
/mnt/c/Users/<UserName>/Project$
/
C:\\Users\\<UserName>\\Project
。
在Linux发行版中安装并启用Git
通常来说,默认已经在大多数"适用于Linux的Windows子系统"安装了Git,但是如果想要获取最新版本,可通过如下命令:
sudo apt-get install git
如果还未配置Git的用户名,可通过命令配置:
git config --global user.name "Your Name"
如果还未配置Git的电子邮件,可通过命令配置:
git config --global user.email "youremail@domain.com"
基于Docker和WSL远程开发应用
若要开始使用Docker和WSL来开发应用,建议使用VS Code,以及WSL扩展和Docker扩展。
- 安装VSCode远程WSL扩展。此扩展使你能够在VS Code中打开在WSL上运行的Linux项目,(无需担心路径问题、二进制兼容性或)的其他跨操作系统挑战。
- 安装VScodeRemote-Containers扩展。此扩展使你能够在容器中打开你的项目文件夹或存储库,利用Visual Studio Code的完整功能集来完成容器中的开发工作。
- 安装VSCodeDocker扩展。此扩展添加了从VSCode内部生成、管理和部署容器化应用程序的功能。(需要Remote-Container扩展,才能实际使用容器作为开发环境。)
在Docker for Desktop设置中,启用WSL的Docker集成。
在Linux发行版中使用Visual Studio Code打开项目
https://docs.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers
以示例项目
helloworld-django
为例,我们先把它
git clone
下来,前往Linux当前用户目录。
cd /home/userName/
执行Git-Clone命令,把项目拉下来。
git clone https://github.com/mattwojo/helloworld-django.git
进入这个项目文件夹中
cd helloworld-django
通过Visual Studio Code打开当前目录
code .
如果我们安装了WSL和Docker集成的VS Code插件的话,那么会启动远程连接。
通过命令面板调用"remote-container:open folder in container".
点击OK
然后将会打开VsCode新实例,开始生成Docker镜像,并且启动容器。
点击运行按钮,添加调试文件,然后开始调式
Docker映像存储文件夹
https://docs.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers
Docker创建了两个用于存储数据的发行版文件夹:
-
\\\\wsl.localhost\\docker-desktop
-
\\\\wsl.localhost\\docker-desktop-data
参考
- A preview of WSL in the Microsoft Store is now available!
- Install WSL with a single command now available in Windows 10 version 2004 and higher