关于 jetson-headless-mode
面向 Jetson 无头模式的 Skill,根据当前内存审计规划并应用可撤销的用户空间内存优化。默认先执行干运行,获准后才更改系统。
主要功能
- 01根据内存审计生成计划
- 02调整指定的 systemd 目标和守护进程
- 03默认先干运行再应用更改
- 04提供可撤销的命令
适用场景
- 01将 Jetson 配置为无桌面的推理设备
- 02评估无头模式可能释放的内存
- 03应用已批准且可撤销的服务更改
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nvidia/ skills --skill jetson-headless-mode安装后在 Claude Code 中输入/jetson-headless-mode确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.jsonscripts/apply.shplan.sh详细介绍
Jetson 无头模式
先规划、再应用,以安全、可逆的方式回收用户空间内存:将默认的 systemd 目标从 graphical.target 切换为其他目标,并禁用一组精心筛选的非必要守护进程。这是在 Jetson 上收益最高、风险最低的内存优化方式。
用途
根据实时审计数据制定经用户批准的无头模式计划,然后仅应用安全、可逆的用户空间更改,以减少 Jetson 上桌面和守护进程的内存占用。
适用场景
- “尽可能释放内存——我不需要图形界面。”
- “我要把这台 Jetson 作为推理设备 / 边缘节点交付。”
jetson-memory-audit显示default_systemd_target=graphical.target,或显示gdm3/lightdm/sddm处于活动状态,且用户称系统为无头设备。
不适用场景
- 用户需要本地桌面、显示输出、自助服务终端 UI 或任何 X/Wayland 会话。在这种情况下,不要建议禁用图形目标或显示管理器;应使用
jetson-memory-audit进行只读查看,并建议其他非图形界面的内存优化方案。 - 没有当前审计数据。提出更改或估算节省量之前,先运行
jetson-memory-audit,或请用户提供其输出。
以设备实时数据为准。Jetson 系列、SKU/变体、内存总量、活动的显示服务和节省量估算,必须来自 jetson-diagnostic/scripts/detect_jetson.sh、audit.json 或最新一次 jetson-memory-audit 运行。如果没有某项数据,请说明未知,不要猜测。以下节省量为上限;实际差值以更改前后的审计结果为准。
前提条件
- 从当前的
jetson-memory-auditJSON 快照开始。 - 确认用户不需要本地桌面、显示输出、自助服务终端 UI 或 X/Wayland 会话。
- 修改需要
sudo和用户明确批准;除非用户已在同一条提示中批准,否则先执行试运行。 - 在 Jetson 主机上运行,或在能够访问 systemd 状态且主机可见的沙箱中运行。
可用脚本
| 脚本 | 用途 | 参数 |
|---|---|---|
scripts/plan.sh | 读取内存审计 JSON,并生成包含安全、可逆建议的计划。 | --audit PATH 或 --audit -,以及 --human。 |
scripts/apply.sh | 输出或应用计划 JSON 中的安全命令。默认执行试运行。 | --plan PATH 或 --plan -、--apply、--reboot、--drop-caches。 |
如果你的 Agent 运行时支持 run_script,请用它运行 scripts/plan.sh 和 scripts/apply.sh,并概述返回的输出。否则,从代码库根目录使用 bash 运行脚本。
说明
- 运行
scripts/plan.sh,读取audit.json(来自jetson-memory-audit),并生成仅包含safety: safe调节项的计划(目标切换、显示管理器、音频、打印、调制解调器等)。 - 向用户展示计划并征求确认。
- 运行
scripts/apply.sh --plan plan.json执行试运行。重新运行并添加--apply以执行更改。添加--drop-caches可在之后刷新页缓存,或添加--reboot以立即生效。 - 重新运行
jetson-memory-audit/scripts/audit.sh,验证实际差值。
预期工作流
使用脚本进行估算和应用,让建议依据设备当前状态,而非仅依据静态的上限表。
-
对于“headless 模式能节省多少”、“估算”、“规划”或生产规划类提示,运行
scripts/plan.sh --audit <audit.json>,并报告estimated_total_savings_mb、排名靠前的recommendations[*].knob,以及是否有显示管理器或graphical.target处于活动状态。不要运行apply.sh。 -
对于用户明确要求立即应用 headless 模式的提示,先运行一次
scripts/apply.sh --plan <plan.json>进行试运行。如果用户已在同一条提示中批准更改,则使用--apply重新运行相同命令,并说明可逆命令。 -
如果在 Agent 运行时直接执行失败,请使用
bash {baseDir}/scripts/<script-name> ...调用脚本。不要尝试对已安装的技能文件运行chmod。
规划 / 应用约定
plan.sh输出的 JSON 结构与jetson-inference-mem-tune/scripts/recommend.py相同:一个包含recommendations的数组,其中每项包含{layer, knob, estimated_savings_mb, safety, command, reversible_command, rationale}。apply.sh会筛选safety == "safe"且command非空的条目,然后在 shell 循环中再次检查筛选后的安全标记再执行。其他任何操作,例如内核命令行更改、设备树更改或精度权衡,都不在此技能的范围内。- 默认模式为试运行。只有指定
--apply才会更改系统。
涵盖的调节项
| 调节项 | 操作 | 预计节省量 | 可逆? |
|---|---|---|---|
disable-graphical-target | systemctl set-default multi-user.target | 最多 865 MB | 是 |
stop-gdm3 / gdm / lightdm / sddm / display-manager | systemctl disable --now <svc> | 每个服务约 200 MB | 是 |
stop-pulseaudio | 禁用音频守护进程 | 约 8 MB | 是 |
stop-bluetooth | 禁用 Bluetooth 协议栈 | 约 6 MB | 是 |
stop-ModemManager | 禁用 WWAN 管理器 | 约 4 MB | 是 |
stop-cups / stop-cups-browsed | 禁用打印服务栈 | 约 5 / 约 3 MB | 是 |
stop-snapd | 禁用 Snap 守护进程 | 约 30 MB | 是 |
stop-whoopsie / kerneloops | 禁用崩溃报告程序 | 约 4 / 约 2 MB | 是 |
stop-avahi-daemon | 禁用 mDNS | 约 3 MB | 是 |
stop-unattended-upgrades / packagekit | 禁用后台软件包操作 | 约 6 / 约 8 MB | 是 |
请勿禁用以下服务
nvargus-daemon— 所有 libargus 摄像头管线都需要此服务。nvgetty.service— 串行控制台;禁用后可能导致无法进入恢复环境。nvpmodel— 电源模式服务;时钟和电源调节需要此服务。containerd/docker— 如果你运行容器,请保持启用(大多数推理工作负载都会运行容器)。nvfb/nvdisplay相关内核服务 — 与启动时的显示配置相关,因此此技能不会更改这些服务。
安全性
- 不会编辑
/boot/extlinux/extlinux.conf、设备树或启动时的内存预留。 - 不会禁用没有明确条目的服务(不会笼统地“禁用所有未列入允许列表的服务”)。
- 每项已应用的更改都有对应的
reversible_command文档。使用还原命令重新运行规划即可恢复。 - 默认进行试运行。只有
--apply才会更改系统。 - 仅报告来自实时检测或审计输出的设备信息和节省量。
跨平台行为
上述矩阵中的每个 Jetson 系列都适用同一组参数。脚本从 jetson-diagnostic/scripts/detect_jetson.sh 读取 JETSON_GENERATION / JETSON_PRODUCT_LINE / JETSON_VARIANT(并继续导出旧版 JETSON_SKU),以便 Agent 在摘要中正确归因节省的资源,但不会根据产品线进行分支处理。