什么是 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 .
。