深入了解 WSL2 功能

深入探究 WSL2 的强大功能

Windows 和 Linux 是两种占据主导地位的操作系统。Windows 以其用户友好的特性而闻名,而 Linux 则因其高度的定制能力而备受开发者、效率追求者和学习者的青睐。

为了同时使用这两个系统,通常需要在 Windows 中进行虚拟化或进行双系统引导。

然而,现在 Windows 提供了一个新功能,让用户能够在 Windows 环境中轻松访问 Linux 系统。

这就是 WSL2,即适用于 Linux 的 Windows 子系统。它是一项 Windows 的内置功能,可以直接在 Windows 系统内使用 Linux。

本文将详细探讨 WSL2。我们将深入了解它的定义、用途、安装过程,以及如何有效地使用它。

让我们开始吧!

什么是适用于 Linux 的 Windows 子系统?

适用于 Linux 的 Windows 子系统允许用户直接从 Windows 终端访问 GNU/Linux 环境,而无需进行双系统引导或使用虚拟化软件。通过 WSL2,您可以直接访问 Linux 内核。这意味着您可以在 Windows 系统中直接使用 Linux 的各种功能,包括命令行工具、应用程序和实用程序。

WSL2 是最新的 Windows 子系统,与随 Windows 10 一起发布的 WSL1 相比,它提供了更强大的功能和更快的速度。此外,大多数 Windows 系统都预装了 WSL。您只需要启用它即可开始使用。

在底层技术方面,WSL2 使用了 Windows 的 Hyper-V 虚拟机技术。这使得 WSL2 能够与 Linux 高度兼容,并使得其运行速度比 WSL1 快近 20 倍。

简而言之,WSL2 是适用于 Linux 的最新 Windows 子系统,它让 Windows 用户可以直接访问 Linux 内核。

WSL2 入门

在整个教程中,我们将使用 Windows 终端。这是一个非常便捷的工具,强烈推荐在 Windows 中使用终端的用户使用。对于需要使用命令行工具和 WSL 的用户来说,它是一个现代、快速且高效的终端。

电脑要求

并非所有电脑都支持 WSL2。要运行 WSL2,您的系统必须支持虚拟化,因为 WSL2 在底层使用了 Hyper-V 技术。

此外,您的 CPU 必须是支持 SLAT(二级地址转换)的 64 位处理器。几乎所有现代 CPU 都具备这一特性。

至于磁盘空间,您至少需要 1GB 的可用空间。

从 BIOS 启用虚拟化

如果您满足硬件要求,则必须在主板的 BIOS 设置中启用虚拟化功能。

通过按下 F2、Del 或 F10 等按键进入 BIOS。

在 BIOS 中,找到并启用 AMD 的安全虚拟机 (SVM) 或 Intel 的虚拟化技术 VTx。 完成后,重新启动计算机。

如果您需要更详细的说明,可以参考我的另一篇文章“如何在 Windows 10 上使用 Hyper-V 安装 Ubuntu”。

为 WSL2 启用 Windows 功能

在满足硬件要求后,接下来就是在 Windows 中启用 WSL2 功能。

首先,检查您的 Windows 版本。这将帮助您判断您的 Windows 是否支持 WSL。

按下 CMD + R 并输入 “winver”,这将显示您的 Windows 版本信息。

如果您使用的是 Windows 10,您可能正在使用 WSL1。但是,对于大多数 Windows 11 用户,默认情况下会使用 WSL2。

所有 Windows 10 和 11 版本都支持 WSL2,但 Windows S 版本除外,因为它侧重于安全性并禁用了虚拟化功能。

如果您的系统是 Windows S 版本,您需要将其更改为其他版本,如 Windows Home 或 Pro。

在“设置”>“更新和安全”>“激活”中可以更改您的操作系统版本。

此外,请确保安装最新的 Windows 更新,以确保与 WSL2 的完全兼容性和支持。要更新您的系统,请转到“设置”>“Windows 更新”。

要使用 WSL2,您需要启用多个 Windows 功能。

转到“控制面板”>“程序和功能”,然后找到“启用或关闭 Windows 功能”,点击它将打开一个名为“Windows 功能”的新窗口。

在其中,找到并勾选 “Hyper-V”、“虚拟机平台”和 “适用于 Linux 的 Windows 子系统” 这三项。

系统会提示您重新启动计算机,以使更改生效。

您也可以通过运行以下命令来启用这些功能:

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

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

安装 WSL2

在满足所有先决条件后,现在是安装 WSL 的时候了。

打开 Windows 终端(Windows 10)或 Windows PowerShell(Windows 11),然后输入以下命令:

$ wsl

# 输出

Copyright (c) Microsoft Corporation. All rights reserved.

