WSL简介

官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/

适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。

WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

WSL版本比较

官方资料:https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions

功能 WSL 1 WSL 2
Windows 和 Linux 之间的集成
启动时间短
与传统虚拟机相比,占用的资源量少
可以与当前版本的 VMware 和 VirtualBox 一起运行
托管 VM
完整的 Linux 内核
完全的系统调用兼容性
跨 OS 文件系统的性能
systemd 支持
IPv6 支持

WSL快速安装

  1. 查看可用的linux发行版
1
wsl --list --online
  1. 安装默认linux发行版【在此安装过程中,你将需要重启计算机】
1
wsl --install
  1. 发行版创建用户

    • 使用 WSL 安装 Linux 发行版的过程完成后,使用“开始”菜单打开该发行版(默认情况下为 Ubuntu)。

    • 系统将要求你为 Linux 发行版创建“用户名”和“密码”。

    • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。

[!NOTE]

修改密码:

  • 若要更改或重置密码,请打开 Linux 发行版并输入命令:passwd
  • 系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。

忘记密码:

  • 请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root

    如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。

  • 在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd <username>

  • 其中 <username> 是发行版中帐户的用户名,而你忘记了它的密码。

  • 系统将提示你输入新的 UNIX 密码,然后确认该密码。

  • 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭 WSL:exit

WSL最佳实践

最佳安装实践

WSL进阶技术

WSL基本命令

官方资料:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands

  • 安装 WSL 和 Linux 的默认 Ubuntu 发行版。
1
2
3
4
5
6
7
8
9
10
11
wsl --install

--distribution 指定要安装的 Linux 发行版。 可以通过运行 wsl --list --online 来查找可用的发行版。
--no-launch 安装 Linux 发行版,但不自动启动它。
--web-download 通过联机渠道安装,而不是使用 Microsoft Store 安装。

未安装 WSL 时,选项包括:

--inbox 使用 Windows 组件(而不是 Microsoft Store)安装 WSL。
--enable-wsl1 在安装 Microsoft Store 版本的 WSL 的过程中也启用“适用于 Linux 的 Windows 子系统”可选组件,从而启用 WSL 1
--no-distribution 安装 WSL 时不安装发行版。
  • 列出可用的 Linux 发行版
1
wsl --list --online
  • 列出已安装的 Linux 发行版
1
2
3
4
5
6
wsl --list --verbose

可与 list 命令一起使用的其他选项包括:
--all (列出所有发行版)
--running (仅列出当前正在运行的发行版)
--quiet (仅显示发行版名称)
  • 将 WSL 版本设置为 1 或 2
1
2
3
4
5
6
wsl --set-version <distribution name> <versionNumber>

若要指定运行 Linux 发行版的 WSL 版本(12),请将 <distribution name> 替换为发行版的名称,并将 <versionNumber> 替换为 12
比较 WSL 1 和 WSL 2
WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。
检查 Windows 版本及内部版本号: Windows 徽标键 + R,然后键入“winver”,选择“确定”。

[!WARNING]

在 WSL 1 和 WSL 2 之间切换可能非常耗时,并且可能会由于两种体系结构之间的差异而导致失败。

对于包含大型项目的分发,建议在尝试转换之前备份文件。

  • 设置默认 WSL 版本
1
2
3
4
wsl --set-default-version <Version>

若要设置 WSL 1 或 WSL 2 的默认版本,请将 <Version> 替换为数字 12
例如 wsl --set-default-version 2。 该数字表示新 Linux 发行版安装默认使用的 WSL 版本。
  • 设置默认 Linux 发行版
1
wsl --set-default <Distribution Name>
  • 将目录更改为主页
1
wsl ~
  • 运行特定的 Linux 发行版
1
2
3
4
5
6
wsl --distribution <Distribution Name> --user <User Name>

若要通过特定用户运行特定 Linux 发行版,请将 <Distribution Name> 替换为你首选的 Linux 发行版的名称(例如 Debian)
将 <User Name> 替换为现有用户的名称(例如 root)。
如果 WSL 发行版中不存在该用户,你将会收到一个错误。
若要输出当前用户名,请使用 whoami 命令。
  • 更新 WSL
1
2
3
wsl --update

--web-download:从 GitHub 而不是 Microsoft Store 下载最新更新。
  • 检查 WSL 状态
1
wsl --status
  • 检查 WSL 版本
1
wsl --version
  • Help 命令
1
wsl --help
  • 以特定用户的身份运行
1
2
3
wsl --user <Username>

若要以指定用户身份运行 WSL,请将 <Username> 替换为 WSL 发行版中存在的用户名。
  • 更改发行版的默认用户
1
2
3
4
<DistributionName> config --default-user <Username>

更改用于发行版登录的默认用户。 用户必须已经存在于发行版中才能成为默认用户。
例如:ubuntu config --default-user johndoe 会将 Ubuntu 发行版的默认用户更改为“johndoe”用户。
  • 关闭
1
2
3
4
wsl --shutdown

立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机。
在需要重启 WSL 2 虚拟机环境的情形下,例如更改内存使用限制或更改 .wslconfig 文件,可能必须使用此命令。
  • 终止
1
2
3
wsl --terminate <Distribution Name>

若要终止指定的发行版或阻止其运行,请将 <Distribution Name> 替换为目标发行版的名称。
  • 标识 IP 地址
1
2
wsl hostname -i 			标识通过 WSL 2 安装的 Linux 分发版 IP 地址(WSL 2 VM 地址)
cat /etc/resolv.conf 表示从 WSL 2 看到的 WINDOWS 计算机的 IP 地址 (WSL 2 VM)
  • 注销或卸载 Linux 发行版
1
2
3
4
5
6
7
尽管可以通过 Microsoft Store 安装 Linux 发行版,但无法通过 Store 将其卸载。

wsl --unregister <DistributionName>

如果将 <DistributionName> 替换为目标 Linux 发行版的名称,则将从 WSL 取消注册该发行版,以便可以重新安装或清理它。
警告:取消注册后,与该分发版关联的所有数据、设置和软件将永久丢失。 从 Store 重新安装会安装分发版的干净副本。
例如:wsl --unregister Ubuntu 将从可用于 WSL 的发行版中删除 Ubuntu。 运行 wsl --list 将会显示它不再列出。