# Vmsw

> Run modern Linux software tools and general command-line workloads on the Ubuntu 24.04 `vmsw` virtual machine. Use for compilers, build systems, Python, Git, tests, automation, data processing, and open-source HDL tools; use `vmhw` when commercial or licensed hardware EDA environments are needed.

- Skill: `mhliulgy/vmsw` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mhliulgy/vmsw`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mhliulgy/vmsw/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: mhliulgy (https://skillmd.com/u/mhliulgy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mhliulgy/vmsw

---


# Software VM

使用 `ssh vmsw` 完成需要现代 Linux 软件环境的工作。它补足 `vmhw` 的旧系统限制，但不替代商业 EDA 主机，也不应被用于本地即可可靠完成的普通文件操作。

## 固定环境

| 项目 | 信息 |
| :--- | :--- |
| SSH 别名 | `vmsw` |
| 系统 | Ubuntu 24.04 LTS，x86_64 |
| 用户与主目录 | `mhliulgy`，`/home/mhliulgy` |
| 权威工作区 | Windows：`D:\develop\Virtual Machines\Project`；VM：`/mnt/hgfs/Project` |
| VM 本地备用区 | `~/temp/` |
| 共享临时目录 | `/mnt/hgfs/Project/temp` |

已验证可用的命令包括 GCC/G++、Clang、CMake、Make、Python 3/pip、Git、Icarus Verilog 和 Verilator。工具安装和版本会变化；实际执行前使用 `command -v` 和版本命令验证任务所需能力。

## 主机路由

- 编译、构建、测试、脚本、Python 环境、Git、文本或数据处理及其他现代 Linux CLI 工作使用 `vmsw`。
- Icarus Verilog、Verilator 等开源硬件辅助工具可在 `vmsw` 使用；商业 EDA、许可证环境和实验室既有 EDA 版本使用 `vmhw`。
- 混合任务在 `vmsw` 做软件侧准备，在 `vmhw` 执行专用 EDA 阶段，通过共享 `Project` 交接。
- 不要静默用开源或新版工具替代 `vmhw` 中的商业/旧版 EDA 流程；不同实现和版本可能改变结果。
- 两台 VM 不要同时写同一构建目录。按主机或工具使用独立输出目录，例如 `build-vmsw/` 与 `run-vmhw/`。

## 工作区规则

共享路径映射为：

```text
D:\develop\Virtual Machines\Project\<relative_project_path>
                              ↕
/mnt/hgfs/Project/<relative_project_path>
```

共享 `Project` 是权威工作区。文件搜索、查看和编辑优先在 Windows 侧完成；只有任务需要 Linux 行为、工具或依赖时才进入 `vmsw`。VM 生成的成果应落回相同相对路径下的项目目录。

开始执行前先验证连接、目录和所需工具：

```powershell
ssh -o BatchMode=yes vmsw "whoami; hostname; test -r /mnt/hgfs/Project/<relative_project_path>"
ssh -o BatchMode=yes vmsw "bash -lc 'cd /mnt/hgfs/Project/<relative_project_path> && command -v <command> && <command> <arguments>'"
```

项目若提供自己的环境入口、虚拟环境或容器配置，应优先按项目约定加载。不要假定交互式 Shell 的别名或初始化脚本在非交互 SSH 中可用。

## 依赖与系统操作

- 先检查现有工具和项目锁文件，不因调用本 Skill 自动执行 `sudo`、`apt install`、全局 `pip install` 或系统服务修改。
- Python 项目优先使用项目已有虚拟环境；新建环境时放在项目约定位置，并避免把 VM 专属二进制环境误当作跨平台成果。
- 安装依赖、升级工具链、修改系统配置或启停系统服务前，确认任务确实需要且已获得相应授权。
- 使用 Ubuntu 24.04 的 `systemctl`、现代编译器或新版工具时，仍需检查项目是否要求其他版本。

## 长任务与观察

长任务关闭标准输入并写入任务专属日志：

```powershell
ssh vmsw "bash -lc 'cd /mnt/hgfs/Project/<relative_project_path> && nohup <command> > run.log 2>&1 < /dev/null &'"
ssh vmsw "pgrep -af '<process-pattern>'; tail -n 60 /mnt/hgfs/Project/<relative_project_path>/run.log"
```

根据退出状态、测试结果、预期产物和日志共同判断成功。不要仅凭进程结束或单个输出文件存在下结论。

## 共享挂载的例外

如果工具确实依赖 Linux 原生权限、符号链接、文件锁或更高 I/O 性能，可暂存在 VM 本地：

```powershell
ssh vmsw "mkdir -p ~/temp/<project_name>; cp -a /mnt/hgfs/Project/<relative_project_path>/. ~/temp/<project_name>/"
```

完成后将需要保留的源码修改、报告和产物写回共享项目。只有共享挂载不可用时才使用 SCP：

```powershell
scp <local_file> vmsw:~/temp/<project_name>/
scp vmsw:~/temp/<project_name>/<remote_file> .
```

## 图形程序与安全

默认使用无头命令。只有用户明确要求图形界面时，才检查远端桌面或使用 `ssh -X vmsw <gui-command>`；X11 转发要求 Windows 本机已有 X Server。

- `Could not resolve hostname vmsw` 若只出现在受限执行环境，应按权限机制重试，不擅自修改用户的 SSH 配置。
- 默认先做只读探测。删除或覆盖成果、终止非本任务进程及修改系统级状态前，必须确认目标和授权。
- 除非用户明确要求，不清理共享工作区或 VM 本地目录。