Usage: wsl.exe [Argument]

Arguments:
…..

这表示 WSL 可用,但尚未激活。

现在,要安装 WSL,请以管理员权限运行以下命令:

$ wsl --install

# 输出

PS C:UsersLogan99> wsl --install

Installing: Virtual Machine Platform
Virtual Machine Platform has been installed.
Installing: Windows Subsystem for Linux
Windows Subsystem for Linux has been installed.
Installing: Ubuntu
Ubuntu has been installed.
The requested operation is successful. Changes will not be effective until the system is rebooted.

注意:考虑到您已经通过 Windows 功能启用了它们,您可能看不到以上输出。相反,您应该看到如下输出。(如果看到了以下输出,请跳到下一部分)。

Ubuntu is already installed.
Launching Ubuntu...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
New password:
Retype new password:

要检查 WSL 版本,请输入 wsl –version 命令:

$ wsl --version

# 输出

WSL version: 1.1.6.0

Kernel version: 5.15.90.1

WSLg version: 1.0.50

MSRDC version: 1.2.3770

Direct3D version: 1.608.2-61064218

DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp

Windows version: 10.0.22621.1413

您会注意到预装了 WSL 版本 1.1.6.0。 因此,如果它不起作用并输出错误,则表示尚未正确安装 WSL。

要切换到 WSL2,请运行以下命令:

$ wsl --set-default-version 2

由于我们的系统已经预装了 WSL,因此我们收到了此消息。

您还可以从 Windows 应用商店安装 WSL。首先,打开应用商店并搜索 “适用于 Linux 的 Windows 子系统”。

点击“获取”并等待其安装完成。

安装完成后,您可以点击“打开”,它将打开一个 Windows 终端,并显示消息“适用于 Linux 的 Windows 子系统没有已安装的发行版”。

在 WSL 上安装发行版

安装 WSL 后,就可以安装 Linux 发行版了。

默认情况下,WSL 会安装 Ubuntu LTS 版本。 要安装 Ubuntu,您需要运行以下命令:

$ wsl --install

它将开始安装 Ubuntu。 在安装过程中,系统会要求您设置新的 UNIX 用户名和密码。

安装完成后,您将看到 Ubuntu Linux 的命令行提示符。 在这里,您可以使用所有 Linux 命令。让我们检查一下 Ubuntu 版本。

$ lsb_release -a

# 输出

No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 22.04.1 LTS

Release:        22.04

Codename:       jammy

就这样!您现在可以访问 Linux 内核了。

要退出发行版,您需要输入以下命令:

$ exit

# 输出

[email protected]:/mnt/c/Users/Logan99$ exit

logout

安装更多发行版

您还可以安装其他发行版,如 Fedora、Debian 和 OracleLinux_8_5。要查看可用的发行版选项,请输入以下命令:

$ wsl --list --online

要安装 Debian,我们需要输入以下命令:

$ wsl --install -d Debian

Or

$ wsl.exe --install Debian

与 Ubuntu 一样,它还会要求您安装用户名和密码。

# 输出

现在,让我们检查 Debian 版本。

$ cat /etc/issue

# 输出

$ Debian GNU/Linux 11 n l

但是 Fedora 呢?当您使用 `wsl –list –online` 命令时,它不会列出。

您也可以从 Windows 应用商店安装发行版。

打开 Windows Store,输入 Linux 发行版,它会列出所有可用的发行版。 在这里,您只能看到官方支持的发行版。

对于非官方发行版支持,您需要手动搜索。 然而,这些非官方发行版可能存在问题并且不是 100% 安全的。 因此,仅将其用于实验目的。

点击“安装”以将其安装到您的系统中。

设置默认发行版

如果您想查看可用发行版的列表,可以使用以下命令:

$ wsl --list

Ubuntu 周围的 “Default” 关键字表示,当您在命令提示符中输入 “wsl” 时,将启动默认的 Linux 发行版。

要更改默认发行版,请输入以下命令:

$ wsl --setdefault <DistroName>

因此,要将 Debian 设置为默认发行版,我们需要输入以下命令:

$ wsl --setdefault Debian

因此,下次在终端中输入 `wsl` 时,您将启动 Debian。

为发行版切换 WSL 版本

默认情况下,发行版使用 WSL2。 要列出您当前安装的发行版及其 WSL 版本,请输入以下命令:

$ wsl --list --verbose

# 输出

NAME      STATE           VERSION

* Ubuntu    Stopped         2

  Debian    Stopped         2

这里,星号 (*) 指的是默认的 Linux 安装。

现在,要将 WSL 版本从 2 更改为 1,请输入:

$ wsl --set-version Ubuntu 1

