最近更新于 2024-05-05 21:15
WSL 全称 Windows Subsystem for Linux,可以把 Linux 作为一个子系统在 Windows 原生运行。目前有两代,称为 WSL 和 WSL2。
WSL 第一代是用 Windows 来模拟 Linux kernal,处理系统相关的交互,只有命令行界面,文件系统不能在 Windows 下访问。
而 WSL 2 则是像虚拟机一样,运行了真正的 Linux。和虚拟机不同的是,它速度非常快,而且文件系统互通,可以直接在 Windows 下访问,并且目前 WSL2 已经支持虚拟 GPU 了,而通过虚拟机安装的系统目前还无法支持。
WSLg 是 Windows Subsystem for Linux GUI 的缩写,该项目的目的是在完全集成的桌面体验中支持在 Windows 上运行 Linux 图形界面应用程序(X11 和 Wayland)。
WSLg 实现了 Windows Linux 同时使用的体验。在 Windows 系统下可以同时使用 Windows 和 Linux 应用。而且,WSLg 使 Linux GUI App 像 Windows 上的原生应用,可以直接整合到开始菜单或者任务栏中,从 alt-tab 窗口切换即可体验到实现跨 Windows 和 Linux 应用程序的窗口切换。
WSLg 是否得到支持与 Windows 版本有关,但是也没看到文档说至少要到哪个版本,反正就是从某个版本开始 WSL2 可以直接运行图形程序在 Windows 图形环境中。如果在终端执行一个图形程序时,提示没有找到显示设备那就是不支持 WSLg,反之出现了程序窗口那就是支持 WSLg。如果是不支持 WSLg 的 Windows 版本,可以尝试升级 Windows 到最新版本,那就肯定支持了。
Windows 10 安装工具下载:https://www.microsoft.com/zh-cn/software-download/windows10
Windows 11 安装工具下载:https://www.microsoft.com/zh-cn/software-download/windows11
参考文档
WSL 文档:https://docs.microsoft.com/zh-cn/windows/wsl/
CUDA 支持:https://docs.nvidia.com/cuda/wsl-user-guide/index.html
测试设备环境
笔记本电脑:
OS:Windows 11 专业工作站版 21H2
CPU:Intel i5-8265U
内存:20GB
集成显卡:Intel UHD Graphics 620
独立显卡:NVIDIA GeForce MX230
启用 WSLg
以管理员权限运行 PowerShell
1.启用 WSL 相关支持
wsl --install
执行上面命令会自动启用所需功能、下载安装 Linux 内核以及设置默认 WSL 版本为 WSL2 等等。但是默认会安装 Ubuntu(如下图),不管是不是想使用 Ubuntu 子系统,在看到 “正在下载:Ubuntu” 后都建议按 Ctrl+C 终止掉,这个下载速度慢得一匹。
2.安装子系统
查看可安装的子系统版本
wsl --list --online
再次强调不建议按上面提示的命令方式安装,下载速度实在是惨不忍睹。
要安装的话建议打开 Windows 应用商店,搜索要安装的子系统
安装完以后,打开子系统
首次启动会进行一些配置,然后自行设置用户名和密码就行(强调 Linux 下输入密码不会显示星号,只管输入就行,回车确认)
我这个版本的系统中的 WSL2 是支持 WSLg 的,即代表已经启用了 WSLg,可以直接运行图形程序。
这里可以简单测试一下,以 Python3 Tkinter 为示例:
sudo apt update && sudo apt install -y python3 python3-tk python3 -m tkinter
附:
(1)强制重启 WSL
打开 PowerShell 执行
wsl --shutdown
(2)限制内存大小
再打开 WSL
按照默认状态,WSL 会占用很多内存,对于内存大的电脑来说影响不大,但是对于内存小的电脑来说估计很容易死机,再加上一般情况下 Linux 占用内存也不高(相比 Windows 来说少太多),完全没必要给那么多内存。
如果要限制内存,打开文件资源管理,在地址栏输入 %UserProfile% 回车进入用户目录,创建一个文本文件并命名为 .wslconfig,注意这个文件没有扩展名。如果关闭了扩展名显示的,前往 查看-选项 去掉下图位置的勾选。
.wslconfig 配置文件书写格式参考:
内存分配 8GB,交换分区设置为 4GB。具体内存大小设置根据自己的电脑的配置而定。
[wsl2] memory=8GB swap=4GB localhostForwarding=true
最后一行的配置是:启用本地主机转发功能,允许WSL 2 实例访问主机上的网络服务。这样,你可以从WSL 2 实例中访问主机上运行的应用程序或服务。
重启子系统,查看内存情况
free -h
(3)文件交互
从 Windows 访问子系统
打开文件资源管理器,在地址栏输入 \\wsl$ 回车
从子系统访问 Windows
在 /mnt 路径下就能看到磁盘盘符
(4)设置中文支持
sudo apt update && sudo apt install -y locales sudo dpkg-reconfigure locales
上下键移动选项框,空格键勾选,回车键确认。
往下接近底部找到并勾选 zh_CN.UTF-8
移动选项框到 zh_CN.UTF-8 回车
另外中文在某些应用中可能存在显示方框的情况,可安装字体
sudo apt update && sudo apt install -y ttf-wqy-microhei ttf-wqy-zenhei xfonts-intl-chinese
重启 WSL 有效
(5)apt 国内镜像
https://blog.iyatt.com/?p=1495
(6)查看子系统状态
wsl --list --verbose
第一列是子系统名字,可以同时安装不同的子系统,第二列是运行状态,第三列是 WSL 版本