4.9. kmod イメージの作成


Kernel Module Management (KMM) は専用の kmod イメージを使用します。これは .ko ファイルを含む標準 OCI イメージです。.ko ファイルの場所は、<prefix>/lib/modules/[kernel-version]/ というパターンに従っている必要があります。

.ko ファイルを扱うときは、次の点に注意してください。

  • ほとんどの場合、<prefix>/opt と同じになります。これは Module CRD のデフォルト値です。
  • kernel-version は空であってはならず、カーネルモジュールのビルドに使用されたカーネルバージョンと同じである必要があります。

4.9.1. depmod の実行

ビルドプロセスの最後に depmod を実行して、modules.dep ファイルと .map ファイルを生成することを推奨します。これは、kmod イメージに複数のカーネルモジュールが含まれており、モジュールの 1 つが別のモジュールに依存している場合に特に便利です。

注記

kernel-devel パッケージをダウンロードするには、Red Hat Subscription が必要です。

手順

  • 次のコマンドを実行して、特定のカーネルバージョンの modules.dep および .map ファイルを生成します。

    Copy to Clipboard Toggle word wrap
    $ depmod -b /opt ${KERNEL_FULL_VERSION}+`.

4.9.1.1. Dockerfile の例

OpenShift Container Platform でイメージをビルドする場合は、Driver Tool Kit (DTK) の使用を検討してください。

詳細は、資格のあるビルドの使用 を参照してください。

Copy to Clipboard Toggle word wrap
apiVersion: v1
kind: ConfigMap
metadata:
  name: kmm-ci-dockerfile
data:
  dockerfile: |
    ARG DTK_AUTO
    FROM ${DTK_AUTO} as builder
    ARG KERNEL_FULL_VERSION
    WORKDIR /usr/src
    RUN ["git", "clone", "https://github.com/rh-ecosystem-edge/kernel-module-management.git"]
    WORKDIR /usr/src/kernel-module-management/ci/kmm-kmod
    RUN KERNEL_SRC_DIR=/lib/modules/${KERNEL_FULL_VERSION}/build make all
    FROM registry.redhat.io/ubi9/ubi-minimal
    ARG KERNEL_FULL_VERSION
    RUN microdnf install kmod
    COPY --from=builder /usr/src/kernel-module-management/ci/kmm-kmod/kmm_ci_a.ko /opt/lib/modules/${KERNEL_FULL_VERSION}/
    COPY --from=builder /usr/src/kernel-module-management/ci/kmm-kmod/kmm_ci_b.ko /opt/lib/modules/${KERNEL_FULL_VERSION}/
    RUN depmod -b /opt ${KERNEL_FULL_VERSION}

関連情報

4.9.2. クラスターでのビルド

KMM はクラスター内に kmod イメージをビルドできます。次のガイドラインに従ってください。

  • カーネルマッピングの build セクションを使用して build 命令を提供します。
  • コンテナーイメージの DockerfileConfigMap リソースの dockerfile キーの下にコピーします。
  • ConfigMapModule と同じ namespace にあることを確認します。

KMM は、containerImage フィールドで指定されたイメージ名が存在するかどうかを確認します。その場合、ビルドはスキップされます。

それ以外の場合、KMM は Build リソースを作成してイメージをビルドします。イメージがビルドされると、KMM はモジュールの調整を Module します。以下の例を参照してください。

Copy to Clipboard Toggle word wrap
# ...
- regexp: '^.+$'
  containerImage: "some.registry/org/<my_kmod>:${KERNEL_FULL_VERSION}"
  build:
    buildArgs:  
1

      - name: ARG_NAME
        value: <some_value>
    secrets: 
2

      - name: <some_kubernetes_secret> 
3

    baseImageRegistryTLS:
      insecure: false 
4

      insecureSkipTLSVerify: false 
5

    dockerfileConfigMap:  
6

      name: <my_kmod_dockerfile>
  registryTLS:
    insecure: false 
7

    insecureSkipTLSVerify: false 
8
1
任意。
2
任意。
3
/run/secrets/some-kubernetes-secret としてビルド Pod にマウントされます。
4
オプション: このパラメーターは使用しないでください。true に設定すると、ビルドはプレーン HTTP を使用して Dockerfile FROM 命令でイメージをプルできます。
5
オプション: このパラメーターは使用しないでください。true に設定すると、プレーン HTTP を使用して Dockerfile FROM 命令でイメージをプルするときに、ビルドは TLS サーバー証明書の検証をスキップします。
6
必須。
7
オプション: このパラメーターは使用しないでください。true に設定すると、KMM はプレーン HTTP を使用してコンテナーイメージがすでに存在するかどうかを確認できます。
8
オプション: このパラメーターは使用しないでください。true に設定すると、コンテナーイメージがすでに存在するかどうかを確認するときに、KMM は TLS サーバー証明書の検証をスキップします。

Operator 設定で job.gcDelay パラメーターが設定されていない限り、成功したビルド Pod にはすぐにガベージコレクションが適用されます。失敗したビルド Pod は常に保存されるため、ビルドを再開するには管理者が手動で削除する必要があります。

4.9.3. Driver Toolkit の使用

Driver Toolkit (DTK) は、ビルド kmod ローダーイメージをビルドするための便利なベースイメージです。これには、クラスターで現在実行されている OpenShift バージョンのツールとライブラリーが含まれています。

手順

マルチステージの Dockerfile の最初のステージとして DTK を使用します。

  1. カーネルモジュールをビルドします。
  2. .ko ファイルを ubi-minimal などの小さなエンドユーザーイメージにコピーします。
  3. クラスター内ビルドで DTK を利用するには、DTK_AUTO ビルド引数を使用します。この値は、Build リソースの作成時に KMM によって自動的に設定されます。以下の例を参照してください。

    Copy to Clipboard Toggle word wrap
    ARG DTK_AUTO
    FROM ${DTK_AUTO} as builder
    ARG KERNEL_FULL_VERSION
    WORKDIR /usr/src
    RUN ["git", "clone", "https://github.com/rh-ecosystem-edge/kernel-module-management.git"]
    WORKDIR /usr/src/kernel-module-management/ci/kmm-kmod
    RUN KERNEL_SRC_DIR=/lib/modules/${KERNEL_FULL_VERSION}/build make all
    FROM ubi9/ubi-minimal
    ARG KERNEL_FULL_VERSION
    RUN microdnf install kmod
    COPY --from=builder /usr/src/kernel-module-management/ci/kmm-kmod/kmm_ci_a.ko /opt/lib/modules/${KERNEL_FULL_VERSION}/
    COPY --from=builder /usr/src/kernel-module-management/ci/kmm-kmod/kmm_ci_b.ko /opt/lib/modules/${KERNEL_FULL_VERSION}/
    RUN depmod -b /opt ${KERNEL_FULL_VERSION}

関連情報

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.