WSL - 如何安装 WSL 环境

本篇文章简要介绍一下 WSL 环境的优势与安装 WSL 环境的主要流程。

本篇将分为三个部分:

  1. 为什么是 WSL 环境;
  2. 启用 WSL 功能;
  3. 安装 Linux 发行版。

为什么是 WSL 环境

众所周知,Linux 的优势在于包管理器可以很方便的安装开发所需的各种环境,且可以自动配置环境变量,对于管理开发环境十分方便高效。但是,对于仅有一台设备的开发者,拥有强大的办公娱乐生态的 Windows 系统,显然是更加理性的选择。那么,有没有一种方法,让一台设备既可以运行 Linux 又可以运行 Windows 呢?

有的兄弟,有的。

第一种方法,使用虚拟机安装 Linux 系统。这是最普遍的一种方法,其优点是几乎无需手动对已经安装在设备上的 Windows 系统做任何修改,只需像安装其他应用一样安装虚拟机应用,在虚拟机应用中安装 Linux 便可,安装成功后的 Linux 系统仍然拥有图形化界面,可以像其他应用一样随时启动和关闭;缺点是由于需要经过虚拟化,硬件性能无法得到充分发挥,时有卡顿现象,甚至有时会莫名崩溃……(别问,问就是血泪史……)

第二种方法,安装双系统。这是最简单粗暴的一种方法。顾名思义,安装双系统是要在一台设备上安装两个系统,在设备启动时选择进入其一。其优点是两个系统均运行在物理硬件上,不存在性能浪费的问题;缺点是需要在启动时进行选择,切换系统时必须重启设备,无法在两个系统间灵活切换,且在安装时往往需要对硬盘手动分区,对新手不是很友好……

也许还有其他方法,但此处不再介绍。

行文至此,也是时候介绍一下本篇的主角了! WSL ,全称 Windows Subsystem for Linux ,即适用于 Linux 的 Windows 子系统。这是一项微软在2016年发布的技术,并在2019年迎来了大版本更新,即 WSL2 。(在后续的文章中,如无特别说明,WSL 均指 WSL2 。)微软宣称 WSL2 拥有完整的 Linux 内核支持,且支持 systemd ;WSL2 基于 Hyper-V 技术,通过高度优化,提供接近原生运行的性能。此外,WSL 支持主机系统访问 Linux 系统的虚拟磁盘,且有较为高效的读写性能。综合来看,WSL 作为一种普遍意义上的虚拟机,得益于微软的开小灶优化,拥有较为可观的性能与便利性。但世界上没有完美的事物。虽然微软宣称 WSL 支持图形化,但实际上的体验却一言难尽,更多时候还是在命令行环境下操作。

从我个人的角度而言,纵使 WSL 的图形化体验不佳,但其较高的性能以及能够与主机系统灵活切换的能力这两方面的优点足以让我选择它。事实上,许多使用 Linux 系统的开发者也仅仅是将 Linux 系统作为远程连接的服务端,实际开发过程中是使用运行在 Windows 系统中的 IDE 通过 SSH 远程连接进行开发。作为仅有一台设备的开发者,WSL 就为我们提供了这样一个运行在本地的 Linux 服务端,允许我们在保留 Windows 系统强大的办公娱乐应用生态的同时,享受到 Linux 系统下方便高效的开发环境管理体验。

启用 WSL 功能

1. 检查 CPU 虚拟化是否启用

右键任务栏,打开 任务管理器,在左侧选择到 性能 页面,检查 CPU 虚拟化是否启用。

检查 CPU 虚拟化是否启用

若 CPU 虚拟化未启用,请根据设备型号在互联网上搜索开启 CPU 虚拟化的相关教程。根据设备不同,该部分操作也不尽相同,故不在此给出详细操作流程,但其核心思路可以概括为:打开设备 UEFI 设置 界面 -> 切换到 虚拟化相关设置 页面 -> 开启虚拟化。

2. 安装并启用 WSL 功能

此部分参考 Microsoft 给出的教程

右键 开始菜单,打开 终端管理员,使用如下命令安装 WSL ,等待自动执行完毕后重启设备即可。

wsl --install

此命令将安装并启用运行 WSL 和安装 Linux 发行版所需的功能。

重新启动设备后,可以在 终端 中使用如下命令检查是否成功安装并启用 WSL 功能。

wsl --version

若出现类似下图所示的信息,则表示已成功安装并启用 WSL 功能。

检查是否成功安装并启用 WSL 功能

安装 Linux 发行版

WSL 下有多种 Linux 发行版可运行。

