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/。
工作区规则
共享路径映射为:
D:\develop\Virtual Machines\Project\<relative_project_path>
↕
/mnt/hgfs/Project/<relative_project_path>
共享 Project 是权威工作区。文件搜索、查看和编辑优先在 Windows 侧完成;只有任务需要 Linux 行为、工具或依赖时才进入 vmsw。VM 生成的成果应落回相同相对路径下的项目目录。
开始执行前先验证连接、目录和所需工具:
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、现代编译器或新版工具时,仍需检查项目是否要求其他版本。
长任务与观察
长任务关闭标准输入并写入任务专属日志:
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 本地:
ssh vmsw "mkdir -p ~/temp/<project_name>; cp -a /mnt/hgfs/Project/<relative_project_path>/. ~/temp/<project_name>/"
完成后将需要保留的源码修改、报告和产物写回共享项目。只有共享挂载不可用时才使用 SCP:
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 本地目录。