mcpField
J
jetson-headless-mode

jetson-headless-mode

github.com/nvidia云与 DevOps3.8k1.2k 次安装今天更新
代码仓库

关于 jetson-headless-mode

面向 Jetson 无头模式的 Skill,根据当前内存审计规划并应用可撤销的用户空间内存优化。默认先执行干运行,获准后才更改系统。

主要功能

  1. 01根据内存审计生成计划
  2. 02调整指定的 systemd 目标和守护进程
  3. 03默认先干运行再应用更改
  4. 04提供可撤销的命令

适用场景

  1. 01将 Jetson 配置为无桌面的推理设备
  2. 02评估无头模式可能释放的内存
  3. 03应用已批准且可撤销的服务更改

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nvidia/skills --skill jetson-headless-mode

安装后在 Claude Code 中输入/jetson-headless-mode确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
scripts/
apply.sh
plan.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-audit JSON 快照开始。
  • 确认用户不需要本地桌面、显示输出、自助服务终端 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 运行脚本。

说明

  1. 运行 scripts/plan.sh,读取 audit.json(来自 jetson-memory-audit),并生成仅包含 safety: safe 调节项的计划(目标切换、显示管理器、音频、打印、调制解调器等)。
  2. 向用户展示计划并征求确认。
  3. 运行 scripts/apply.sh --plan plan.json 执行试运行。重新运行并添加 --apply 以执行更改。添加 --drop-caches 可在之后刷新页缓存,或添加 --reboot 以立即生效。
  4. 重新运行 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-targetsystemctl set-default multi-user.target最多 865 MB是
stop-gdm3 / gdm / lightdm / sddm / display-managersystemctl 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 在摘要中正确归因节省的资源,但不会根据产品线进行分支处理。

评论

支持 Markdown