WSL 使用教程

1 概述

WSL 是适用于 Linux 的 Windows 子系统,可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

WSL 分为两个版本,一个是 WSL1,一个是 WSL2,WSL2 是 WSL1 的升级版,主要优势是:

  • 提高文件系统性能。
  • 支持完全的系统调用兼容性。
  • 托管 VM。
  • 完整的 Linux 内核。
  • 完全的系统调用兼容性。

WSL2 建议不要跨操作系统使用文件,若想获得最快的性能速度,请将文件存储在 WSL 文件系统中,在存储时,使用 Linux 文件系统根目录:\\wsl$\Ubuntu-20.04\home\<user name>\Project

访问 WSL2 文件系统,可以运行命令 WIN+R 或在文件资源管理器地址栏中键入 \\wsl$,以查找相应的分发名称并访问其根文件系统。

大多数情况下我们会使用 WSL2,但在以下情况,请考虑使用 WSL1:

  • 你的项目文件必须存储在 Windows 文件系统中。
  • 一个项目要求对相同的文件使用 Windows 和 Linux 工具进行交叉编译。
  • 你的项目需要访问串行端口或 USB 设备,WSL2 不支持访问串行端口。
  • 长时间运行的 WSL 会话或访问非常大量的文件。

2 常用命令

2.1 启动与停止

# 启动默认 Linux 分发版
wsl
 
# 以指定用户身份运行 Linux 分发版
wsl -u <username>
 
# 运行指定的 Linux 分发版
wsl -d <Linux分发版名称>
 
# 退出 Linux 分发版
exit
 
# 终止指定的分发
wsl -t <Linux分发版名称>
 
# 终止所有运行的分发及 WSL 轻型工具虚拟机
wsl --shutdown

2.2 查看

# 列出已安装且可供使用的 Linux 分发版
wsl -l
 
# 列出所有分发,包括当前不可用的分发
wsl -l --all
 
# 仅列出当前正在运行的分发
wsl -l --running
 
# 仅显示分发名称
wsl -l -q
 
# 显示所有分发的详细信息
wsl -l -v

2.3 安装与卸载

# 列出可安装 Linux 分发版
wsl -l -o
 
# 安装指定 Linux 分发版
wsl --install -d <Linux分发版名称>
 
# 卸载 Linux 分发版,卸载后可以重新安装
wsl --unregister <Linux分发版名称>

2.4 导入与导出

# 导入 Linux 分发版, 可加 --version 指定要用于新分发的版本
wsl --import <Linux分发版名称> <安装位置> <文件名>
 
# 导出 Linux 分发版,后缀名请以 tar 结尾
wsl --export <Linux分发版名称> <路径>

2.5 其它

# 设置默认 Linux 分发版
wsl -s <Linux分发版名称>
 
# 在不使用默认 Linux Shell 的情况下执行指定的命令
wsl -e <命令行>
 
# 更改新分发的默认安装版本
wsl --set-default-version <版本>
 
# 更新 WSL2 内核到最新版本
wsl --update
 
# 还原到 WSL2 内核的先前版本
wsl --update --rollback
 
# 更改指定分发的版本
wsl --set-version <Linux分发版名称> <版本>

3 常用操作

3.1 从 Windows 访问 Linux 网络应用

可以使用 localhost 从 Windows 上访问 Linux 分发版中的应用。

3.2 从 Linux访问 Windows 网络应用

如果要从 Linux 分发版访问 Windows 上运行的网络应用,则需要使用主机的 IP 地址。 你可以执行以下步骤来使其可行。

  1. 通过在 Linux 分发版中运行以下命令来获取主机的 IP 地址:cat /etc/resolv.conf
  2. 复制 nameserver 后面的 IP 地址可用于访问 Windows 上运行的网络应用。

3.3 通过远程 IP 地址进行连接

当使用远程 IP 地址连接到应用程序时,它们将被视为来自局域网 (LAN) 的连接。 这意味着你需要确保你的应用程序可以接受 LAN 连接。例如,你可能需要将应用程序绑定到 0.0.0.0 而非 127.0.0.1

3.4 从局域网 (LAN) 访问 WSL 2 分发版

当使用 WSL 1 分发版时,如果计算机设置为可供 LAN 访问,那么在 WSL 中运行的应用程序也可供在 LAN 中访问。

这不是 WSL 2 中的默认情况,WSL 2 有一个带有其自己独一无二的 IP 地址的虚拟化以太网适配器。 目前,若要启用此工作流,你需要执行与常规虚拟机相同的步骤。下面是一个示例 PowerShell 命令,用于添加侦听主机上的端口 4000 的端口代理并将其连接到端口 4000,并使用 IP 地址 192.168.101.100 连接到 WSL 2 VM。

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

3.5 运行 Linux 命令

使用 wsl <Linux命令> 可以在 CMD 或 PowerShell 运行 Linux 命令,示例:

wsl ls -la

以这种方式运行的命令使用的是同一个工作目录,并且以 WSL 默认用户的身份运行,拥有与调用方进程和终端相同的 Windows 管理权限。

3.6 混合运行 Linux 和 Windows 命令

# 组合 Linux 的 ls 命令 和 powershell 的 findstr 命令
wsl ls -la | findstr "git"
 
# 组合 powershell 的 dir 命令和 Linux 的 grep 命令
dir | wsl grep git
 
# 组合 Linux 的 ls 命令 和 powershell 的 > 命令
组合 Linux 的 ls 命令 和 powershell 的 findstr 命令
 
# 使用 Linux 命令 列出 Linux 文件
wsl ls -la /proc/cpuinfo
 
# 使用 Linux 命令 列出 Windows 文件
wsl ls -la "/mnt/c/Program Files"

3.7 从 Linux 运行 Windows 工具

WSL 可以使用 [tool-name].exe 直接从 WSL 命令行运行 Windows 工具。 例如,notepad.exe

以这种方式运行的应用程序具有相同的工作目录,拥有与 WSL 进程相同的权限,以活动 Windows 用户的身份运行,显示在 Windows 任务管理器中。

4 总结

WSL 还有一些高级用法,比如更改磁盘大小,文件权限,环境变量等,具体配置可以参考官方文档。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,999评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,102评论 1 302
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,709评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,439评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,846评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,881评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,062评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,783评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,517评论 1 248
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,762评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,241评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,236评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,145评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,941评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,965评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,802评论 2 275

推荐阅读更多精彩内容