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

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

适用于 Linux 的 Windows 子系统文档
https://learn.microsoft.com/zh-cn/windows/wsl/

WSL1/2兼容性

安装 Linux 发行版时,WSL 2 是默认发行版类型。

WSL 2 使用虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 Linux 发行版作为独立的容器在 WSL 2 托管 VM 内运行。

通过 WSL 2 运行的 Linux 发行版将共享同一网络命名空间、设备树(而非 /dev/pts)、CPU/内核/内存/交换空间、/init 二进制文件,但有自己的 PID 命名空间、装载命名空间、用户命名空间、Cgroup 命名空间和 init 进程。

 WSL 1 和 WSL 2 之间的主要区别在于:
 
 - 在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。
 
 - WSL 2 是安装 Linux 发行版时的当前默认版本,它使用最新最好的虚拟化技术在轻量级实用工具虚拟机 (VM) 内运行 Linux 内核。
 
 - WSL2 将 Linux 发行版作为托管 VM 内的隔离容器运行。

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

WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。

通过按 Windows 徽标键 + R,检查你的 Windows 版本,然后键入 winver,选择“确定”。

使用WSL1的情况

  • 你的项目文件必须存储在 Windows 文件系统中。 WSL 1 可以更快地访问从 Windows 装载的文件。

    • 如果你将使用 WSL Linux 分发版来访问 Windows 文件系统上的项目文件,并且这些文件无法存储在 Linux 文件系统上,那么,通过使用 WSL 1,你将跨 OS 文件系统实现更快的性能。
  • 一个项目要求对相同的文件使用 Windows 和 Linux 工具进行交叉编译。

    • 在 WSL 1 中,跨 Windows 和 Linux 操作系统的文件性能比 WSL 2 中更快,因此如果要使用 Windows 应用程序来访问 Linux 文件,则目前通过 WSL 1 可实现更快的性能
  • 你的项目需要访问串行端口或 USB 设备。 但是,现在可通过 USBIPD-WIN 项目为 WSL 2 提供 USB 设备支持。
  • WSL 2 不支持访问串行端口。 有

兼容性具体看文档
https://learn.microsoft.com/zh-cn/windows/wsl/faq

WSL命令

设置默认 WSL 版本

wsl --set-default-version <Version>

设置默认 WSL 发行版本

wsl --set-default <Distribution Name>

列出已安装的 Linux 发行版

wsl --list --verbose

列出可用的 Linux 发行版

wsl --list --online
# OR
wsl -l -v

--all(列出所有发行版)、--running(仅列出当前正在运行的发行版)或 --quiet(仅显示发行版名称)

将 WSL 版本设置为 1 或 2

wsl --set-version <distribution name> <versionNumber>

设置默认 WSL 版本

wsl --set-default-version <Version>

设置默认 Linux 发行版

wsl --set-default <Distribution Name>

将目录更改为主页

wsl ~

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

wsl --distribution <Distribution Name> --user <User Name>

更新 WSL

wsl --update

检查 WSL 状态

wsl --status

检查 WSL 版本

wsl --version

特定用户的身份运行

wsl --user <Username>

发行版的默认用户

<DistributionName> config --default-user <Username>

关闭重启

wsl --shutdown

终止指定的发行版或阻止其运行

wsl --terminate <Distribution Name>

导入导出

wsl --export <Distribution Name> <FileName>
# - `--vhd`:指定导出分发版应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)
wsl --import <Distribution Name> <InstallLocation> <FileName>
# - `--vhd`:指定导入分发版应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)
# - `--version <1/2>`:指定将分发版导入为 WSL 1 还是 WSL 2 分发版

就地导入
将指定的 .vhdx 文件导入为新的发行版。 虚拟硬盘必须采用 ext4 文件系统类型格式。

wsl --import-in-place <Distribution Name> <FileName>

注销或卸载

wsl --unregister <DistributionName>

WSL 磁盘

装载磁盘或设备

wsl --mount <DiskPath>

通过将 <DiskPath> 替换为物理磁盘所在的目录\文件路径,在所有 WSL2 发行版中附加和装载该磁盘。

  • --vhd:指定 <Disk> 引用虚拟硬盘。
  • --name:使用装入点的自定义名称装载磁盘
  • --bare:将磁盘附加到 WSL2,但不进行装载。
  • --type <Filesystem>:装载磁盘时使用的文件系统类型默认为 ext4(如果未指定)。 此命令也可输入为:wsl --mount -t <Filesystem>。可以使用 blkid <BlockDevice> 命令检测文件系统类型,例如:blkid <dev/sdb1>
  • --partition <Partition Number>:要装载的分区的索引号默认为整个磁盘(如果未指定)。
  • --options <MountOptions>:装载磁盘时,可以包括一些特定于文件系统的选项。

卸载磁盘
路径中给定的磁盘,如果未提供磁盘路径,则此命令将卸载并分离所有已装载的磁盘。

wsl --unmount <DiskPath>

WSL 网络

https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands#identify-ip-address

WSL-CUDA-VPGU

Windows 11 和 Windows 10 版本 21H2 支持运行在适用于 Linux 的 Windows 子系统 (WSL) 实例内使用 NVIDIA CUDA 进行 GPU 硬件加速的现有 ML 工具、库和常用框架。
这包括 PyTorch 和 TensorFlow 以及本机 Linux 环境中提供的所有 Docker 和 NVIDIA Container Toolkit 支持。

在 WSL 中启用 NVIDIA CUDA
https://learn.microsoft.com/zh-cn/windows/ai/directml/gpu-cuda-in-wsl
CUDA on WSL User Guide
https://docs.nvidia.com/cuda/wsl-user-guide/index.html
CUDA installation on WSL2 Ubuntu 20.04 and Windows11
https://github.com/ashishpatel26/Cuda-installation-on-WSL2-Ubuntu-20.04-and-Windows11

标签: Linux, WSL, Windows

添加新评论