Skip to content

wsl子系统

WSL2迁移至其他目录

(1) 管理员身份运行PowerShell,执行:

shell
wsl -l -v

(2) 停止正在运行的wsl

shell
wsl --shutdown

(3) 将需要迁移的Linux,进行导出

shell
wsl --export Ubuntu D:/ubuntu.tar

(4) 导出完成之后,将原有的Linux卸载

shell
wsl --unregister Ubuntu

(5) 将导出的文件放到需要保存的地方,进行导入即可

shell
wsl --import Ubuntu D:/Ubuntu D:/ubuntu.tar --version 2

(6) 设置默认用户(如果需要)

shell
ubuntu.exe config --default-user <username>

如果是ubuntu20.04 就是ubuntu2004.exe (7) 重启wsl

shell
wsl --shutdown

然后重新启动

shell
wsl

/mnt 文件夹介绍

/mnt 文件夹是 Linux 子系统中的一个目录,用于挂载 Windows 文件系统。

/mnt 文件夹的结构如下:

/mnt/ ├── /mnt/c/ 挂载 Windows 的 C 盘 ├── /mnt/d/ 挂载 Windows 的 D 盘 ├── /mnt/e/ 挂载 Windows 的 E 盘 └── 其他盘符

想把当前目录下的 .profile 文件复制到 /mnt/d/ 目录下,可以使用以下命令:

shell
 copy .profile /mnt/d/.profile

所以,可以在 /mnt/d/ 目录下,直接进行linux命令操作。

在局域网内的其他电脑访问本机的wsl2

问题:需要解决wsl2与windows之间的网络隔离问题

方法 1(端口转发):适用于大多数情况,简单易用,但仍然依赖 Windows IP。

使用 Windows 端口转发

  • 步骤一:获取wsl2的ip(在wsl环境中执行)
    shell
    hostname -I
    # 输出
    172.25.81.71 172.17.0.1 172.20.0.1 172.21.0.1
  • 步骤二:在windows中设置端口转发
    shell
    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=9080 connectaddress=172.25.81.71 connectport=9080
    • listenaddress=0.0.0.0: 表示 Windows 监听所有网络接口
    • listenport=80:表示对外开放的端口(需要改动)
    • connectaddress=172.25.81.71:WSL2 的 IP 地址(选上一步返回的第一个就可以了)
    • connectport=80:WSL2 服务器监听的端口(需要改动)
  • 步骤三: 允许 Windows 防火墙放行端口(选择下面其一:选择第二个吧)
powershell
  netsh advfirewall firewall add rule name="WSL2 Port 80" dir=in action=allow protocol=TCP localport=80

或者

shell
New-NetFirewallRule -DisplayName "Allow dify HTTP" -Direction Inbound -Protocol TCP -LocalPort 9080 -Action Allow

如果是其他端口,例如 5000,请相应修改 localport=5000。