按照我的个人喜好,我在这部分选择由安同开源社区开发维护的安同 OS (AOSC OS) ,这是一个主打“开箱即用”的 Linux 发行版,优点是部署快捷、简单易用,但同时也带来了系统庞大、存储空间占用大的缺点。是否选择安同 OS 由你决定,如果你的存储空间有限,也可以选择较为主流的 Ubuntu 安装。

事实上,不同 Linux 发行版的大多数操作命令是相同的,仅在包管理等操作上有所不同。后续涉及到包管理器的操作命令我以安同 OS 的默认包管理器 oma 为例,如果你选择安装了 Ubuntu ,请自行查找 Ubuntu 的默认包管理器 APT 的对应命令。

a. 安装安同 OS

打开 Microsoft Store ,搜索 AOSC OS on WSL ,点击下载后等待自动下载安装即可。

在 Microsoft Store 中显示安装完成后,你可以在 开始菜单 -> 全部应用 中找到一个名为 AOSC OS on WSL 的应用,将其打开后会显示“正在安装”等字样,稍作等待后会提示设定用户名与密码。

注意:在设定密码时,你输入的内容将不会显示出来;事实上,在所有需要输入密码的场景,终端都不会显示输入的内容,这是终端出于隐私保护的正常设计,并非错误。

完成设定后,你就可以开始在 WSL 环境下使用安同 OS 了。

另外,如果你处在山东大学校园网环境内,推荐将安同 OS 的镜像源更换为山东大学镜像站,具体换源操作如下。

打开 AOSC OS on WSL 应用后,输入以下命令选择 oma 镜像源。

sudo oma mirror

回车后需要输入我们在安装时设定的密码,这是因为 sudo 命令请求以 root 用户权限操作其后跟随的指令,需要我们输入密码以确保是本人授权操作。

在显示的镜像源列表中,按上下方向键寻找到 SDU Mirrors (Shandong University) (sdu) ,按下 Enter 启用镜像源。若在镜像源名称前出现 “√”,则表明该镜像源已启用,随后按 Esc 应用更改并退出即可。

AOSC OS 换源

需要注意的是,oma 允许同时开启多个镜像源。在这里仅推荐开启山东大学镜像站一个镜像源,以免在更新和安装应用时重复下载软件包数据库。

若在镜像源列表中找不到 SDU Mirrors (Shandong University) (sdu) ,请先运行如下命令将 oma 包管理器更新至最新版本,随后重复上述步骤。

sudo oma upgrade

b. 安装 Ubuntu

安装 Ubuntu 的大部分步骤与安装安同 OS 相同。

打开 Microsoft Store ,搜索 Ubuntu ,你会看到许多版本的 Ubuntu 可选。这里推荐较为主流和稳定的 Ubuntu 22.04 版本,点击 Ubuntu 22.04.5 LTS 的下载按钮,等待自动下载安装即可。

在 Microsoft Store 中显示安装完成后,你可以在 开始菜单 -> 全部应用 中找到一个名为 Ubuntu 22.04.5 LTS 的应用,将其打开后会显示“正在安装”等字样,稍作等待后会提示设定用户名与密码。

完成设定后,你就可以开始在 WSL 环境下使用 Ubuntu 了。

由于 Ubuntu 的默认源在海外部署,在国内使用时,可能出现连接速度缓慢、连接不稳定甚至无法连接等情况,故需更换国内镜像源。在这里推荐山东大学镜像站,具体换源操作如下。

打开 Ubuntu 22.04.5 LTS 应用后,输入如下命令编辑 APT 的镜像源配置文件。

sudo vim /etc/apt/sources.list

回车后需要输入我们在安装时设定的密码,这是因为 sudo 命令请求以 root 用户权限操作其后跟随的指令,需要我们输入密码以确保是本人授权操作。

此处使用 vim 编辑器,如果你没有使用过,下面是一些基础的使用命令,足以你完成换源操作。

  • I 键进入插入模式,此时可以对文件内容进行修改
  • Esc 键退出插入模式
  • : 后输入 wq 保存修改内容并退出 vim

事实上,vim 编辑器在 Linux 中的地位非同一般,掌握 vim 的基本使用至关重要,十分推荐学习。推荐查看菜鸟教程网站关于 vim 的教程来学习。

打开 sources.list 文件后,将其中内容全部删除,替换为下面的内容,随后保存退出。

deb http://mirrors.sdu.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.sdu.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.sdu.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

输入下面两条命令完成换源后的更新操作。

sudo apt update
sudo apt upgrade

过程中可能需要你确认是否需要更新,一般情况下按下 y 键确认即可。

注意:请确保以上所有输入的均为英文字符,特别是在使用 vim 时。

Create at