文章

【WSL】安装与配置指南(Ubuntu)

适用于 Linux 的 Windows 子系统(Windows Subsystem for Linux,WSL)

WSL 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

  • 多发行版支持:使用 WSL 安装和运行各种 Linux 发行版,例如 Ubuntu、Debian、Kali 等。 安装 Linux 发行版并从 Microsoft Store 接收自动更新、导入 Microsoft Store 中不可用的 Linux 发行版。
  • 文件系统共享:将文件存储在独立的 Linux 文件系统中,并实现 Windows 与 Linux 文件系统之间的双向访问。
  • Shell 环境:运行常用的 Bash 命令行工具(例如 grepsedawk)或其他 ELF-64 二进制文件;运行 Bash 脚本和 GNU/Linux 命令行应用程序,包括 Vim、Python、C/C++、MySQL 等。
  • 包管理器:通过自带的 GNU/Linux 软件包管理器安装其他软件。
  • 跨平台调用:使用类似于 Unix 的命令行 Shell 调用 Windows 应用程序,或在 Windows 上调用 GNU/Linux 应用程序。
  • 图形界面集成:运行直接集成到 Windows 桌面的 GNU/Linux 图形应用程序。
  • GPU 加速:使用 GPU 加速 Linux 上运行的机器学习工作负载。

WSL 安装要求

WSL 安装要求
  • Windows 10/11
    • 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
    • 对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。
  • 支持虚拟化(Intel VT 或 AMD-V)
    • 安装 Hyper-V 虚拟化组件(如 Windows 虚拟机监控程序)
  • 至少 4GB 可用内存和 20GB 存储空间

WSL 1 vs WSL 2

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

WSL 2 使用虚拟化技术并拥有完整的 Linux 内核,在文件 IO 性能和系统调用兼容性上相比 WSL 1 均有巨大提升,因此建议安装最新的 WSL 2


安装 WSL

[Opt 1] 快速安装

  1. 在 Windows 搜索栏搜索 “PowerShell”,并右键点击 “Windows PowerShell”,选择 “以管理员身份运行”


查询 Linux 发行版

  1. 在 PowerShell 中输入并执行下列命令,列出当前可用的 Linux 发行版
1
wsl --list --online  # 或 wsl -l -o


安装 Ubuntu 发行版

  1. 选择一个合适的 Ubuntu 发行版,使用下列命令安装

[Distro] 替换为发行版名称(NAME),例如 wsl --install -d Ubuntu-22.04

1
wsl --install -d [Distro] [Option]  # 或 wsl --install --distribution [Distro] [Option]
wsl --install

默认情况下,wsl --install 命令将从 Microsoft Store 获取并安装默认 Ubuntu 发行版,此版本可能并不适用于当前开发环境;Windows 上可以同时安装多个 Linux 发行版,且相互独立,根据具体需求选择安装即可;如果无法从 Microsoft Store 下载安装,可以尝试附加 --web-download 选项更改为从 GitHub 下载。

命令可选参数
  • --no-launch-n:安装后不要启动分发版
  • --web-download:从 GitHub 而不是 Microsoft Store 下载发行版
  • --inbox:使用 Windows 组件而不是 Microsoft Store 安装 WSL
  • --no-distribution:仅安装所需的可选组件,不安装发行版
  • --enable-wsl1:启用 WSL 1 支持(即启用 “适用于 Linux 的 Windows 子系统” 可选组件)

详见:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands#install


  1. 安装完成后,需要重启系统以应用更改(需要更新系统)


  1. 重启后将自动启动 WSL 以完成安装

如果并未启动也可以手动打开 Ubuntu 发行版


创建 Unix 用户账户

  1. 安装完成后需要创建用户,输入用户名(UNIX username)并回车确认

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

用户名规范

用户名必须以英文开头,且全为小写,不宜过长


  1. 输入用户密码,要求重复输入两次以确认

在终端中要求输入密码时,为确保安全,输入的密码不会被显示


  1. 创建用户后,将自动进入 Ubuntu 系统


[Opt 2] 手动安装

TODO


配置 WSL

认识 Linux Shell 终端

Linux Shell 终端

在 WSL 中,大部分的操作都需要通过 Linux Shell(Windows Terminal)输入命令执行,而不像 Windows 系统一样使用图形界面,因此认识并熟练使用 Shell 尤为重要。可以在 Windows 任意目录下按住 Shift + 右键单击,在菜单中选择 “在此处打开 Linux shell” 打开终端。

Linux 终端默认使用 Bash(Bourne-Again Shell)


Bash 命令提示符中,如 obelus@Hyper-V:~$root@mypc:/home#

  • obelusroot:当前用户名
  • Hyper-Vmypc:当前主机名
  • ~/home:当前路径(工作目录)
  • $:表示终端准备接收命令输入
  • #:表示正在使用超级用户(root)权限

本指南中所有终端命令都会以 $ 起始作为提示,无需输入 $

在终端中要求输入密码时,为确保安全,输入的密码不会被显示。

Bash 提供了命令自动补全功能,按下 TAB 键可以根据当前已输入到字符自动补全完整的命令/参数/路径。


