WSL指南
为什么使用WSL?
Section titled “为什么使用WSL?”比起双系统或者完整虚拟机,WSL安装更加方便,并且能够方便地互相访问文件。
如果你是Windows 11的操作系统,WSL就已经内置在系统当中了。Windows 10 Build 19041 及以上版本也内置WSL。
如果你的系统比较老,那么可以参考微软的文档。其中也提及了启用虚拟化的方法。
wsl有1和2两个版本,这里建议使用wsl2的版本,打开powershell,使用如下命令可以将默认的wsl版本设置为2:
wsl --set-default-version 2输入以下命令查看可用的Linux发行版:
wsl --list --online输入以下命令安装Linux发行版:
wsl --install默认情况下,安装的是最新版本的Ubuntu系统。
如果想要指定安装其他发行版,可以-d选项,使用--location设置安装发行版的路径,至于更多选项,可以使用以下命令查看:
wsl --help作为示范,此处选择了安装Ubuntu 24.04 LTS,原因是学校大多数课程使用Ubuntu作为实验环境。
wsl --install -d Ubuntu-24.04 --location D:\WSL\Ubuntu\在下载完毕后,你可以看到如下内容:

你需要输入一个新的用户名和密码,之后就可以进入Linux系统了。
为了打开你刚才安装的Linux发行版,你需要重新启动PowerShell(准确来说是Windows Terminal),然后你就可以在下拉菜单上看见刚才安装的Linux发行版了。

