前言
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,允许开发人员在 Windows 系统上直接安装并使用 Linux 发行版。不用进行任何修改,也无需承担传统虚拟机或双启动设置的开销。
可以将 WSL 看作也是一个虚拟机,但是它更为便利。
比如
- 你可以直接在 Windows 终端打开 Linux 终端,不需要像传统虚拟机那样:先运行虚拟机,进行一些配置,才能打开 Linux 系统
- 可以直接利用 Linux 访问 Windows 系统的文件,不需要设置共享文件
- … …
下面开始安装:
只需要 启用 WSL2,然后就可以直接安装 Linux发行版 进行使用
1. 开启 WSL2 功能
1.1 安装 WSL2 的系统版本要求
- win10 系统:
- x64:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
- ARM64:版本 2004 或更高版本,内部版本为 19041 或更高版本。
- win11 系统:都可以
【扩展】如何查看系统版本号:
- 快捷键 win + R 打开终端 (cmd,powershell 等都行)
- 输入 winver 指令
1.2 开启所需的 Windows 功能
以下演示为 windows11 系统
- 打开控制面板
- win + R 打开终端
- 输入指令:control
-
点击 程序
-
点击 启用或关闭 Windows 功能
-
下滑找到 适用于 Linux 的 Windows 子系统 与 虚拟机平台,如果未勾选的,勾选上,点击确定(会提示重启电脑,点击重启即可)
1.3 设置版本号,更新 WSL
打开终端输入:(管理员模式下)
-
将 WSL2 设为默认版本:这样我们使用 Linux 系统时,默认是使用 WSL2 去运行 Linux 系统。
wsl --set-default-version 2
-
更新 WSL
wsl --update
【验证】输入指令:
wsl -v
出现上面信息说明 WSL2 安装成功。
那么只需要下载你需要的 Linux 系统 即可直接使用
2. 下载 Linux 发行版
需要注意的一点是:安装的 Linux 系统应该是 适用于 WSL 的 Linux 系统,因此如果你是从各大 Linux系统下载网站进行下载的话,需要注意这一点。
微软也给我们提供了几种下载方式:
下面我以 Ubuntu-22.04 为例
- Microsoft Stote
- 进入微软商店,搜索 ubuntu-22.04
现在就可以使用下载好的 ubuntu 了:
-
打开 ubuntu
开始菜单搜索 ubuntu 打开 或者 像下面这样 打开终端新建一个 ubuntu 终端
首次进入需要创建新用户:
-
设置用户
-
在下面位置输入用户名
-
输入密码
注意:输入密码时并不会显示你的输入,你只需要按键盘输入你想要设置的密码然后按 enter 键即可
-
出现此说明成功了:
- wsl 指令下载
下面的指令可能有的电脑由于版本较低无法执行,如果无法执行那么你使用 微软商店 下载即可
可通过 “wsl -l -o” 查看所有可选的 linux 发行版:
如果执行这一指令报错:无法解析服务器地址,那么也是建议你使用 微软商店 下载。
你仍然想使用的话,这里有一个可行的解决方案:
下载 dev-sidecar 软件(这是 github 上的一个开源软件,主要目的是解决一些网站访问慢的问题),项目地址:【https://github.com/docmirror/dev-sidecar】
- wsl --install 指令
安装 WSL 和 Linux 的默认 Ubuntu 发行版
可以在指令后面指定想要安装的 linux 发行版:
以 ubuntu-24.04 为例,输入指令等待安装即可
同理第一运行后也会要求创建用户,按之前说的步骤做即可。
3. 通过 WSL指令 使用 Linux
你可以按之前说的方法直接运行所下载的 linux 发行版。
下面说说通过 wsl 指令运行 linux
3.1 运行 linux
-
查看当前已安装的 linux 发行版:
“wsl -l -v” 或者 “wsl -l”
- Ubuntu-22.04 前面有个 *,说明它是 WSL 的默认运行版本。那么当你在终端输入指令 wsl 时,默认打开的是 ubuntu-22.04
- state:表示系统是否在运行
- version:表示该系统使用的 WSL 的版本 (目前 WSL 有两个版本:WSL2 与 WSL1)
- Ubuntu-22.04 前面有个 *,说明它是 WSL 的默认运行版本。那么当你在终端输入指令 wsl 时,默认打开的是 ubuntu-22.04
-
终端输入指令 wsl 即可运行默认 linux 版本
- 如果你需要更改默认运行的 linux 版本,那么需要执行指令:wsl --set-default [发行版名称]
比如 wsl --set-default Ubuntu-24.04
- 如果你想运行特定版本的 linux,那么执行:wsl --d [发行版名称] --u [用户名]
如果在第一次运行 linux 时创建了用户 (假如叫 blr),那么该 linux 会有两个用户:root、blr,其中 WSL 默认使用的用户为 blr (新创建的用户)。
你也可以通过指令 [发行版名称] config --default-user [用户名] 修改默认用户
比如:ubuntu-22.04 config --default-user root
运行后即可使用 Linux,那么如何使用 Linux 就不属于本文的范畴了。
4. 导入与导出 linux 发行版
所安装的 linux 发行版,它会占用一定的存储空间,WSL 默认将它所占用的空间设置在 C 盘。随着它的使用,可能导致 C 盘存储空间逐渐不足,那么可以通过将 Linux 导出到其他盘以减轻 C 盘的压力。
WSL 属于系统功能,我看到一些教程说可以将 WSL 移动到其他盘,这一做法是否正确未知,我在官方文档中也未看见相关说明(也可能是我粗心没发现)。
【注】如果下面的指令显示权限不够,请使用管理员模式打开终端。
-
关闭运行的 linux
wsl --shutdown
-
导出 linux 发行版
wsl --export [发行版名称] [导出文件的路径]
比如我将 ubuntu-22.04 导出到 “E:\ubuntu”,那么执行
wsl --export ubuntu-22.04 E:\ubuntu\ubuntu-22.04.tar
-
注销(卸载)原来的 ubuntu-22.04
wsl --unregister [发行版名称]
因为第一次安装时,WSL 保存了 ubuntu-22.04 的一些相关配置信息,因此需要注销原来的 ubuntu
-
利用之前导出的文件,导入 ubuntu-22.04 到新位置
wsl --import [发行版名称] [导入的路径] [导出文件的路径]
比如利用之前导出的文件 “E:\ubuntu\ubuntu-22.04.tar" 来导入新的发行版:ubuntu-22.04,导入到 “E:\ubuntu\ubuntu-22.04”
此时导出的文件 ubuntu-22.04.tar 就可以删除了。(是导出的文件,不是导入的文件)
需要注意这时 WSL 之前保存的一些配置信息就没了,比如以此教程安装的两个 ubuntu 系统为例:
- 现在默认打开的发行版不再是 ubuntu-22.04,你可自行设置
- 打开 ubuntu-22.04 默认用户不是之前创建的 blr 用户,而是 root 用户
由于现在 ubuntu-22.04 为导入的发行版,那么如果要修改默认用户的话需要更改 /etc/wsl.conf 文件
-
运行 ubuntu-22.04
-
执行指令:
echo -e "[user]\ndefault=用户名" >> /etc/wsl.conf
用户名换为你想要的用户名(必须已经存在)
比如我将默认用户改为 blr:
-
将终端关闭重启即可
最后
本文基于微软官方文档,如果有错误,欢迎指正。
如果你在安装过程中出现错误,可以参见官方文档【常见问题】。
想要了解更多 WSL 指令见:【WSL 基本指令】
如果你觉得 ubuntu 的终端不好看,想给它进行美化,可参见:【终端美化:zsh + oh-my-zsh】