使用跨文件系统工作

TODO


更新软件源与更新软件包

国内镜像站

在安装和更新软件之前,建议先将软件包的下载源更换至国内的镜像站,以获得最佳的下载速度。

  1. 选择一个国内镜像站,建议优先选择地理位置较近、相同运营商的镜像站(可在校园网联合镜像站中查询)
推荐镜像站速度镜像站帮助页(Ubuntu)
清华大学镜像站(tsinghua)10 Gbpshttps://mirror.tuna.tsinghua.edu.cn/help/ubuntu
南京大学镜像站(nju)10 Gbpshttps://mirror.nju.edu.cn/mirrorz-help/ubuntu/?mirror=NJU
中国科学技术大学镜像站(ustc)? Gbpshttps://mirrors.ustc.edu.cn/help/ubuntu.html
上海交通大学镜像站(sjtu)1 Gbpshttps://mirrors.sjtug.sjtu.edu.cn/docs/ubuntu
阿里云镜像站(aliyun)? Gbpshttps://developer.aliyun.com/mirror/ubuntu

  1. 以南京大学镜像站为例,选择相应的 Ubuntu 版本,并复制下方的镜像源


  1. 在终端中执行下列命令,(使用 Vim)编辑软件源配置文件

如果 vim 操作不熟练可以使用其他文本编辑器,或使用跨文件系统编辑此文件

1
$ sudo vim /etc/apt/sources.list

  1. 将配置文件内容全部替换为镜像源,并保存文件


  1. 更新软件包列表以获取最新版本
1
$ sudo apt update

  1. 更新所有可更新软件包
1
$ sudo apt upgrade

管理 WSL

管理 WSL 磁盘空间

查找 WSL 硬盘位置

  1. 在 PowerShell 中输入并执行下列命令,需要将 <distribution-name> 替换为特定发行版名称(如 Ubuntu)
1
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"

扩展 WSL 空间大小

TODO


压缩 WSL 空间大小

TODO


软件安装与配置

WSL 配置差异

大部分软件的安装和配置均与其他 Ubuntu 发行版相同,但需要注意以下两点:

  • WSL 主要以 Shell 环境与 Windows Terminal 交互使用,对 WSL 上的 GUI 应用的支持不提供完整的桌面体验,它依赖于 Windows 桌面,因此可能不支持安装以桌面为中心的工具或应用
  • 某些硬件驱动和软件(如 NVIDIA 显卡驱动、CUDA)会直接调用 Windows 所安装的版本(而无需另行安装),如果在 WSL 再次安装适用于 Linux 的版本可能会出现问题

文本编辑器

文本编辑器(Text Editor)

当使用命令打开文本文件并编辑时,需要用到文本编辑器,WSL 的 Ubuntu 可能并未默认安装,主要推荐三款文本编辑器:Vim、Gedit 和 GNOME Text Editor。

本篇指南所有涉及文本编辑的命令,均使用具有图形界面的 GNOME Text Editor 编辑,可自行更换。

中文乱码

在 WSL Ubuntu 中使用图形化文本编辑器(如 Gedit 和 GNOME Text Editor),打开含有中文字符的文本文件时可能会出现乱码,可以通过设置字符编码、安装中文字体等方法解决。

  • Vim

Vim 是一款功能强大的、基于命令行的文本编辑器,支持语法高亮、智能缩进、代码折叠等高级编辑功能,还可以通过插件扩展它的功能,特别适合于程序员和系统管理员等专业人士使用。

可以使用以下命令安装:

1
$ sudo apt install vim

  • Gedit

Gedit 是一款轻量级的、基于图形界面的文本编辑器,具有代码高亮、自动缩进、多标签编辑、插件扩展等功能,是 Ubuntu GNOME 桌面环境中预安装的编辑器之一。

可以使用以下命令安装:

1
$ sudo apt install gedit

  • GNOME Text Editor

GNOME Text Editor 是一款专注于会话管理的简单文本编辑器,致力于跟踪更改和状态,具有现代化的界面和功能,包括语法高亮显示、搜索替换、内联拼写检查、文档打印等特性,并且支持 Vim 键绑定。目前在 Ubuntu 24.04 上,已取代 Gedit 成为 GNOME 默认的文本编辑器(Text Editor)。

可以使用以下命令安装:

1
$ sudo apt install gnome-text-editor

CUDA Toolkit

无需再为 WSL 安装 NVIDIA 显卡驱动

只要在 Windows 上安装了 NVIDIA 显卡驱动,CUDA 就能够在 WSL 2 中使用;安装在 Windows 主机上的 CUDA 驱动程序将在 WSL 2 内部以 libcuda.so 库的形式进行模拟(stub),因此不应在 WSL 2 环境中安装任何 NVIDIA 显卡的 Linux 驱动程序。

使用 WSL-Ubuntu CUDA toolkit 安装程序安装将不会附带 NVIDIA 显卡驱动。

NVIDIA 显卡驱动、CUDA、PyTorch 的兼容版本要求

