Likefr - WSL
type: channel
link: https://likefr.com/index.php/tag/WSL/
items: OpenClaw WSL 节点文件读写踩坑全记录：三次血泪教训，终于找到正确姿势
items: WSL Ubuntu + OpenClaw Node 完整部署指南

OpenClaw WSL 节点文件读写踩坑全记录：三次血泪教训，终于找到正确姿势
type: item
date: 2026-05-23T10:17:32+08:00
description: 前提：OpenClaw Gateway 部署在 Linux 服务器上，Home 节点跑在 Windows WSL2 Ubuntu 里。背景我的 OpenClaw 架构：Gateway：Linux 服务器（192.168.31.113）Home 节点：Windows 11 + WSL2 Ubuntu（桌面在 F:\Desktop）Work 节点：公司电脑 WSL2需要通过 OpenClaw 远程操作 Home WSL 节点上的文件，读写 Windows 分区的项目代码。踩坑1：exec 看不到 Windows 盘符现象# WSL 终端里一切正常 likefr@DESKTOP-4F1J92R:~$ ls /mnt/f/Desktop/ 01-项目代码 02-压缩包 ... # 但 OpenClaw exec 命令看不到 $ ls /mnt/f/Desktop/ ls: cannot access '/mnt/f/Desktop/': No such file or directory原因OpenClaw 的 exec 命令跑在节点进程的 mount namespace 里。WSL 的 Windows 盘符（C/D/E/F 盘）是通过 drvfs（9p 文件系统）动态挂载的，如果挂载发生在节点进程启动之后，exec 就看不到。验证方法# 在 exec 里检查 mount | grep drvfs # 空！ cat /proc/self/mountinfo | grep 9p # 空！ ls /mnt/f/ # 空 # 在 WSL 终端里检查 mount | grep drvfs # 能看到所有盘符解决方案方案A：/etc/fstab 预挂载（推荐）在 WSL 的 /etc/fstab 里预先声明所有盘符，这样 WSL 启动时就挂好：sudo tee -a /etc/fstab << 'EOF' C: /mnt/c drvfs defaults 0 0 D: /mnt/d drvfs defaults 0 0 E: /mnt/e drvfs defaults 0 0 F: /mnt/f drvfs defaults 0 0 G: /mnt/g drvfs defaults 0 0 H: /mnt/h drvfs defaults 0 0 EOF然后 wsl --shutdown 重启 WSL。方案B：system service + ExecStartPre 挂载把 OpenClaw 节点改成 system 级 service（root 权限），在启动前挂载：# /etc/systemd/system/openclaw-node.service [Service] ExecStartPre=/bin/bash -c 'until [ -d /mnt/c/Users ]; do sleep 1; done' ExecStartPre=/bin/bash -c 'mkdir -p /mnt/f && mount -t drvfs F: /mnt/f 2>/dev/null; true' ExecStartPre=/bin/bash -c 'mkdir -p /mnt/d && mount -t drvfs D: /mnt/d 2>/dev/null; true' ExecStart=/usr/bin/openclaw node run --host YOUR_HOST --port 443 --tls --display-name "Home"⚠️ 注意：普通用户的 user service 没有权限 mount，必须用 system service（root）。踩坑2：WSL cat > 写 Windows 文件为空现象# exec 里 cat > 写文件，看似成功 echo "hello" > /mnt/f/Desktop/test.txt # 但 Windows 侧看到文件 size=0！ # PowerShell 确认 PS> (Get-Item F:\Desktop\test.txt).Length 0原因WSL 的 sh/bash 通过 cat > 写到 /mnt/f/ 或 /mnt/c/ 的文件，Windows 侧看到 size=0。这是 9p 文件系统的缓存问题，在某些 mount namespace 配置下会出现。验证# 用 PowerShell 单引号 here-string 可以写（不解析 ${}） # 但需要 .ps1 文件方式调用解决方案不要用 exec 的 cat/echo 写 Windows 文件！ 用 OpenClaw 的 file_write 工具。踩坑3：exec 路由到了 Gateway 而不是 WS…

WSL Ubuntu + OpenClaw Node 完整部署指南
type: item
date: 2026-05-19T14:04:31+08:00
description: 前置条件Windows 10/11，已启用 WSL2有 OpenClaw Gateway 运行中Gateway token 已获取第一步：卸载旧 Ubuntu（如需重装）在 PowerShell 中执行：wsl --unregister Ubuntu第二步：安装 Ubuntu在 PowerShell 中执行：wsl --install Ubuntu安装完成后设置用户名和密码。第三步：配置镜像网络模式解决 WSL2 无法使用 Windows localhost 代理的问题。在 PowerShell 中执行：Set-Content -Path "$env:USERPROFILE\.wslconfig" -Value "[wsl2]`nnetworkingMode=mirrored`nvmIdleTimeout=-1"networkingMode=mirrored：WSL 与 Windows 共享网络栈，代理直接能用vmIdleTimeout=-1：WSL 不会因空闲自动关闭然后重启 WSL 使配置生效：wsl --shutdown第四步：安装 Node.js在 WSL 中执行：curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install nodejs -y验证：node -v && npm -v⚠️ 包名是 nodejs 不是 node，apt install node 会报错。第五步：安装 OpenClaw在 WSL 中执行：sudo npm install -g openclaw第六步：手动运行并配对在 WSL 中执行：OPENCLAW_GATEWAY_TOKEN=<你的gateway_token> openclaw node run --host <gateway地址> --port 443 --tls --display-name "Work"参数说明：--host：Gateway 地址--port 443：端口--tls：443 端口必须加--display-name：节点显示名称OPENCLAW_GATEWAY_TOKEN：Gateway 认证 token（必须传）确认连接成功后 Ctrl+C 停掉，继续配置自启。第七步：创建 systemd 自启服务7.1 配置 wsl.conf在 WSL 中执行：sudo tee /etc/wsl.conf << 'EOF' [boot] systemd=true [automount] enabled=true options="metadata,umask=22,fmask=11" mountFsTab=true EOF然后在 PowerShell 重启 WSL：wsl --shutdown7.2 创建 service 文件在 WSL 中执行：mkdir -p ~/.config/systemd/user cat > ~/.config/systemd/user/openclaw-node.service << EOF [Unit] Description=OpenClaw Node After=network-online.target Wants=network-online.target [Service] ExecStartPre=/bin/bash -c 'until [ -d /mnt/c/Users ]; do sleep 1; done' ExecStart=/usr/bin/openclaw node run --host <gateway地址> --port 443 --tls --display-name "Work" Environment=OPENCLAW_GATEWAY_TOKEN=<你的gateway_token> Restart=always RestartSec=5 [Install] WantedBy=default.target EOF关键点：ExecStartPre：等待 Windows 盘符挂载完成后再启动，否则 /mnt/c /mnt/d 等路径不可用Restart=always：进程异常退出自动重启7.3 启用并启动服务systemctl --user daemon-reload systemctl --user enable openclaw-node.service systemctl --user start openclaw-node.service7.4 检查状态systemctl --user status openclaw-node.service应该显示 active (running)。第八步：设置 WSL 开机…