如果您想从 1 切换回 2,请输入:

$ wsl --set-vesion Ubuntu 2

注意:转换可能需要一些时间才能完成。在转换过程中,请勿关闭窗口。

使用不同的用户名启动特定的发行版

如果您想启动特定的发行版,可以使用以下命令:

$ wsl -d <DistroName>

Or

$ wsl --distribution <DistroName>

要启动 Ubuntu,请输入:

$ wsl -d Ubuntu

如果想使用特定用户名启动,请添加 `–user` 后跟用户名。

$ wsl -d <DistroName> --user <UserName>

例如,要使用 “root” 用户名启动 Debian,请输入:

$ wsl -d Debian --user root

注意:使用不存在的用户启动发行版将出现 “找不到用户” 的错误。

更新 Linux

您可以通过输入以下命令来更新 Linux 发行版:

$ sudo apt update

$ sudo apt upgrade

此外,您还可以查找 WSL 的 Linux 内核更新:

$ wsl --update

使用 WSL2 设置 Visual Studio Code

您还可以设置 VS Code 以使用 WSL。 这样,您就可以直接从 VS Code 访问 WSL 终端。 这有助于您在基于 Linux 的应用程序上进行开发,同时访问特定于 Linux 的实用程序和工具链。

此外,在利用 VS Code 功能的同时,您还可以访问特定于 Windows 的生产力工具。

要使其工作,您必须安装远程开发扩展包。您也可以在 VS Code 的扩展选项卡中搜索其名称来直接安装它。

如果您在本地工作,可以通过 VS Code 菜单进行设置。 从那里,选择 “视图” > “终端”。

这将打开终端。 在 “+” 符号旁边,您会找到 > 符号。 点击它,您将看到列出的 WSL 终端。

在这里,您还可以选择“默认配置文件”。

之所以可以这样设置,是因为 VS Code 可以直接访问 `\wsl$` 和本地主机上运行的任何调试器。

使用图形应用程序和 WSL2

要使用图形应用程序,您必须为 WSL2 安装正确的驱动程序。 Intel、AMD 和 Nvidia 都为 WSL 提供了驱动程序,以确保基于 Linux 的图形应用程序能够顺利运行。

但是,您仍然会发现这种方法存在一些问题。 首先,这些图形应用程序可能存在一些不可用的功能。 此外,许多应用程序可能无法运行,这可能需要您寻找替代方案。

简而言之,这主要是一种试错方法,您可能需要花费大量时间。

您可以查看他们的 WSL2 指南,了解如何使用 Ubuntu 处理图形应用程序。

Windows 上的 Docker 桌面 WSL2

如果您不想使用 Hyper-V 在本地进行设置,可以使用官方支持 WSL2 的 Docker Desktop。有了它,您可以设置更快的工作流程,并直接在 Windows 上使用 Docker 工具。要了解更多信息,请查看此处的指南。

微软为什么认真对待 Linux?

微软是一家专有公司。它在封闭环境中创建类似 Windows 的解决方案,并希望用户坚持使用 Windows 而不是 Linux。

然而,在 2016 年,他们宣布了对开源的承诺。 这种观点在 2001 年初发生了转变,当时史蒂夫·鲍尔默称 Linux 为“癌症”。

2023 年,情况发生了变化。微软将 Linux 直接纳入其生态系统。 他们于 2019 年 5 月宣布了 WSL2,并于 2021 年 10 月将 WSL2 引入了 Windows 应用商店。 他们还在 2022 年 11 月发布了 WSL2 v1.0。

他们还允许 Linux 用户访问 Microsoft 软件,例如 Edge 和 Teams。 他们还积极为 Linux 内核做出贡献,并且是 Linux 基金会的成员。

所有这些都表明微软正在认真对待 Linux。 然而,一些怀疑论者并不认为微软喜欢 Linux。

简而言之,微软对 Linux 感兴趣。他们的 Windows 子系统证明了他们对 Linux 和开源的关注。但最重要的是,它告诉我们,他们希望用户可以无缝访问 Linux 内核,而无需使用虚拟化或对 Linux 操作系统进行双系统引导。

最后的话

在“哪个操作系统最适合开发者”的时代,开发者可以选择两者兼顾的路径。 WSL2 通过不同的 Linux 发行版提供对 Linux 内核的访问。 此外,它的运行速度很快,并且可以与 Docker 一起使用。

目前,WSL2 正在积极开发中,以解决兼容性问题,并将更多的权力交给开发者。因此,我们可以说 WSL2 的前景一片光明,微软正在采取一切措施让 Windows 用户可以访问 Linux 内核。

接下来,了解 Linux 发行版,以作为系统管理员和开发人员来学习。