如果我在十几年前跟你说「Microsoft Love Linux」,你肯定觉得我鬼打墙了,Windows 和 Linux 可一直都是竞争对手。时任微软 CEO Steve Ballmer 还曾公开宣称 Linux 是「癌症」,毕竟 Linux 作为免费、开源的 Windows 替代品,抢走了微软不少的市场份额和营收。
后来,可能是为了与 VMware 等虚拟化厂商竞争,以及发展云计算平台的需要,微软在 Hyper-V 虚拟化平台上增加了对 Linux 的原生支持,让 Windows 也可以在 Hyper-V 虚拟机中运行 Linux 系统。但是,在 Hyper-V 中运行 Linux 虚拟机需要消耗大量的系统资源,而且宿主机(Host OS)与虚拟机(Guest OS)之间的交互也比较麻烦。
什么是 WSL 2?
- 时间来到 2017 年,事情正在起变化🤣。微软正式发布了「适用于 Linux 的 Windows 子系统」,即人们熟知的 Windows Subsystem for Linux,简称 WSL。
- 在 2019 年,微软又基于 Hyper-V 架构的部分功能,推出了全新的 WSL 2。它能够在一个高度优化的虚拟化中运行完整的 Linux 内核。
WSL 2 只需要较少的系统资源,就能实现 Windows 和 Linux 之间的无缝集成。虽然 WSL 2 也使用了虚拟化技术,但它会自动在后台运行和管理,无需用户手动配置或维护(要维护也可以)。
WSL 2 主要面向将 Windows 作为生产力工具,但又希望在 Linux 环境中完成工作的用户和开发人员。你可以运行grep
、awk
和sed
等命令行工具,以及依赖这些工具的 Bash 脚本。不仅如此,你还可以从 WSL 命令行启动 Windows 应用,甚至在 Windows 上运行 Linux 图形应用。
WSL 2 的系统要求
- WSL 2 使用了 Hyper-V 架构的一部分功能,但对 Windows 11 的版本并没有限制。家庭版、教育版、专业版和企业版都可以安装。
- 除了
x86_64
架构外,WSL 2 也支持ARM
处理器。但要在基于 ARM 的设备上运行,所使用的 Linux 系统也必须是 ARM 版本。 - 如果你使用的虚拟机软件支持嵌套虚拟化,WSL 2 也可以在虚拟机中的 Windows 上运行。
在 Windows 11 上安装 WSL 2
方法 1:使用 WSL 命令安装
在 Windows 11 中,安装 WSL 2 最简单的方法是使用命令行:
1右键点击「开始」菜单,选择「终端管理员」,以管理员权限打开「Windows 终端」。
2在 Windows PowerShell 或「命令提示符」交互窗口中,执行以下命令:
wsl --install
3以上命令会启用 WSL 2 所需的所有功能,并默认下载 Ubuntu 发行版。安装需要几分钟,完成后会提示你重启 Windows。
4重新登录 Windows 11 后,系统会自动弹出一个命令行窗口,以继续安装并启用 Ubuntu。按命令提示设置好你的 Linux 用户账户和密码后,即可开始使用。
方法 2:使用 PowerShell 安装 WSL 2
我们也可以通过 PowerShell 来安装 WSL 2:
1使用Windows + R
快捷键打开「运行」对话框,输入powershell
,然后按Ctrl + Shift + Enter
,以管理员权限打开 PowerShell。
2执行以下命令启用 WSL 和虚拟机平台功能:
Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Windows-Subsystem-Linux","VirtualMachinePlatform")
3安装完成后,键入Y
重启计算机。
4完成以上步骤后,需要通过 Microsoft Store 获取要使用的 Linux 发行版(后面会有专门介绍)。
如果在安装 WSL 时没有选择安装 Virtual Machine Platform,那么将使用 WSL 1。
方法 3:通过「Windows 功能」启用 WSL 2
如果你更习惯使用图形界面,也可以通过「Windows 功能」在 Windows 11 中启用 WSL 2:
1使用Windows + R
快捷键打开「运行」对话框,执行OptionalFeatures
打开「Windows 功能」。
2勾选「适用于 Linux 的 Windows 子系统」和「虚拟机平台」,然后点击「确定」。
3安装完成后,点击「立即重新启动」。
4系统重启完成后,请通过 Microsoft Store 来获取要使用的 Linux 发行版(后文会有专门介绍)。
如果在安装 WSL 时没有勾选「虚拟机平台」,那么将使用 WSL 1。
在 Windows 11 上管理 WSL 版本
WSL 1 和 WSL 2 功能对比
- WSL 1 是一个轻量级的 Linux 兼容性层,它会将 Linux 系统调用转换为 Windows NT 内核调用来实现 Linux 应用程序的运行,但不支持完整的 Linux 内核功能。
- WSL 2 使用真正的 Linux 内核,并且支持 Docker 等其他高级功能。
功能 | WSL 1 | WSL 2 |
---|---|---|
Windows 和 Linux 之间的集成 | ✅ | ✅ |
启动时间短 | ✅ | ✅ |
与传统虚拟机相比,占用资源少 | ✅ | ✅ |
可以与当前版本的 VMware 和 VirtualBox 一起运行 | ✅ | ✅ |
托管 VM | ❌ | ✅ |
完整的 Linux 内核 | ❌ | ✅ |
完全的系统调用兼容性 | ❌ | ✅ |
跨 OS 文件系统的性能 | ✅ | ❌ |
systemd 支持 | ❌ | ✅ |
IPv6 支持 | ✅ | ✅ |
更新 WSL 版本
WSL 的更新版本会首先发布到 GitHub,然后会打包到 Windows Update 进行分发。你可以在 Windows 11 中手动或自动更新 WSL 版本:
1右键点击「开始」菜单,选择「终端管理员」,以管理员权限打开「Windows 终端」。
2在 Windows PowerShell 或「命令提示符」窗口中,执行以下命令:
- 查看当前 WSL 版本:
wsl --version
- 手动更新 WSL 版本:
wsl --update
- 安装最新的预发行版(可选):
wsl --update --pre-release
- 如果更新之后遇到问题或出现故障,可以回滚到上一版本:
wsl --update --rollback
如果你觉得手动更新比较麻烦,可以在「Windows 更新」中设置 WSL 自动更新:
1使用Windows + I
快捷键打开「设置」>「Windows 更新」>「高级选项」。
2打开「接收其他 Microsoft 产品的更新」开关,这样每当有新的 WSL 修订版本发布时,就会随 Windows 11 自动更新。
切换 WSL 默认版本
要切换 WSL 默认版本也非常容易,在命令行中执行以下命令即可:
- 切换为 WSL 2:
wsl --set-default-version 2
- 切换为 WSL 1:
wsl --set-default-version 1
如无特殊需求,推荐始终使用 WSL 2,以获得最佳功能和性能。
使用 WSL 在 Windows 11 上管理 Linux 发行版
安装 Linux 发行版
在 Microsoft Store 应用商店中,有很多主流 Linux 发行版可供选择:
1通过以下链接直接进行安装,或者在 Microsoft Store 中搜索需要的发行版进行安装:
- Ubuntu 22.04 LTS
- openSUSE Leap 15.5
- SUSE Linux Enterprise 15 SP5
- Kali Linux
- Debian Linux
- Fedora WSL
- deepin WSL
2安装好后点击「打开」,在弹出的命令行窗口中设置好 Linux 用户账户和密码,等待系统初始化完成。
3此外,你也可以执行以下命令,查看有哪些可用的发行版,然后再进行安装:
wsl --list --online # 查看可用 Linux 发行版
wsl --install --distribution <DistroName> # 安装指定 Linux 发行版
4安装完成后,在命令行窗口中设置 Linux 用户账户和密码,完成系统初始化。
设置默认 Linux 发行版
如果你在 Windows 11 上为 WSL 安装了多个 Linux 发行版,可以通过以下步骤来指定默认发行版:
1右键点击「开始」菜单,选择「终端管理员」,以管理员权限打开「Windows 终端」。
2在 Windows PowerShell 或「命令提示符」窗口中,执行以下命令:
wsl --list --verbose # 查看已安装的发行版、WSL 版本信息和当前状态
wsl --set-default <DistroName> # 重新指定默认发行版
同时运行多个 Linux 发行版
在 Windows 11 中安装多个 Linux 发行版后,即便没将其设置为默认发行版,也可以随时启动来使用。
- 在「开始」菜单的「所有应用」列表,或「推荐的项目」中打开指定的 Linux 命令行窗口。
- 右键点击「开始」菜单,选择「终端管理员」,在「Windows 终端」的「打开新标签页」下拉菜单中打开特定 Linux 的命令行窗口。
移动 Linux 发行版存储位置
以下方法仅适用于 WSL 2.3.11 及更高版本。
默认情况下,WSL 会将 Linux 发行版存放在 C 盘的以下路径,其中包含了发行版的根文件系统和相关配置文件:
%USERPROFILE%\AppData\Local\\Packages\<发行版的包名>\
以前,移动发行版需要手动导出 → 将其作为新发行版导入 WSL → 然后删除原来的发行版,这 3 个步骤。但从 WSL 2.3.11 开始,微软引入了更简单的--move
参数来移动发行版的底层存储。
例如,要将 Ubuntu 22.04 实例移动到 D 盘的一个专用 WSL 文件夹,可以使用以下命令:
1列出已安装的发行版:
wsl --list
2将特定发行版移动到指定路径:
wsl --manage Ubuntu-22.04 --move <path>
3移动成功后,会有通知提示。
Windows 11 和 Linux 文件系统互访
使用 WSL 的一大优势是:Windows 11 和 Linux 之间的文件系统能够无缝互访,比在传统虚拟机中使用 Linux 要方便得多。让我们来看看如何实现这种互访:
在 Windows 11 中访问 Linux 文件系统
1使用Windows + E
快捷键打开「文件资源管理器」。
2在左侧导航窗格中找到并点击「Linux」,就可以像浏览 Windows 文件一样浏览 Linux 文件了。
在 Linux 中访问 Windows 11 文件系统
1在 Linux 中打开「终端」,执行以下命令即可进入 Windows 11 的 C 盘根目录:
cd /mnt/c/
2使用ls
命令列出目录和文件,你会看到熟悉的 Windows 目录和文件结构。
在 Linux 中,访问 Windows 11 其他盘符的方式也类似,例如 D 盘可以使用/mnt/d/
。
如果要使用WSL2,在方法3中还需要勾选「虚拟机平台」选项。只勾选「适用于 Linux 的 Windows 子系统」只能使用WSL1。
已经勘误,感谢您的提醒。