WSL2 使用指北

2020/12/13

# 什么是 WSL

WSL 是适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

# 什么是 WSL2

WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是 提高文件系统性能,以及添加 完全的系统调用兼容性

这一新的体系结构改变了这些 Linux 二进制文件与 Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。

单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。

# 环境要求

若要更新到 WSL 2,需要运行 Windows 10。

  • 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手 (opens new window)更新 Windows 版本。

若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 更新到“设置”菜单中的最新 Windows 版本

# 步骤 1 - 启用适用于 Linux 的 Windows 子系统

需要先启用 「适用于 Linux 的 Windows 子系统」可选功能,然后才能在 Windows 上安装 Linux 子系统。

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 步骤 2 - 启用虚拟机功能

安装 WSL 2 之前,必须启用「虚拟机平台」可选功能。 计算机需要 虚拟化功能 (opens new window) 才能使用此功能。

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

# 步骤 3 - 下载 Linux 内核更新包

  1. 下载最新包:

  2. 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择 “是” 以批准此安装)

  3. 安装完成后,将 WSL 2 设置为默认版本。

    • 打开 PowerShell,执行:

      wsl --set-default-version 2
      

# 步骤 4 - 安装需要的 Linux 系统

  1. 打开 Microsoft Store (opens new window),并选择你需要的的 Linux 发行版。

    image-20210325110908556

    以下是 Ubuntu 常用版本的直达链接:

  2. 在发行版的页面中,选择 「获取」。

  3. 「获取」完成后,点击「启动」即可进入 Linux 系统(首次启动需要等待 1~2 分钟进行初始化部署,未来的所有启动时间应不到一秒)。

    • 首次进入系统,需要为新系统创建「账户」和「密码」

      Windows 控制台中的 Ubuntu 解包

    • 完成后,即可正常使用 Linux 系统。

# Tips

# 安装完成后如何进入系统?

  • 以应用形式启动:

    • 在 「Microsoft Store」安装的 Linux 发行版会以 UWP 应用形式安装在本地,可以在「开始菜单」找到对应的 Linux 发行版系统直接启动。

      image-20210325111947941

  • 在命令行启动:

    • 在 「powershell」、「cmd」、「Windows Terminal」中直接键入发行版系统名字,如 「ubuntu」,即可直接进入系统。

      image-20210325112005074

# 如何为 Linux 发行版系统配置代理?

WSL2 基于 Hyper-V 运行,从 Linux 子系统访问 Windows 首先需要找到 Windows 的 IP。随后,需要将 Linux proxy 与 windows 代理端口绑定。

Windows 代理软件需要开启 「允许局域网访问」或 「Allow LAN」。

整理命令如下:

export windows_host=`cat /etc/resolv.conf|grep nameserver|awk '{print $2}'`
export ALL_PROXY=socks5://$windows_host:7890(这里输入 windows 中代理软件的端口)
export HTTP_PROXY=$ALL_PROXY
export http_proxy=$ALL_PROXY
export HTTPS_PROXY=$ALL_PROXY
export https_proxy=$ALL_PROXY

# WSL 2 中如何访问 GPU?

请查看 GPU 支持入门 (opens new window)教程。

# 如何访问本地 Windows 的数据?

系统会自动为本地计算机上的硬盘驱动器创建装入点,通过这些装入点可以轻松访问 Windows 文件系统。

/mnt/<drive letter>/

示例用法:运行 `cd /mnt/c` 访问 c:\

# 如何迁移 WSL 镜像?

# 查看全部 wsl
wsl -l --all -v

# 导出 wsl
wsl --export Ubuntu d:\wsl-ubuntu.tar

# 注销 wsi
wsl  --unregister Ubuntu

# 导出 wsl 到 新地址
wsl --import Ubuntu d:\wsl-ubuntu d:\wsl-ubuntu.tar --version 2

# 更改默认用户
Ubuntuconfig --default-user yourname

# 出现 “参考的对象类型不支持尝试的操作” 如何解决?

# 重启后执行
netsh winsock reset
Last Updated: 2021/9/8 上午1:57:03