Windows WSL

什么是 WSL

Windows 中 的WSL(Windows Subsystem for Linux)是可以在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双重启动。

WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

WSL1 与 WSL2 对比

默认启用 WSL 的时候,是使用的 WSL2, 因为 WSL2 在性能和兼容性方面做了很多优化,具体区别如下

功能 / 特点 WSL 1 WSL 2
Windows 与 Linux 之间的集成
快速启动时间
与传统虚拟机相比,资源占用很小
使用 VMware 和 VirtualBox 的当前版本运行
托管 VM
完整 Linux 内核
完整的系统调用兼容性
跨 OS 文件系统的性能
systemd 支持
IPv6 支持

开启 WSL 功能

在 Windows 的 服务中,找到 Windows Linux 选项,并开启 Windows Linux 服务

使用如下命令验证 WSL 是否安装成功

wsl --list --verbose

WSL 启动与卸载

在使用 wsl 命令安装了 linux 版本之后,可以直接在 power shell 命令行中点击下拉列表即可,选择想要启动的 linux 系统即可

卸载对应的linux版本

wsl --unregister Ubuntu-22.04

常用命令

查看可用的版本

wsl --list --online

选择版本安装

wsl --install Ubuntu-22.04 --web-download

查看安装了哪些linux系统

wsl --list -v

如果安装了多个linux版本,可以通过如下命令进行切换

wsl --set-default Ubuntu-22.04

备份linux 系统

wsl --export Ubuntu-22.04 Ubuntu-22.04.tar

导入系统到D:/wsl,并且命名为Ubuntu-22.04-2

wsl --import Ubuntu-22.04-2 D:/wsl C\XXXX\Ubuntu-22.04.tar
# 导入成功后,可以通过如下命令查看
wsl --list -v

其他常用操作

文件共享

默认windows的磁盘会挂载到linux操作系统,例如

lin@lin:~$ df -h
Filesystem Size Used Avail Use% Mounted on
none 12G 0 12G 0% /usr/lib/modules/6.6.87.1-microsoft-standard-WSL2
none 12G 4.0K 12G 1% /mnt/wsl
drivers 501G 108G 393G 22% /usr/lib/wsl/drivers
/dev/sdd 1007G 1.2G 955G 1% /
none 12G 76K 12G 1% /mnt/wslg
none 12G 0 12G 0% /usr/lib/wsl/lib
rootfs 12G 2.7M 12G 1% /init
none 12G 472K 12G 1% /run
none 12G 0 12G 0% /run/lock
none 12G 0 12G 0% /run/shm
none 12G 76K 12G 1% /mnt/wslg/versions.txt
none 12G 76K 12G 1% /mnt/wslg/doc
C:\ 501G 108G 393G 22% /mnt/c
D:\ 454G 82G 373G 18% /mnt/d
F:\ 932G 300G 633G 33% /mnt/f
tmpfs 12G 4.0K 12G 1% /run/user/1000

windows 也可以直接查看linux的文件

端口转发

添加端口转发
如果仅想将 Linux 中的某个端口暴露出来,可以通过端口转发的方式暴露。如下是将本机的 873 端口请求转发到 Linux 虚机的 873 端口

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=873 connectaddress=localhost connectport=873

删除端口转发

netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=873

Linux 使用物理机 IP

  1. 在 WSL setting 中设置网络模式为 Mirrored

  2. 重启 WSL
# 关闭 WSL
wsl.exe --shutdown

# 启动 WSL
wsl
  1. 查看 linux 主机 ip,此时就变成了 windows 主机 IP
root@lin:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 40:b0:76:9e:80:3b brd ff:ff:ff:ff:ff:ff
3: loopback0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:2c:c9:f1 brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 60:e3:2b:fe:24:ff brd ff:ff:ff:ff:ff:ff
inet 192.168.6.10/24 brd 192.168.6.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::ab1c:85a6:81fd:1374/64 scope link nodad noprefixroute
valid_lft forever preferred_lft forever

参考

微软官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/compare-versions

Leave a Comment

Your email address will not be published. Required fields are marked *