在 Windows 上安装 Linux

如何使用 WSL 在 Windows 上安装 Linux

适用于 Linux 的 Windows 子系统(WSL)是 Windows作系统的一项功能,可用于运行 Linux 文件系统,以及直接在 Windows 上的 Linux 命令行工具和 GUI 应用,以及传统的 Windows 桌面和应用。

开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 借助适用于 Linux 的 Windows 子系统(WSL),开发人员可以安装 Linux 分发版(如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并在 Windows 上直接使用 Linux 应用程序、实用工具和 Bash 命令行工具(未经修改),无需传统虚拟机或双系统的开销。

一、环境 先决条件

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。 如果使用的是早期版本,请参阅 手动安装页

适用于 Linux 的 Windows 子系统随 Windows 操作系统一起提供,但必须先启用它并安装 Linux 发行版,然后才能开始使用它。

若要使用简化的 --install 命令,必须运行最新版本的 Windows(内部版本 20262+)。 要检查您的 Windows 版本和内部版本号,请按 Windows 徽标键 + R,输入"winver",然后选择"确定"。

二、开启WSL功能

安装 WSL 2 之前,必须启用 虚拟机平台 可选功能。 计算机将需要 虚拟化功能 才能使用此功能。

1、在Windows设置中添加可选功能,勾选适用于Linux的Windows子系统(即WSL)和虚拟机平台,开启该功能需重启电脑。

启用 WSL 功能‌:按 Win + R,输入 optionalfeatures.exe 并回车。

勾选 "适用于 Linux 的 Windows子系统"和"虚拟机平台" (推荐用于 WSL 2),点击"确定"后重启电脑。‌‌

若没有该功能选项,在powershell中分次输入以下指令,分别开启WSL和虚拟机平台功能。

在windows中 以管理员身份打开 PowerShell 并运行**(> PowerShell > 右键单击 > 以管理员身份运行)** 并输入以下命令:

bash 复制代码
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

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

2、安装 WSL 命令

WSL 的基本命令 | Microsoft Learn

现在,可以使用单个命令安装运行 WSL 所需的所有内容。 右键单击并选择"以 管理员 身份运行",在管理员模式下打开 PowerShell,输入 wsl --install 命令,然后重新启动计算机。

bash 复制代码
wsl --install

此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 分发所需的功能。 (可以更改此默认分布 WSL 的基本命令)。

bash 复制代码
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。

安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows

PS C:\WINDOWS\system32> wsl --version
WSL 版本: 2.6.3.0
内核版本: 6.6.87.2-1
WSLg 版本: 1.0.71
MSRDC 版本: 1.2.6353
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows: 10.0.26200.7462
PS C:\WINDOWS\system32> wsl --status
默认版本: 2
当前计算机配置不支持 WSL1。
若要使用 WSL1,请启用"Windows Subsystem for Linux"可选组件。
PS C:\WINDOWS\system32> wsl.exe --help

三、安装Linux子系统

方法1:在微软商店中搜索并挑选所需要的Linux版本,下载并安装。

‌通过 Microsoft Store 安装‌:打开 Microsoft Store,搜索linux,选择 合适版本的 Ubuntu 或 Debian 进行安装。‌‌**(推荐方法1,我用方法2一直报错网址转不过去,用方法1安装成功)**

方法2:通过命令行安装‌

管理员身份运行powershell,输入wsl --list --online以显示可用分发版列表,按提示输入wsl.exe --install <Distro>安装,尖括号内填写NAME列的内容。

‌通过命令行安装‌:以管理员身份打开 PowerShell,运行 wsl --install 自动安装默认发行版(通常是 Ubuntu),或指定版本如 wsl --install -d Ubuntu-22.04。‌‌

四、安装完成

设置 Linux 用户名和密码

使用 WSL 安装 Linux 发行版的过程完成后,使用"开始"菜单打开该发行版(默认情况下为 Ubuntu,双击打开)。 系统将要求你为 Linux 发行版创建"用户名"和"密码"。

  • 用户名密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。

  • 请注意,输入密码时,屏幕上不会显示任何内容。 这称为盲人键入。 你不会看到你正在键入的内容,这是完全正常的。

  • 创建用户名密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。

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

  • 在 WSL 上运行的每个 Linux 发行版都有其自己的 Linux 用户帐户和密码。 每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。

根据提示输入用户名密码,或者直接退出再次进入以使用root权限。

✅ 验证安装

在 PowerShell 中运行 wsl -l -v,若输出类似 NAME STATE VERSION 和 * Ubuntu Running 2,表示安装成功。‌‌

bash 复制代码
PS C:\WINDOWS\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         2
PS C:\WINDOWS\system32>

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

如果忘记了 Linux 分发版的密码:

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

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

  2. 在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd <username>,其中 <username> 是发行版中帐户的用户名,而你忘记了它的密码。

  3. 系统将提示你输入新的 UNIX 密码,然后确认该密码。 在您被告知密码已正确更新后,请在 PowerShell 内使用以下命令关闭 WSL:exit

更新和升级软件包

建议使用发行版的首选包管理器定期更新和升级包。 对于 Ubuntu 或 Debian,请使用以下命令:

Bash

复制代码
sudo apt update && sudo apt upgrade

Windows 不会自动更新或升级 Linux 分发版。 大多数 Linux 用户往往倾向于自行控制此任务。

检查你正在运行的 WSL 的版本

可以通过输入命令列出已安装的 Linux 分发版并检查每个版本的 WSL:

PowerShell

复制代码
wsl.exe --list --verbose

若要在安装新的 Linux 分发版时将默认版本设置为 WSL 1 或 WSL 2,请使用以下命令:

PowerShell

复制代码
wsl.exe --set-default-version <1|2>

若要设置与命令一起使用 wsl 的默认 Linux 分发版,请输入:

PowerShell

复制代码
wsl.exe --set-default <Distro>

替换为 <Distro> 要使用的 Linux 分发版的名称。 例如,在 PowerShell 中,输入: wsl -s Debian 将默认分发设置为 Debian。 现在,从 Powershell 运行 wsl npm init 将在 Debian 中运行 npm init 命令。

若要在不更改默认分发的情况下从 PowerShell 中运行特定的 wsl 分发版,请使用以下命令:

PowerShell

复制代码
wsl.exe --distribution <DistroName>

替换为 <DistroName> 要使用的分发的名称。

将版本从 WSL 1 升级到 WSL 2

默认情况下,使用 wsl --install 命令安装的新 Linux 安装将设置为 WSL 2。

若要查看 Linux 分发版是否设置为 WSL 1 或 WSL 2,请使用以下命令: wsl -l -v 可以使用以下命令从 WSL 1 升级到 WSL 2 或从 WSL 2 降级到 WSL 1:

PowerShell

复制代码
wsl.exe --set-version <Distro> <1|2>

替换为 <Distro> 要更新的 Linux 分发版的名称。 例如, wsl --set-version Ubuntu 2 将 Ubuntu 分发设置为使用 WSL 2。

如果在命令可用之前 wsl --install 手动安装了 WSL,则还可能需要启用 WSL 2 使用的 虚拟机可选组件 ,并 安装内核包 (如果尚未这样做)。

WSL的好处是方便在Windows文件资源管理器下查看和传输Linux子系统文件:

文件存储

  • 若要在 Windows 文件资源管理器中打开 WSL 项目,请输入:explorer.exe .

    请确保在命令的末尾添加句点以打开当前目录。

  • 将项目文件与计划使用的工具存储在相同的操作系统上

    若想获得最快的性能速度,请将文件存储在 WSL 文件系统中,前提是使用 Linux 工具在 Linux 命令行(Ubuntu、OpenSUSE 等)中处理这些文件。 如果是使用 Windows 工具在 Windows 命令行(PowerShell、命令提示符)中工作,请将文件存储在 Windows 文件系统中。 可以跨操作系统访问文件,但这可能会显著降低性能。

例如,在存储 WSL 项目文件时:

  • 使用 Linux 文件系统根目录:\\wsl$\<DistroName>\home\<UserName>\Project
  • 不是 Windows 文件系统的根目录:C:\Users\<UserName>\Project/mnt/c/Users/<UserName>/Project$

设置你最喜欢的代码编辑器

建议使用 Visual Studio Code 或 Visual Studio,因为它们直接支持使用 WSL 进行远程开发和调试。 Visual Studio Code 使你能够将 WSL 用作功能完备的开发环境。 Visual Studio 提供了对 C++ 跨平台开发的原生 WSL 支持。

使用 Visual Studio Code

按照此分步指南开始在 WSL 中使用 Visual Studio Code,其中包括安装远程开发扩展包。 使用此扩展,能够运行 WSL、SSH 或开发容器,以使用整套 Visual Studio Code 功能进行编辑和调试。 在不同的独立开发环境之间快速切换并进行更新,而无需担心会影响本地计算机。

安装并设置 VS Code 后,可以通过输入以下内容使用 VS Code 远程服务器打开 WSL 项目:code .

请确保在命令的末尾添加句点以打开当前目录。

VS Code 显示的 WSL 扩展

使用 Visual Studio

按照此分步指南开始将 Visual Studio 与 WSL 一起用于 C++ 跨平台开发。 Visual Studio 2022 使你能够从 Visual Studio 的同一实例在 Windows、WSL 发行版和 SSH 连接上生成和调试 CMake 项目。

在 Visual Studio 2022 中选择目标系统

使用 C++ 的 Linux 开发 | Microsoft Learn

在 Visual Studio 中安装 C++ Linux 工作负载 | Microsoft Learn

在 Visual Studio 中创建 CMake Linux 项目 | Microsoft Learn
在 Visual Studio 中创建 Linux MSBuild C++ 项目 | Microsoft Learn

演练:使用适用于 Linux 的 Microsoft Windows 子系统 2 (WSL 2) 和 Visual Studio 2022 生成和调试 C++ | Microsoft Learn

使用 Git 设置版本管理

按照此分步指南开始在 WSL 上使用 Git,并将项目连接到 Git 版本控制系统,同时使用凭据管理器进行身份验证,使用 Git Ignore 文件,了解 Git 行尾,以及使用内置到 VS Code 的 Git 命令。

在命令行中显示 git 版本

使用 Docker 设置远程开发容器

开始按照此分步指南来使用 WSL 2 上的 Docker 远程容器,并通过 Windows 的 Docker Desktop 将您的项目连接到远程开发容器。

Docker Desktop 屏幕截图

设置数据库

按照这份分步指南开始使用 WSL 上的数据库,并将您的项目连接到 WSL 环境中的数据库。 开始使用 MySQL、PostgreSQL、MongoDB、Redis、Microsoft SQL Server 或 SQLite。

在 Ubuntu 中通过 WSL 运行 MongoDB

设置 GPU 加速以提高性能

按照这份分步指南,在 WSL 中设置 GPU 加速的机器学习训练,并利用计算机的 GPU(图形处理单元)来加速繁重的性能工作负载。

使用 WSL 进行 GPU 加速运行

基本 WSL 命令

通过 WSL 安装的 Linux 发行版最好使用 PowerShell 或 Windows 命令提示符 (CMD) 进行管理。 有关使用 WSL 时需要熟悉的基本命令的列表,请参阅 WSL 命令参考指南

此外,许多命令在 Windows 和 Linux 之间都具有互操作性。 下面是几个示例:

  • 从 Windows 命令行运行 Linux 工具:打开 PowerShell,通过输入以下内容使用 Linux C:\temp> 命令显示 ls -la 的目录内容:wsl ls -la

  • 混合 Linux 和 Windows 命令:在此示例中,使用 Linux 命令 ls -la 列出目录中的文件,然后使用 PowerShell 命令 findstr 筛选包含"git"的单词的结果:wsl ls -la | findstr "git"。 这还可以通过混合使用 Windows dir 命令和 Linux grep 命令来实现:dir | wsl grep git

  • 直接从 WSL 命令行运行 Windows 工具<tool-name>.exe。例如,若要打开 .bashrc 文件(启动 Linux 命令行时运行的 shell 脚本),请输入:notepad.exe .bashrc

  • 使用 Linux Grep 工具运行 Windows ipconfig.exe 工具:从 Bash 输入命令 ipconfig.exe | grep IPv4 | cut -d: -f2 或从 PowerShell 输入 ipconfig.exe | wsl grep IPv4 | wsl cut -d: -f2。此示例演示了 Windows 文件系统上的 ipconfig 工具,该工具先是用于显示当前 TCP/IP 网络配置值,然后通过 Linux 工具 grep 被筛选为仅显示 IPv4 结果。

调整区分大小写

区分大小写决定了在文件名或目录中,大写字母(FOO.txt)和小写字母(foo.txt)是作为区分(区分大小写)处理的,还是作为等效(不区分大小写)处理的。

  • 区分大小写:FOO.txt ≠ foo.txt ≠ Foo.txt
  • 不区分大小写:FOO.txt = foo.txt = Foo.txt

Windows 和 Linux 的大小写敏感性差异

使用 Linux 和 Windows 文件和目录时,可能需要调整大小写敏感性的处理方式。

标准行为:

  • Windows 文件系统将文件和目录名称视为不区分大小写。 FOO.txt 和 foo.txt 将被视为等效文件。
  • Linux 文件系统将文件和目录名称视为区分大小写。 FOO.txt 和 foo.txt 将被视为不同的文件。

Windows 文件系统支持使用每个目录的属性标志设置区分大小写。 虽然标准操作是不区分大小写的,但你可以分配一个属性标志,使目录设置为区分大小写,这样它将识别仅大小写不同的 Linux 文件和文件夹。

将驱动器装载到适用于 Linux 的 Windows 子系统(WSL)文件系统时,这尤其如此。 在 WSL 文件系统中工作时,由于运行的是 Linux,文件和目录默认情况下被视为区分大小写。

区分大小写 | Microsoft Learn

Linux 和 Bash 入门

本教程将帮助 Linux 新手开始在默认通过 WSL 安装的 Linux 中的 Ubuntu 发行版上安装和更新软件包,并使用 Bash 命令行中的一些基本命令。

安装和更新软件

可以使用运行分发版的首选包管理器直接从命令行安装和更新软件程序。

例如,在 Ubuntu 中,首先通过运行 sudo apt update来更新可用的软件列表。 然后,您可以使用 sudo apt-get install 命令直接获取软件,然后输入您要安装的程序名称:

Bash

复制代码
sudo apt-get install <app_name>

若要更新已安装的程序,可以运行:

Bash

复制代码
sudo apt update && sudo apt upgrade

处理文件和目录

若要查看当前正在使用的目录的路径,请使用 pwd 以下命令:

Bash

复制代码
pwd

若要创建新目录,请使用命令 mkdir,后接您要创建的目录名称。

Bash

复制代码
mkdir hello_world

若要更改目录,请使用 cd 命令后跟要导航到的目录的名称:

Bash

复制代码
cd hello_world

若要查看当前正在使用的目录中的内容,请键入 ls 命令行:

Bash

复制代码
ls

默认情况下,该 ls 命令将仅打印所有文件和目录的名称。 若要获取其他信息,例如上次修改文件时或文件权限,请使用标志 -l

Bash

复制代码
ls -l

可以通过 touch 命令创建一个新文件,后面接要创建的文件名称:

Bash

复制代码
touch hello_world.txt

可以使用任何下载的图形文本编辑器或 VS Code 远程 -- WSL 扩展编辑文件。 可以 在此处了解有关 VS Code 入门的详细信息。

如果希望直接从命令行编辑文件,则需要使用命令行编辑器,例如 vimemacsnano。 许多分发版都安装了其中一个或多个程序,但你始终可以按照 上述指南中概述的安装说明来安装这些程序。

若要使用首选的编辑方法编辑文件,只需运行程序名称,然后运行要编辑的文件的名称:

Bash

复制代码
code hello_world.txt

Bash

复制代码
notepad.exe hello_world.txt

要在命令行中查看文件的内容,请使用 cat 命令,然后指定您要读取的文件:

Bash

复制代码
cat hello_world.txt

使用管道和重定向运算符

管道 | 将一个命令的输出作为输入重定向到另一个命令。 例如, lhscmd | rhscmd 将输出定向 lhscmdrhscmd。 可以通过多种方式使用管道,通过命令行快速完成任务。 下面是有关如何使用管道的几个简单示例。

假设你想要快速对文件的内容进行排序。 请看下面的 fruits.txt 示例:

Bash

复制代码
$ cat fruits.txt
Orange
Banana
Apple
Pear
Plum
Kiwi
Strawberry
Peach

可以使用管道快速对此列表进行排序:

Bash

复制代码
$ cat fruits.txt | sort
Apple
Banana
Kiwi
Orange
Peach
Pear
Plum
Strawberry

默认情况下,命令的 cat 输出将发送到标准输出;但是, | 允许我们改为将输出作为输入重定向到另一个命令 sort

另一个用例是搜索。 可以使用 grep 一个有用的命令来搜索特定搜索字符串的输入。

Bash

复制代码
cat fruits.txt | grep P
Pear
Plum
Peach

还可以使用重定向运算符,例如 > 将输出传递给文件或流。 例如,如果要使用 fruit.txt的已排序内容创建新的 .txt 文件:

Bash

复制代码
$ cat fruits.txt | sort > sorted_fruit.txt
$ cat sorted_fruit.txt
Apple
Banana
Kiwi
Orange
Peach
Pear
Plum
Strawberry

默认情况下,命令的 sort 输出将发送到标准输出;但是, > 运算符允许我们改为将输出重定向到名为 sorted_fruits.txt的新文件中。

可以通过多种有趣的方式使用管道和重定向运算符,以便直接从命令行完成任务。

使用 WSL 运行 Linux GUI 应用 | Microsoft Learn

⚠️ 常见问题

1‌、安装失败‌:确保系统为 Windows 10 2004 或更高版本(运行 winver 查看),并启用 BIOS 中的虚拟化。‌‌

2‌、报错 0x800701bc‌:运行 wsl --update 更新 WSL 内核。‌‌

bash 复制代码
PS C:\WINDOWS\system32> wsl --update
正在检查更新。
已安装最新版本的适用于 Linux 的 Windows 子系统。
PS C:\WINDOWS\system32> wsl --list --verbose
适用于 Linux 的 Windows 子系统没有已安装的分发。
可通过安装包含以下说明的分发来解决此问题:

使用"wsl.exe --list --online' "列出可用的分发
和 "wsl.exe --install <Distro>" 进行安装。
PS C:\WINDOWS\system32>

3‌、Microsoft Store 无法访问‌:改用命令行安装,或手动下载分发包。‌‌

4、错误代码: wsl/installdistro/wininet_e_name_not_resolved

重置WSL网络,在PowerShell中执行以下命令:

bash 复制代码
wsl --shutdown
netsh winsock reset
netsh int ip reset
Restart-Service LxssManager  # 重启WSL核心服务

重启电脑。

5、

6、

【还没整理完......】

相关推荐
zclinux_2 小时前
【Linux】虚拟化的内存气泡
linux·运维·服务器
爱潜水的小L2 小时前
自学嵌入式day33,互斥和同步
linux
松涛和鸣3 小时前
DAY33 Linux Thread Synchronization and Mutual Exclusion
linux·运维·服务器·前端·数据结构·哈希算法
A_New_World3 小时前
Linux内核配置、编译、安装
linux
kangk123 小时前
linux常见指令与实例(生物信息方向)
linux
淼淼7633 小时前
工厂方法模式
开发语言·c++·windows·qt·工厂方法模式
CCI3443 小时前
Remote ssh无法连接?
运维·ssh
技术小李...3 小时前
docker下mysql更改密码后WordPress提示无法连接数据库问题
运维·docker·容器
ForteScarlet3 小时前
如何解决 Kotlin/Native 在 Windows 下 main 函数的 args 乱码?
开发语言·windows·kotlin