PyTorchtorchvisionCUDA ToolkitPython
2.3.10.18.111.8, 12.1>= 3.8, <=3.11
2.3.00.18.011.8, 12.1>= 3.8, <=3.11
2.2.20.17.211.8, 12.1>= 3.8, <=3.11
2.2.10.17.111.8, 12.1>= 3.8, <=3.11
2.2.00.17.011.8, 12.1>= 3.8, <=3.11
2.1.20.16.211.8, 12.1>= 3.8, <=3.11
2.1.10.16.111.8, 12.1>= 3.8, <=3.11
2.1.00.16.011.8, 12.1>= 3.8, <=3.11
2.0.10.15.211.7, 11.8>= 3.8, <=3.11
2.0.00.15.0 (0.15.1)11.7, 11.8>= 3.8, <=3.11
1.13.10.14.111.6, 11.7>= 3.7, <=3.11
1.13.00.14.011.6, 11.7>= 3.7, <=3.11
1.12.10.13.110.2, 11.3, 11.6>= 3.7, <=3.10
1.12.00.13.010.2, 11.3, 11.6>= 3.7, <=3.10
1.11.00.12.010.2, 11.3>= 3.7, <=3.10
1.10.10.11.210.2, 11.3>= 3.6, <=3.9
1.10.00.11.010.2, 11.3 (10.2, 11.1)>= 3.6, <=3.9

安装 CUDA Toolkit

CUDA 版本选择

选择 CUDA Toolkit 版本时,需要根据实际开发环境(如 PyTorch)选择

[Opt 1] 使用 APT 安装(网络安装)
  1. 删除旧的 GPG 密钥
1
$ sudo apt-key del 7fa2af80

  1. 安装 NVIDIA CUDA 密钥环,以获取最新软件源
1
2
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb

  1. 使用 APT 命令,选择一个合适的 CUDA Toolkit 版本进行安装

建议使用 TAB 键自动补全,或执行 apt search cuda-toolkit 命令,搜索当前可用的 CUDA Toolkit 版本

  • cuda-toolkit-11-6
  • cuda-toolkit-11-7
  • cuda-toolkit-11-8
  • cuda-toolkit-12-0
  • cuda-toolkit-12-1
  • cuda-toolkit-12-2
  • cuda-toolkit-12-3
  • cuda-toolkit-12-4
1
$ sudo apt install ${cuda-toolkit}

  1. 安装完成后,可以使用以下命令查看 CUDA 版本以验证安装:
1
$ nvcc --version

[Opt 2] 使用软件包安装(本地安装)
  1. 访问 CUDA Toolkit Archive 官网,根据实际开发需求,选择一个合适的 CUDA Toolkit 版本

目前兼容性最佳的版本为:CUDA Toolkit 11.8.0


  1. 选择目标平台的操作系统(Linux)、架构(x86_64)、发行版(WSL-Ubuntu)和安装类型
务必选择 deb (local) 方式安装

安装类型务必选择 deb (local),使用 deb (network) 将会在线安装最新版,而 runfile (local) 无法确保不安装驱动!


  1. 依照所选 Installer Type(安装类型)的安装命令进行安装
1
2
3
4
5
6
7
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
$ sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda


  1. 安装完成后,可以使用以下命令查看 CUDA 版本以验证安装:
1
$ nvcc --version

卸载 CUDA Toolkit
  • 删除 CUDA Toolkit
1
2
$ sudo apt --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
  "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
  • 删除 NVIDIA 驱动程序
1
$ sudo apt --purge remove "*nvidia*" "libxnvctrl*"
  • 清理缓存及无用的相关依赖
1
$ sudo apt autoremove

Pip (Python Install Package)

安装 Pip

[Opt 1] 使用 APT 安装
1
$ sudo apt install python3-pip

[Opt 2] 使用 ensurepip 模块安装

ensurepip 模块需要 Python 3.4 及以上版本

1
$ python -m ensurepip --upgrade
[Opt 3] 使用 get-pip.py 脚本安装
1
2
$ wget https://bootstrap.pypa.io/get-pip.py  # 下载 get-pip.py 脚本
$ python get-pip.py

更新 Pip

默认安装的 Pip 可能较旧,建议使用以下命令更新至最新版

或使用 Python 模块命令 python -m pip install --upgrade pip

1
$ pip install --upgrade pip

更换软件下载源

  1. 选择一个国内镜像站,建议优先选择地理位置较近、相同运营商的镜像站(可在校园网联合镜像站中查询)
  • 临时使用
1
$ pip install -i ${index-url} ${package}
  • 设为默认(使用命令)
1
$ pip config set global.index-url ${index-url}
  • 设为默认(编辑配置文件)

配置文件可能不存在,可以自行创建

1
$ gnome-text-editor ~/.config/pip/pip.conf

图中,使用南京大学镜像站


常用命令

描述命令
验证 pip 安装,检查版本等pip --version, pip -V
安装包pip install <options> <package>
-r, --requirement <file>
-U, --upgrade
-e, --editable <path/url>
卸载包pip uninstall <options> <package>
-r, --requirement <file>
-y, --yes
列出已安装包pip list
显示已安装包的信息pip show <package>
显示缓存信息pip cache info
删除所有缓存pip cache purge
本文由作者依照 CC BY 4.0 进行授权