mcpField
J
jetson-init-image

jetson-init-image

github.com/nvidiaクラウド・DevOps3.8k1.1k 回インストール今日更新
リポジトリ

jetson-init-image について

jetson-init-imageはJetson BSPイメージを準備するスキルです。ターゲットのセットアップを行うユーザー向けに、プラットフォームからGPUスタックを判定し、ローカルのtarballを再利用または展開して、イメージのバージョンとパスをアクティブプロファイルに記録します。

主な機能

  1. 01アクティブなターゲットプロファイルとイメージパスの解決
  2. 02チップ系列に基づくGPUスタックの判定
  3. 03既存BSPの再利用または一致するtarballの展開
  4. 04apply_binaries.shの実行
  5. 05プロファイルへのBSPバージョンとパスの記録

活用シーン

  1. 01新しいターゲットプロファイル用のBSPイメージ準備
  2. 02後続スキルに必要なLinux_for_Tegraの用意
  3. 03既存イメージのGPUスタック確認とバージョン記録

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nvidia/skills --skill jetson-init-image

インストール後、Claude Code で/jetson-init-imageを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json

詳細

BSP イメージを初期化する

アクティブなプロファイルに出力するのは bsp_image: のみです。派生した version に加えて、<workspace>/Image を上書きする場合に限り root_path を出力します。

実行するタイミング

  • ユーザーが BSP イメージの抽出、準備、または初期化を依頼した場合。
  • 下流のスキルから <bsp_image.root_path>/Linux_for_Tegra/ が見つからないと報告された場合。
  • アクティブなプロファイルにまだ bsp_image: ブロックがない場合。

手順

対象とイメージパスを解決する

../../context/target-platform-contract.md に従ってアクティブなプロファイルを解決します。アクティブなプロファイルがない場合、または reference_devkit: がない場合は拒否します。

<workspace> は、アクティブなプロファイルの target-platform/ ディレクトリの親ディレクトリです。<bsp_image.root_path> のデフォルトは <workspace>/Image です。

プロファイルの状態操作
bsp_image.root_path が存在する確認を求めずにそれを使用します。
root_path を含まない bsp_image: が存在する<workspace>/Image を使用します。
bsp_image: ブロックがない1 回だけ確認します。デフォルトを使う場合は Enter キーを押し、上書きする場合は絶対パスを入力します。

上書きする場合は、最も近い既存の親ディレクトリが書き込み可能か確認します。デフォルトを使用する場合は root_path を省略します。

GPU スタックを特定する

../../context/target-platform-contract.md の共有 GPU ドライバー不変条件を使用します。reference_devkit.module.id とカタログから想定されるスタックを導出します。

チップファミリーモジュール IDスタックapply_binaries.sh フラグ
T234 / Orinp3701, p3767nvgpuなし
T264 以降 / Thor+p3834OpenRM--openrm

不明なモジュール ID の場合は拒否します。--openrm フラグは、OpenRM スタックが同梱されている BSP リリースでのみ有効です。アクティブな BSP でこのフラグが公開されていない場合は、ターゲットの指定にかかわらず省略します。

再利用または抽出する

<bsp_image.root_path>/Linux_for_Tegra/ がすでに存在する場合:

  1. ユーザーが再抽出を明示的に依頼し、上書きのリスクを了承しない限り、その上に抽出しないでください。

  2. Linux_for_Tegra/nv_tegra_release からディスク上のバージョンを導出します。記録されている bsp_image.version と異なる場合は、置き換える前に確認します。

  3. 可能な場合は、インストール済み GPU スタックがプラットフォームから導出した想定と一致することを確認します。検出の優先順位は次のとおりです(確定的な結果が得られた最初のプローブを採用します)。

    1. Linux_for_Tegra/rootfs/etc/nv_tegra_release に INSTALL_TYPE= トークンが含まれている場合(新しい系列の BSP リリースで提供されます)、それを読み取って直接比較します。
    2. それ以外の場合は、find Linux_for_Tegra -name nvgpu.ko を実行します。存在する場合は nvgpu、存在しない場合は OpenRM です。
    3. チップファミリーでこれまで常に 1 種類のスタックのみが提供されている場合(例:現行の BSP では T234 / Orin は常に nvgpu)、ディスクを調べずにカタログから導出した想定を使用します。

インストール済みのスタックがアクティブなターゲットと一致しない場合は拒否し、正しいスタックで再抽出するか、ターゲットプロファイルを修正するようユーザーに求めます。それ以外の場合は抽出を省略し、プロファイルを更新します。

tarball の場所を特定する