在进入系统后,推荐给root设置密码:
sudo passwd rootwsl默认会将Windows的环境变量导入到Linux系统中,推荐关闭这个功能,因为WSL2对Windows文件系统的访问速度非常慢,导致bash在PATH中查询可执行文件时,速度会非常慢。你可以通过编辑/etc/wsl.conf文件来关闭这个功能,在文件中添加以下内容:
[interop]appendWindowsPath = falsewsl会自动将windows的盘符挂载到/mnt目录下,例如C盘会挂载到/mnt/c目录下。如果你不想挂载(这样也不能访问windows中的文件了),可以在/etc/wsl.conf文件中添加以下内容:
[automount]enabled = false如果你希望在wsl能够使用你在Windows上的代理,你需要在Windows系统中的%USERPROFILE%\.wslconfig文件中添加以下内容:
[wsl2]networkingMode = mirrored注意[wsl2]如果已经存在,只需要在下面添加networkingMode = mirrored即可。
上述内容需要你重新启动wsl才能生效,使用如下命令关闭wsl:
wsl --shutdown注意,关闭wsl也会关闭所有正在运行的wsl中的Linux发行版。此外,如果你更变Windows中的系统代理,也需要重新启动wsl才能生效。
你可能发现在Ubuntu中使用apt命令时下载速度极慢,这时你需要更换镜像源,你需要编辑/etc/apt/sources.list.d/ubuntu.sources文件。详细编辑内容,可以参考清华大学开源软件镜像站给出的Ubuntu镜像源配置,按照DEB822 格式配置。
配置完成后,使用以下命令更新apt缓存:
sudo apt update这个命令不仅可以帮助你启用新的镜像源,还能够帮助你获取最新的软件包的列表。
对于其他的发行版,可以自行上网查询。
关闭wsl时的问题
Section titled “关闭wsl时的问题”如果你一直使用wsl --shutdown命令关闭wsl,而不先关闭正在运行的Linux发行版,可能会导致某些系统进程反复启动但从不关闭的问题。这不会有太大影响,但最好还是先关闭Linux发行版再关闭wsl。
关闭系统可以使用sudo systemctl poweroff命令。关闭窗口不会关闭系统,原因是Windows Terminal只是使用ssh连接到wsl中的Linux发行版,关闭窗口相当于断开连接。
在wsl中使用图形化界面
Section titled “在wsl中使用图形化界面”为了在wsl中使用图形化界面,你需要用到wslg,wslg一般是伴随着wsl一起安装的。如果没有安装,可以参考微软的文档。
你需要手动设置启动图形化界面支持,在Windows系统中的%USERPROFILE%\.wslconfig文件中添加以下内容:
[wsl2]guiApplications=true这个图形化界面的bug还是非常多的,首先中文的显示问题比较大,而且有较大的性能问题,所以不建议过分依赖图形化界面。
/var/log/syslog文件过大
Section titled “/var/log/syslog文件过大”wslg的问题是非常多的,有时会不断地往/var/log/syslog中写入大量内容,间隔时间是毫秒级别的,这导致日志文件很容易就达到数GB的大小,虽然日志文件会定期清理,但这样还是会非常占据磁盘空间,而且影响日志查看。
笔者由于更换过系统,已经无法复现这个问题了,如果你遇到了这个情况,欢迎在此处写下具体日志内容与解决方案。
在wsl中使用VSCode
Section titled “在wsl中使用VSCode”VSCode对wsl有特殊照顾,在正常情况下,可以使用code命令来让Windows中的VSCode远程连接到wsl中的Linux发行版,在连接前,你需要首先在Windows环境下下载VSCode(环境变量会自动设置),执行code命令后会自动给你下载插件,接着就可以使用了,无须依赖wslg。
不过需要注意的是,由于在之前你可能已经把Windows中的PATH从Linux的PATH中剔除了,所以code命令无法使用。解决方法很简单,所谓的code,其实是VSCode安装时,同时安装的一个bash脚本。如果你的VSCode下载在D:\path\to\VSCode目录下,那么code脚本就位于D:\path\to\VSCode\bin中,你只需要选择一个目录(一般是你的Linux环境中PATH中的某个目录),然后创建一个软链接指向code脚本即可。例如:
ln -s /mnt/d/path/to/VSCode/bin/code /usr/local/bin/code无法在wsl中运行Windows的可执行文件
Section titled “无法在wsl中运行Windows的可执行文件”wsl中的Linux发行版是允许运行Windows的可执行文件的,但往往会出现无法运行的情况。你可以参考这个issue中给出的解决方案。
笔者也把要执行的bash命令放在这里:
sudo sh -c 'echo :WSLInterop:M::MZ::/init:PF > /usr/lib/binfmt.d/WSLInterop.conf'sudo systemctl restart systemd-binfmt为什么要运行Windows中的可执行文件?例如在neovim中,你可能会启用系统剪切板,为了让剪贴板的内容与Windows系统的剪贴板内容互通,你可能会使用clip.exe,这种情况下,你需要运行Windows中的可执行文件。
安装最新版本的clang
Section titled “安装最新版本的clang”为什么要安装最新版本的clang?因为最新的语言特性需要你使用最新版本的编译器才能支持。如果你没有这个需求,你可以直接跳过这部分内容。
为什么不使用apt直接安装?如果你是依照上面的方法安装Ubuntu的话,你会发现源中的clang版本可能不是最新的。
例如,笔者在写这篇文章的时候,Ubuntu noble源中clang的最新版本是20,而最新的版本是21。
如果你觉得这个版本已经足够用了,那么你可以直接使用:
sudo apt install clang-20接下来讲解如何安装最新版本的clang。
笔者并不推荐通过源码编译的方式来安装最新版本的clang,原因如下:
- 较长的编译时间。笔者在自己的电脑上要花费3个小时及以上才能编译完
LLVM项目的clang以及其他大部分组件。 - 编译可能会出错。在编译过程中,非常容易出现不明原因出现错误,在删除某些编译文件后重新编译,又成功的情况。
- 需要较大的内存。编译这种大项目往往使用多线程编译,这会占用大量内存。
- 卸载麻烦。如果你删除了LLVM项目源文件,在卸载时,需要重新下载源文件,用相同的参数运行
./configure,接着再使用make uninstall。(注:你也可以提前管理安装路径来避免这种麻烦,例如这篇文章提到的方法)
LLVM官方已经为Debian/Ubuntu提供了预编译的二进制包,详见官方网站。
安装方法如下:
首先下载安装脚本并赋予可执行权限:
wget https://apt.llvm.org/llvm.shchmod u+x llvm.sh接下来下载你需要的版本,例如21:
sudo ./llvm.sh 21这个脚本会加入官方的apt源,更新缓存,并下载指定的clang版本到你的系统。
此时应该安装好了clang-21,你可以使用以下命令来查看:
apt list --installed | grep clangclang-21 --version这样,你就可以使用apt来方便地管理clang的安装、卸载和更新。
需要注意的是,该脚本使用的是老的安装方法,该方法已经由于安全原因被弃用了,你可以参考该网站来了解如何处理这个问题。
LLVM项目的其他工具,例如clang-tidy, clang-format,默认不会安装,但你可以通过apt来很方便的安装,例如:
sudo apt install clang-tidy-21 clang-format-21