使用 WSL 在 Windows 11 体验 Linux

教程 · 06-13 · 205 人浏览

什么是 WSL

Windows Subsystem for Linux(简称WSL)是一个在 Windows 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。

通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。

安装 WSL

先决条件

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用。

一键安装

以管理员身份打开命令提示符窗口,执行命令:wsl --install。此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能,然后重启计算机。

设置 Linux 用户名和密码

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

  • 此用户名和密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关
  • 创建用户名和密码后,该帐户将是分发版的默认用户,并将在启动时自动登录
  • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令

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

重置密码

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

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

  • 打开 PowerShell,使用命令wsl -u root进入默认 WSL 分发版的根目录

    如果需要在非默认分发版中更新忘记的密码,使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。
  • 使用命令passwd <username>更新密码,其中 username 是发行版中帐户的用户名
  • 系统将提示你输入新的 UNIX 密码,然后确认该密码。在被告知密码已成功更新后,请使用命令exit在 PowerShell 内关闭 WSL

更新和升级包

对于 Ubuntu 或 Debian,使用命令:sudo apt update && sudo apt upgrade来更新和升级包。

SSH远程连接子系统

安装完Windows子系统,进入子系统,安装ssh服务并启动:

sudo apt-get install openssh-server
sudo service ssh start
service ssh status
 Active: active (running)

查看子系统IP地址:ip addr,例如:inet 192.168.89.200。

假设Windows的IP地址为:192.168.1.100,默认情况下外界是无法直接通过192.168.89.200访问子系统的,需要在Windows上做一个端口转发、防火墙放行。以管理员身份打开命令提示符窗口:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=192.168.89.200 connectport=22

netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=22

最后,局域网的其他机器就能登录啦:ssh root@192.168.1.100

WSL 基本命令

查看 WSL 版本:wsl --version,查看有关 WSL 及其组件的版本信息。

更新 WSL:wsl --update,将 WSL 更新到最新版本。

查看 WSL 状态:wsl --status,查看有关 WSL 配置的常规信息,例如默认发行版类型、默认发行版和内核版本。

Help 命令:wsl --help,查看 WSL 中可用的选项和命令列表。

列出已安装的 Linux 发行版:wsl --list --verbose,该命令会列出已安装的发行版列表,其中包括状态(正在运行还是已停止)和 WSL 版本。

列出可用的 Linux 发行版:wsl --list --online

安装新发行版:wsl --install -d <Distribution Name>,Distribution Name 是发行版名字。

设置默认发行版:wsl --set-default <Distribution Name>,安装了多个发行版时,使用该命令设置默认发行版。

运行特定 WSL 发行版而不更改默认发行版:wsl -d <Distribution Name>

备份发行版:wsl --export <Distribution Name> <FileName>,该命令可将指定发行版导出为 tar 文件作为备份。当系统崩溃或重装时,可以方便地恢复数据。

卸载发行版:wsl --unregister <Distribution Name>,该命令会删除发行版的所有数据、设置和软件,删前请三思!

迁移发行版,如果想把 WSL 从 C 盘挪到其他盘:

  • 停止所有正在运行的发行版:wsl --shutdown
  • 导出发行版:wsl --export <Distribution Name> <Path\FileName>
  • 卸载发行版:wsl --unregister <Distribution Name>
  • 导入发行版到新位置:wsl --import <Distribution Name> <Path> <Path\FileName>

装载磁盘或设备:wsl --mount <DiskPath>,DiskPath 是物理磁盘所在的目录\文件路径,在所有 WSL2 发行版中附加和装载该磁盘。

卸载磁盘:wsl --unmount <DiskPath>,卸载磁盘路径中给定的磁盘,如果未提供磁盘路径,将卸载并分离所有已装载的磁盘。

WSL 使用技巧

与 Windows 无缝集成

可以在 WSL 中直接访问 Windows 文件系统,路径是/mnt/。反过来,也可以在 Windows 中访问 WSL 文件,在文件管理器地址栏输入\\wsl$\即可。

还可以在 WSL 中运行 Windows 程序,比如 notepad.exe、explorer.exe 等。反过来,也可以在 Windows 中运行 WSL 程序。

总之,WSL 的一大优势就是与 Windows 无缝集成,两者可以互相调用,互通有无。

文件存储

在存储 WSL 项目文件时:

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

原因是,跨操作系统访问文件,可能会显著降低性能。

WSL + VS Code

安装远程开发扩展包(Remote Development),此扩展包使你能够打开容器中、远程计算机上或 WSL 中的任何文件夹。

从 WSL 发行版打开项目:code .

Windows Linux
Theme Jasmine by Kent Liao