抽出が必要な場合は、次の場所を検索します。

  1. <bsp_image.root_path>/
  2. <workspace>/
  3. 現在の作業ディレクトリ

見つからないファイルについては、絶対パスを指定するよう求めます。必要なファイル名は次のとおりです。

  • Jetson_Linux_R<ver>_aarch64.tbz2
  • Tegra_Linux_Sample-Root-Filesystem_R<ver>_aarch64.tbz2

両方のファイル名に同じ R<ver> トークンが含まれている必要があります。一致しない場合は拒否し、<ver> を bsp_image.version として記録します。tarball はダウンロードしないでください。

バイナリを抽出して適用する

tarball の絶対パスを使用します。tarball は <bsp_image.root_path> の外にあってもかまいません。

ROOT="<bsp_image.root_path>"
BSP_TARBALL="<absolute path to Jetson_Linux_R<ver>_aarch64.tbz2>"
ROOTFS_TARBALL="<absolute path to Tegra_Linux_Sample-Root-Filesystem_R<ver>_aarch64.tbz2>"

mkdir -p "$ROOT"
tar xjf "$BSP_TARBALL" -C "$ROOT"
sudo tar xpjf "$ROOTFS_TARBALL" -C "$ROOT/Linux_for_Tegra/rootfs"

cd "$ROOT/Linux_for_Tegra"
if [ "$GPU_STACK" = "openrm" ]; then
  sudo ./apply_binaries.sh --openrm
else
  sudo ./apply_binaries.sh
fi

上記の「GPU スタックを特定する」手順から GPU_STACK を設定します。最初に失敗したコマンドで処理を中止し、失敗したコマンドを提示します。

アクティブなプロファイルを更新する

解決済みの BSP イメージメタデータをアクティブなターゲットプロファイルに保存し、 後続のスキルが再度プロンプトを表示せずに BSP を見つけられるようにします。既存の ブロック、コメント、引用符で囲まれた SKU 値を保持し、ruamel.yaml のような ラウンドトリップ対応の YAML ライターを使用してください。

bsp_image:
  root_path: <absolute override path>  # omit for <workspace>/Image
  version: "<derived version>"

ルール:

  • バージョンとルートパスが同じ場合:書き換えません。
  • バージョンが異なる場合:更新前に確認します。
  • 記録済みの root_path が異なる場合:自動書き換えを拒否します。
  • version は必ず引用符で囲みます。

完了

イメージのパス、抽出済みか再利用かの状態、GPU スタック、派生したバージョン、 プロファイルの更新状況を報告します。その後、/jetson-init-source を提案します。

目的

適切な Jetson Linux と sample-rootfs の tarball を展開し、アクティブなターゲットから 導出した GPU スタックのフラグ(T234 では nvgpu、T264+ では OpenRM)を指定して apply_binaries.sh を実行することで、Linux_for_Tegra/ をディスク上に作成します。 その後、導出した BSP バージョンをプロファイルの bsp_image: ブロックに記録します。

前提条件

  • ../../context/target-platform-contract.md に従ってアクティブなターゲットプロファイルが解決されていること。
  • Jetson Linux BSP tarball と対応する sample-rootfs tarball がディスク上に用意されていること (例:/jetson-download-bsp による取得、または手動配置)。
  • ワークスペースの Image/ ルート(またはオーバーライド先の bsp_image.root_path)への書き込み権限があること。
  • apply_binaries.sh 用に sudo を使用できること。

制限事項

  • bsp_image: ブロックのみを書き込みます。ソースツリー、ドキュメント、キャリア プロファイルは、関連する別のスキルが管理します。
  • 既存の Linux_for_Tegra/ を、ユーザーから明示的な指示がない限り上書きしません。
  • tarball はダウンロードしません。/jetson-download-bsp を利用するか、 入力ファイルを手動で配置してください。

トラブルシューティング

  • apply_binaries.sh がゼロ以外の終了コードで終了する — コンソール出力を 再確認してください。多くの場合、sudo がない、rootfs tarball がない、または SoC 世代に適した GPU スタックのフラグが指定されていないことが原因です。
  • 展開後に nv_tegra_release が見つからない — 展開が途中で停止しています。 tarball の整合性を確認してから、再実行してください。
  • 記録済みの version が tarball のファイル名と一致しない — tarball の名前が 変更されています。ファイル名ではなく、Linux_for_Tegra/nv_tegra_release から 解析した値を信頼してください。
  • プロファイルに記録済みの root_path が異なる — 上書き前にユーザーに確認し、 許可が得られるまで拒否してください。

参考資料

コメント