TT Lab
はじめる
学ぶ 学習パス コース

閉域網へのGPUドライバ搬入と導入

検証とロールバック

TT Labで続きを見る

目標

持ち込み物の完全性を検証して、改ざんを検出し、バージョンを固定して、実際にロールバックまで行います。

なぜ重要なのか

エアギャップ環境では、ロールバック経路のない変更は行いません。何かを削除したのに、もう一度取得するには、持ち込み審査をまた通す必要があり、それが数日です。そのため、作業手続きの半分は、「何を変えたかを記録して、どう元に戻すかをあらかじめ決めること」です。

そして、検証は、層を順番に行う必要があります。最終確認だけを試して失敗すると、どの層が問題なのかわかりません。カーネル → ユーザー空間 → コンテナへの注入 → 実際の実行の順に上がっていけば、失敗した場所が、そのまま原因です。

ステップ

  1. /root/gpu/poolの中のすべての.debに対する、SHA-256マニフェストを/root/gpu/manifest.sha256として作成して、検証を行い、結果を/root/gpu/verify-ok.txtに保存してください。すべての行が、正常である必要があります。
  2. /root/gpu/tamper/ディレクトリを作成して、.debを1つコピーしたあと、コピーを改ざんして、そのコピーに対する検証が失敗することを確認し、出力を/root/gpu/verify-fail.txtに保存してください。元のpoolは、そのままである必要があります。
  3. インストールされたnvidia-container-toolkitのファイルの完全性を確認して、結果を/root/gpu/dpkg-verify.txtに保存してください。
  4. /root/gpu/verify-plan.txtを、次の4行で作成してください。実際のGPUがある環境での、検証の順序です。 L1=lsmod / L2=nvidia-smi / L3=nvidia-ctk / L4=podman-run
  5. nvidia-driver-550とnvidia-container-toolkitを、アップグレードの対象から外して、固定の一覧を/root/gpu/holds.txtに保存してください。2つのパッケージが、両方見える必要があります。
  6. aptのインストールトランザクションの記録から、今回のインストールに関連する部分を/root/gpu/history.txtに保存してください。nvidiaという文字列が、含まれている必要があります。
  7. nvidia-container-toolkitを、設定ファイルまで完全に削除(ロールバック)して、削除後の状態を/root/gpu/after-rollback.txtに保存してください。そのパッケージが、インストール状態ではなく、nvidia-driver-550は、今もインストール状態である必要があります。
  8. /root/gpu/final-report.txtを、次の6行で作成してください。 BUNDLE_VERIFY=OK / TAMPER_DETECTED=yes / HELD=2 / DRIVER_STILL=installed / TOOLKIT_NOW=removed / SNAPSHOT=<오늘 날짜 YYYY-MM-DD>(プレースホルダーは今日の日付YYYY-MM-DDです)

参考

完全性マニフェストを生成する

/root/gpu/poolの中のすべての.debに対する、SHA-256マニフェストを/root/gpu/manifest.sha256として作成して、検証を行い、結果を/root/gpu/verify-ok.txtに保存してください。すべての行が、正常である必要があります。

pool内のすべての.debについて、チェックサムを作成します。検証の便宜のために、相対パスで作成してください。

改ざんの検出を再現する

/root/gpu/tamper/ディレクトリを作成して、.debを1つコピーしたあと、コピーを改ざんして、そのコピーに対する検証が失敗することを確認し、出力を/root/gpu/verify-fail.txtに保存してください。元のpoolは、そのままである必要があります。

元ではなく、コピーを改ざんしてください。検証コマンドの失敗の出力を、そのまま保存します。

インストールされたファイルの完全性を確認する

インストールされたnvidia-container-toolkitのファイルの完全性を確認して、結果を/root/gpu/dpkg-verify.txtに保存してください。

dpkgには、インストール時点のハッシュと、現在のファイルを比較するオプションがあります。出力が空なら、正常です。

検証計画の文書

/root/gpu/verify-plan.txtを、次の4行で作成してください。実際のGPUがある環境での、検証の順序です。 L1=lsmod / L2=nvidia-smi / L3=nvidia-ctk / L4=podman-run

層を順番に並べます。各層で何を確認するかを、キー=値で書いてください。

バージョンを固定する

nvidia-driver-550とnvidia-container-toolkitを、アップグレードの対象から外して、固定の一覧を/root/gpu/holds.txtに保存してください。2つのパッケージが、両方見える必要があります。

ドライバーとツールキットを、両方固定します。固定の一覧を照会して、確認してください。

インストールトランザクションを確認する

aptのインストールトランザクションの記録から、今回のインストールに関連する部分を/root/gpu/history.txtに保存してください。nvidiaという文字列が、含まれている必要があります。

aptの履歴ログに、各トランザクションの時刻とコマンドラインが残ります。

ロールバックを実行する

nvidia-container-toolkitを、設定ファイルまで完全に削除(ロールバック)して、削除後の状態を/root/gpu/after-rollback.txtに保存してください。そのパッケージが、インストール状態ではなく、nvidia-driver-550は、今もインストール状態である必要があります。

ツールキットだけを元に戻します。設定ファイルまで削除するオプションを使い、固定が掛かっていれば、先に解除する必要があります。

持ち込み・インストール・検証・ロールバックのレポート

/root/gpu/final-report.txtを、次の6行で作成してください。 BUNDLE_VERIFY=OK / TAMPER_DETECTED=yes / HELD=2 / DRIVER_STILL=installed / TOOLKIT_NOW=removed / SNAPSHOT=<오늘 날짜 YYYY-MM-DD>(プレースホルダーは今日の日付YYYY-MM-DDです)

全過程の結果を集めます。値は、実際に確認したものである必要があります。