Windows 系统安装 Linux 子系统(WSL)完整指南
适用于 Linux 的 Windows 子系统(WSL)是 Windows 操作系统的一项功能,可用于运行 Linux 文件系统,以及直接在 Windows 上的 Linux 命令行工具和 GUI 应用。
介绍如何在 Windows 系统上通过 WSL(Windows Subsystem for Linux)安装和配置 Linux 发行版。涵盖环境检查、功能启用、命令行及商店安装方式、用户设置、开发工具安装、SSH 配置及版本管理等内容。提供常见错误排查与基本 Linux 命令操作指南。

适用于 Linux 的 Windows 子系统(WSL)是 Windows 操作系统的一项功能,可用于运行 Linux 文件系统,以及直接在 Windows 上的 Linux 命令行工具和 GUI 应用。
开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。借助 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 2 之前,必须启用 虚拟机平台 可选功能。计算机需要虚拟化功能才能使用此功能。
在 Windows 设置中添加可选功能,勾选 适用于 Linux 的 Windows 子系统(即 WSL) 和 虚拟机平台,开启该功能需重启电脑。启用'虚拟机平台'和'Hyper-V'功能(推荐用于 WSL 2)。
启用 WSL 功能: 按 Win + R,输入 optionalfeatures.exe 并回车。
勾选 '适用于 Linux 的 Windows 子系统'、'虚拟机平台'和'Hyper-V'功能,点击'确定'后重启电脑。
若没有该功能选项,在 PowerShell 中分次输入以下指令,分别开启 WSL 和虚拟机平台功能:
以管理员身份打开 PowerShell 并运行以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Hyper-V /all /norestart
重启计算机后,设置 WSL 2 为默认版本:
wsl --set-default-version 2
重启 计算机 以完成 WSL 安装和更新到 WSL 2。
出现'无法安装 Hyper-V,该固件中的虚拟化支持被禁用'的错误,是因为计算机 BIOS/UEFI 设置中的 CPU 虚拟化技术(如 Intel VT-x 或 AMD-V)未被启用。解决此问题的核心步骤是进入 BIOS/UEFI 设置界面,找到并启用虚拟化技术选项,然后保存设置并重启计算机。
现在,可以使用单个命令安装运行 WSL 所需的所有内容。右键单击并选择'以 管理员 身份运行',在管理员模式下打开 PowerShell,输入 wsl --install 命令,然后重新启动计算机。
wsl --update
wsl --install # 安装 Ubuntu(从 Microsoft Store 或命令行)
wsl --install -d Ubuntu-22.04
此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 分发所需的功能。
通过 Microsoft Store 安装:打开 Microsoft Store,搜索 linux,选择合适版本的 Ubuntu 或 Debian 进行安装。
管理员身份运行 PowerShell,输入 wsl --list --online 以显示可用分发版列表,按提示输入 wsl.exe --install <Distro> 安装,尖括号内填写 NAME 列的内容。
使用 WSL 安装 Linux 发行版的过程完成后,使用'开始'菜单打开该发行版(默认情况下为 Ubuntu,双击打开)。系统将要求你为 Linux 发行版创建'用户名'和'密码'。
sudo (Super User Do) 管理命令。在 PowerShell 中运行 wsl -l -v,若输出类似 NAME STATE VERSION 和 * Ubuntu Running 2,表示安装成功。
PS C:\WINDOWS\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 2
若要更改或重置密码,请打开 Linux 发行版并输入命令:passwd。系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。
如果忘记了 Linux 分发版的密码:
passwd <username>。exit。请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root
如果需要在非默认的分发版中更新忘记的密码,请使用命令:
wsl -d <DistroName> -u root。
建议使用发行版的首选包管理器定期更新和升级包。对于 Ubuntu 或 Debian,请使用以下命令:
sudo apt update && sudo apt upgrade
# 或者
sudo apt update && sudo apt upgrade -y
Windows 不会自动更新或升级 Linux 分发版。大多数 Linux 用户往往倾向于自行控制此任务。
在 WSL 终端中执行:
# 安装编译工具链和调试器
sudo apt install -y build-essential gdb gdbserver openssh-server cmake
# 验证安装
gcc --version # 应显示 7.x 或更高版本
gdb --version # 应显示 8.x 或更高版本
# 启动 SSH 服务
sudo service ssh start
# 设置开机自启
sudo systemctl enable ssh
# 检查 SSH 服务状态
sudo service ssh status
可以通过输入命令列出已安装的 Linux 分发版并检查每个版本的 WSL:
wsl.exe --list --verbose
若要在安装新的 Linux 分发版时将默认版本设置为 WSL 1 或 WSL 2,请使用以下命令:
wsl.exe --set-default-version <1|2>
若要设置与命令一起使用 wsl 的默认 Linux 分发版,请输入:
wsl.exe --set-default <Distro>
替换为 <Distro> 要使用的 Linux 分发版的名称。例如,在 PowerShell 中,输入:wsl -s Debian 将默认分发设置为 Debian。
若要在不更改默认分发的情况下从 PowerShell 中运行特定的 wsl 分发版,请使用以下命令:
wsl.exe --distribution <DistroName>
默认情况下,使用 wsl --install 命令安装的新 Linux 安装将设置为 WSL 2。
若要查看 Linux 分发版是否设置为 WSL 1 或 WSL 2,请使用以下命令: wsl -l -v。可以使用以下命令从 WSL 1 升级到 WSL 2 或从 WSL 2 降级到 WSL 1:
wsl.exe --set-version <Distro> <1|2>
替换为 <Distro> 要更新的 Linux 分发版的名称。例如, wsl --set-version Ubuntu 2 或 wsl --set-version Ubuntu-22.04 2 将 Ubuntu 分发设置为使用 WSL 2。
如果在命令可用之前 wsl --install 手动安装了 WSL,则还可能需要启用 WSL 2 使用的虚拟机可选组件,并安装内核包(如果尚未这样做)。
WSL 的好处是方便在 Windows 文件资源管理器下查看和传输 Linux 子系统文件。
explorer.exe . 请确保在命令的末尾添加句点以打开当前目录。例如,在存储 WSL 项目文件时:
\\wsl$\<DistroName>\home\<UserName>\ProjectC:\Users\<UserName>\Project 或 /mnt/c/Users/<UserName>/Project建议使用 Visual Studio Code 或 Visual Studio,因为它们直接支持使用 WSL 进行远程开发和调试。
安装并设置 VS Code 后,可以通过输入以下内容使用 VS Code 远程服务器打开 WSL 项目:code .
请确保在命令的末尾添加句点以打开当前目录。
Visual Studio 2022 使你能够从 Visual Studio 的同一实例在 Windows、WSL 发行版和 SSH 连接上生成和调试 CMake 项目。
按照官方指南开始在 WSL 上使用 Git,并将项目连接到 Git 版本控制系统,同时使用凭据管理器进行身份验证,使用 Git Ignore 文件,了解 Git 行尾,以及使用内置到 VS Code 的 Git 命令。
开始按照官方指南来使用 WSL 2 上的 Docker 远程容器,并通过 Windows 的 Docker Desktop 将您的项目连接到远程开发容器。
按照官方指南开始使用 WSL 上的数据库,并将您的项目连接到 WSL 环境中的数据库。开始使用 MySQL、PostgreSQL、MongoDB、Redis、Microsoft SQL Server 或 SQLite。
按照官方指南,在 WSL 中设置 GPU 加速的机器学习训练,并利用计算机的 GPU(图形处理单元)来加速繁重的性能工作负载。
通过 WSL 安装的 Linux 发行版最好使用 PowerShell 或 Windows 命令提示符 (CMD) 进行管理。
此外,许多命令在 Windows 和 Linux 之间都具有互操作性。下面是几个示例:
ls -la 命令显示目录内容:wsl ls -lals -la 列出目录中的文件,然后使用 PowerShell 命令 findstr 筛选包含'git'的单词的结果:wsl ls -la | findstr "git"。<tool-name>.exe。例如,若要打开 .bashrc 文件,请输入:notepad.exe .bashrcipconfig.exe | grep IPv4 | cut -d: -f2。区分大小写决定了在文件名或目录中,大写字母(FOO.txt)和小写字母(foo.txt)是作为区分(区分大小写)处理的,还是作为等效(不区分大小写)处理的。
使用 Linux 和 Windows 文件和目录时,可能需要调整大小写敏感性的处理方式。
标准行为:
Windows 文件系统支持使用每个目录的属性标志设置区分大小写。虽然标准操作是不区分大小写的,但你可以分配一个属性标志,使目录设置为区分大小写,这样它将识别仅大小写不同的 Linux 文件和文件夹。
本教程将帮助 Linux 新手开始在默认通过 WSL 安装的 Linux 中的 Ubuntu 发行版上安装和更新软件包,并使用 Bash 命令行中的一些基本命令。
可以使用运行分发版的首选包管理器直接从命令行安装和更新软件程序。
例如,在 Ubuntu 中,首先通过运行 sudo apt update 来更新可用的软件列表。然后,您可以使用 sudo apt-get install 命令直接获取软件,然后输入您要安装的程序名称:
sudo apt-get install <app_name>
若要更新已安装的程序,可以运行:
sudo apt update && sudo apt upgrade
若要查看当前正在使用的目录的路径,请使用 pwd 以下命令:
pwd
若要创建新目录,请使用命令 mkdir,后接您要创建的目录名称。
mkdir hello_world
若要更改目录,请使用 cd 命令后跟要导航到的目录的名称:
cd hello_world
若要查看当前正在使用的目录中的内容,请键入 ls 命令行:
ls
默认情况下,该 ls 命令将仅打印所有文件和目录的名称。若要获取其他信息,例如上次修改文件时或文件权限,请使用标志 -l:
ls -l
可以通过 touch 命令创建一个新文件,后面接要创建的文件名称:
touch hello_world.txt
可以使用任何下载的图形文本编辑器或 VS Code 远程 – WSL 扩展编辑文件。
如果希望直接从命令行编辑文件,则需要使用命令行编辑器,例如 vim,emacs 或 nano。
若要使用首选的编辑方法编辑文件,只需运行程序名称,然后运行要编辑的文件的名称:
code hello_world.txt
notepad.exe hello_world.txt
要在命令行中查看文件的内容,请使用 cat 命令,然后指定您要读取的文件:
cat hello_world.txt
管道 | 将一个命令的输出作为输入重定向到另一个命令。例如,lhscmd | rhscmd 将输出定向 lhscmd 到 rhscmd。
假设你想要快速对文件的内容进行排序。请看下面的 fruits.txt 示例:
$ cat fruits.txt
Orange Banana Apple Pear Plum Kiwi Strawberry Peach
可以使用管道快速对此列表进行排序:
$ cat fruits.txt | sort
Apple Banana Kiwi Orange Peach Pear Plum Strawberry
另一个用例是搜索。可以使用 grep 一个有用的命令来搜索特定搜索字符串的输入。
cat fruits.txt | grep P
Pear Plum Peach
还可以使用重定向运算符,例如 > 将输出传递给文件或流。例如,如果要使用 fruit.txt 的已排序内容创建新的 .txt 文件:
$ cat fruits.txt | sort > sorted_fruit.txt
$ cat sorted_fruit.txt
Apple Banana Kiwi Orange Peach Pear Plum Strawberry
确保系统为 Windows 10 2004 或更高版本(运行 winver 查看),并启用 BIOS 中的虚拟化。
运行 wsl --update 更新 WSL 内核。
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>' 进行安装。
改用命令行安装,或手动下载分发包。
重置 WSL 网络,在 PowerShell 中执行以下命令:
wsl --shutdown
netsh winsock reset
netsh int ip reset
Restart-Service LxssManager # 重启 WSL 核心服务
重启电脑。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online