wsl 及隔离使用 Agent

WSL 的杂知识点

wsl是宿主机中的一个虚拟磁盘(也就是一个文件),用(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object {$_.GetValue("DistributionName") -eq '发行版名称,比如Ubuntu'}).GetValue("BasePath") + "\ext4.vhdx"查看这个虚拟磁盘的位置(一般在C盘下面),子系统中的所有东西都是存储在这个虚拟磁盘下面,所以保证C盘空间较大

wsl --list --verbose可以看一共有几个子系统

  • 对于下载了 docker desktop 的时候,会发现有一个叫做docker desktop的子系统
  • 这是 docker desktop 专门创建的子系统。但是实际上由于docker descktop占内存,应该直接使用docker cli的
  • 而在非docker desktop子系统中也可以使用docker的原因是docker desktop的设置有个wsl integration,其他的wsl也可以使用docker

/mnt下面是挂载的宿主机的内容

任何重新设置之后要先wsl --shutdown然后再启动

其他的杂知识点

WSL 配置

# .wslconfig 文件

[wsl2]
networkingMode=Mirrored
localhostForwarding=false
dnsProxy=false
guiApplications=false # 禁用 GUI,防止剪切板内容泄露;需要的时候可以重新开启

[experimental]
autoProxy=true
dnsTunneling=true
firewall=true
bestEffortDnsParsing=true
sparseVhd=true
# /etc/wsl.conf

[boot]
systemd=true

[user]
default=xxx

[automount] # 取消自动挂载
enabled=false
mountFsTab=true # 允许挂载指定目录

[interop] # 不允许运行 Windows 程序
enabled=false
appendWindowsPath=false

mountFsTab=true的作用是挂载/etc/fstab文件中的指定目录。比如说一些 IDE 需要利用宿主机中下载好的无头操作文件对 WSL 进行连接,那么我们可以编辑/etc/fstab

//localhost/c$/Users/<user_name>/AppData/Local/Zed/remote_servers /mnt/c/Users/<user_name>/AppData/Local/Zed/remote_servers drvfs ro 0 0

为了尽最大可能保证 Agent 隔离使用,为 Agent 创建一个专门的用户:

sudo adduser --gecos "" agent # 创建一个名为 agent 的用户
id agent # 确保 agent 这个用户没有在 docker 组和 soduers 组中

此时 WSL 中有两个可以操作的用户。一些 IDE 需要单独为两个用户设置登录方式,以 Zed 为例,如果出现了下图
image
那么就需要配置:

# settings.json

  "wsl_connections": [
    {
      "distro_name": "Ubuntu",
      "user": "xxx",
      "projects": [
        {
          "paths": [
            "/home/xxx"
          ]
        }
      ]
    },
    {
      "distro_name": "Ubuntu",
      "user": "agent",
      "projects": [
        {
          "paths": [
            "/home/agent"
          ]
        }
      ]
    }
  ]
posted @ 2026-08-02 16:25  最爱丁珰  阅读(15)  评论(0)    收藏  举报