WSL:Windows 与 Linux 的无缝对接

· · 科技·工程

适用于 Linux 的 Windows 子系统(WSL,Windows Subsystem for Linux)可以让我们在 Windows 上直接运行 Linux 环境。通过它,我们可以运行不同的 Linux 发行版(如 Ubuntu、Debian),方便的使用 Linux 的终端工具甚至是 GUI 应用,不仅不需要安装虚拟机或双系统,还更好的实现了 Windows 与 Linux 的无缝对接。

效果示意图:

本文将从以下几个方面介绍 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 了!