WSL:Windows 与 Linux 的无缝对接
NOI_Winner · · 科技·工程
适用于 Linux 的 Windows 子系统(WSL,Windows Subsystem for Linux)可以让我们在 Windows 上直接运行 Linux 环境。通过它,我们可以运行不同的 Linux 发行版(如 Ubuntu、Debian),方便的使用 Linux 的终端工具甚至是 GUI 应用,不仅不需要安装虚拟机或双系统,还更好的实现了 Windows 与 Linux 的无缝对接。
效果示意图:
本文将从以下几个方面介绍 WSL 的使用方法。
- 安装 WSL
- WSL 的基本操作(命令行与 GUI)
- 设置中文界面
- 使用 Visual Studio Code 在 WSL 上进行开发
不同版本的 Windows 在安装及使用上方法可能略有不同,我使用的操作系统为 Windows 11 专业版 24H2。
注意:Windows 家庭版由于没有预安装 Hyper-V,无法直接安装 WSL,但也不是没有解决方法,请自行查阅资料。
安装 WSL
首先,你需要确保在 BIOS 中启用虚拟化技术。你可以打开任务管理器,点击性能。如果已经启用,将会如下图所示:
否则你需要在 BIOS 中启用虚拟化技术。不同品牌和型号的电脑 BIOS 的使用方法各有不同,在此不再展开。
*如果你是在虚拟机中的 Windows 安装 WSL
此时你不仅需要从电脑 BIOS 中启用虚拟化技术,还要为虚拟机启用虚拟化技术。以 VMware Workstation 为例,先将虚拟机关机(不是挂起),在菜单栏中点击虚拟机,再点击设置,打开处理器的设置,勾选虚拟化引擎的虚拟化 Intel VT-x/EPT 或 AMD-V/RVI 选项就行了。
确认开启虚拟化技术后,我们以管理员身份打开 PowerShell,输入如下命令:
wsl --install
此时我们重启电脑,再次以管理员身份运行 PowerShell。
WSL 可以安装多种不同的 Linux 发行版,我们可以通过如下命令列出可用的分发。
wsl --list --online
但你大概率遇到如下情况:
方法一:更改 DNS
打开设置,打开网络和 Internet 设置,再打开高级网络设置,点击当前使用的网络适配器,打开查看其他属性,点击编辑 DNS 服务器分配,将自动改为手动,打开 IPv4 开关,首选 DNS 填入 114.114.114.114
,保存设置。
再次输入上面的命令就可以了。
但是我在不同电脑上使用该种方法,发现有的可以解决而有的不行。如果不行,请使用如下的方法:
方法二:修改 hosts 文件
以管理员身份运行记事本,打开 C:\Windows\System32\drivers\etc\host
,在末尾另起一行加上 185.199.110.133 raw.githubusercontent.com
,保存文件,就可以了。
运行 wsl --list --online
,会列出可用的 Linux 发行版。可以使用如下命令安装指定的发行版:
wsl --install <Distro>
我选择了直接安装默认的 Ubuntu 版本,执行了如下命令:
wsl --install
此时已经完成了 WSL 的安装。
WSL 的基本操作
在开始菜单中打开 Ubuntu,系统会让我们创建一个用户名,这将作为用户文件夹的名字。然后我们需要设置一个密码,请牢记该密码,以后在使用 sudo
命令时需要输入该密码。然后我们就可以使用 WSL 了。
此时我们看到的是 WSL 的命令行工具,它的使用方法与 Ubuntu 是一样的,且 WSL 可以方便的实现跨 OS 文件访问。
从 Linux 访问 Windows 文件
我们可以导航到 /mnt
,然后导航到 Windows 驱动器号(如 C 驱动器)即可访问 Windows 文件。
cd /mnt/c
这条命令可以导航到 C 盘。
从 Windows 访问 Linux 文件
打开文件资源管理器,我们可以点击 Linux 图标,然后即可访问 Linux 文件。此外,导航到 \\wsl.localhost\
也可以访问 Linux 文件。
从 Linux 启动 Windows 程序
在 WSL 中也可以运行 Windows 程序,如运行:
powershell.exe /c start
将从当前文件夹启动 PowerShell。需要注意的是运行 Windows 应用程序必须要加后缀名 .exe
。
其他命令行操作方法,都与一般的 Ubuntu 基本一致。
运行 GUI 程序
WSL 上的 GUI 程序个人感觉实际用处不大,因为 Windows 上的程序已经能解决绝大多数问题了,且 WSL 上的 GUI 程序不太美观。
我们将以 gedit 为例,先下载并安装 gedit:
sudo apt install gedit
安装成功后,我们启动 gedit:
gedit
就可以看到 gedit 的窗口了。
设置中文界面
此时 Ubuntu 的界面是英文的,你也可以设置成中文界面,运行如下命令:
sudo apt install language-pack-zh-hans
安装中文语言包。再运行:
sudo vim /etc/default/locale
将内容改为 LANG=zh_CN.UTF-8
并保存。再运行:
sudo vim /etc/locale.gen
找到 # zh_CN.UTF-8 UTF-8
取消注释并保存。最后运行:
sudo locale-gen
此时重启 Ubuntu 即可显示中文。
如果你此时打开 gedit,你会发现天塌了:
原因是 Ubuntu 里没有中文字体,我们需要自己添加。最简单的方法是直接将 Windows 的字体复制到 Ubuntu 中,执行以下命令:
sudo cp -r /mnt/c/Windows/Fonts /usr/share/fonts/truetype/chinese
然后运行:
fc-cache -f -v
此时打开 gedit 就可以了。
但是此时使用 man
命令依然是英文的,我们也可以设置成中文。运行命令:
sudo apt install manpages-zh
再次运行 man
命令就是中文了。
使用 Visual Studio Code 在 WSL 上进行开发
这里的 Visual Studio Code 指的是 Windows 上的。
先安装 Visual Studio Code,然后安装 g++ 和 gdb:
sudo apt install g++
sudo apt install gdb
然后为 VSCode 安装中文扩展,C++ 扩展和 WSL 扩展。
左侧导航栏点击远程资源管理器,在 Ubuntu 默认发行版一行点击箭头,即可在当前窗口中连接。打开扩展,需要在 WSL 中再次安装扩展,点击在 WSL:Ubuntu 中安装即可。
此时我们就可以像在 Ubuntu 上一样使用 VSCode 了!