12.8. Image Mode for RHEL におけるサードパーティー製ドライバーの統合


ドライバーが更新後も確実に動作するようにするには、サードパーティー製のカーネルモジュールをコンテナーのビルドプロセスに直接含めます。これにより、ネットワークおよびセキュリティードライバーは、イメージの更新、アップグレード、再起動後も引き続き利用可能になります。

デフォルトの RHEL カーネルに含まれていないファイルシステム、ネットワーク、またはセキュリティーモジュールを使用するには、Image Mode for RHEL のワークフローを使用します。従来のパッケージモードでは、dnf を使用して稼働中のシステムにドライバーをインストールしますが、イメージモードではファイルシステムをイミュータブルとして扱います。

カスタムドライバーを含めるには、マルチステージビルドを使用できます。rhel-bootc イメージをビルドステージとして使用し、サードパーティー製のカーネルモジュールをインストールしてソースコードをコンパイルします。これにより、生成されるブート可能なイメージ内のカーネルとドライバーの互換性が保証されます。

前提条件

  • コンテナーのビルド中に depmod を自動的に使用して依存関係のマッピングを処理するために、.ko ファイルを RPM にラップしている。

手順

  1. ビルドホスト上で、ドライバーをコンパイルし、RPM パッケージをビルドします。

    1. 仕様を確認し、パッケージをビルドします。

      $ cat SPECS/hello.spec
    2. ドライバー RPM をビルドします。

      $ rpmbuild -ba SPECS/hello.spec
  2. オペレーティングシステムイメージにドライバーを追加するための Containerfile を作成します。rhel-bootc ベースイメージを使用します。以下に例を示します。

    # Copy the pre-built RPM into the build context
    COPY rpms/hello-<version>-<release>.el10.<arch>.rpm /tmp/

    または、ネットワーク上の場所から取得することもできます。

    # Install the RPM.
    # The %post scripts in the RPM triggers 'depmod' automatically inside the image.
    RUN dnf install -y /tmp/hello-<version>-<release>.el10.<arch>.rpm && \
       	dnf clean all && \
        	rm /tmp/hello-<version>-<release>.el10.<arch>.rpm
  3. コンテナーイメージをビルドして実行します。コンテナーのビルド を参照してください。

検証

  1. システムを再起動します。

    $ sudo reboot
  2. カーネルモジュールがシステム上で利用可能であることを確認します。

    $ sudo uname -r
    <kernel_version>
    
    $ sudo ls -l /lib/modules/<kernel_version>/extra/
    total 12
    -rwxr-xr-x. 1 root root 8512 Jan  1  1970 hello.ko
  3. イメージを確定する前にモジュールの依存関係が計算されていることを確認してください。そうしないと、modprobe が最初の起動時に失敗する可能性があります。

    $ sudo depmod -a <kernel-version>
  4. モジュールをロードできることを確認します。

    $ sudo modprobe /lib/modules/<kernel_version>/extra/hello.ko
    $ sudo lsmod | grep hello
       hello        12288  0
    $ sudo rmmod hello
    $ sudo dmesg
     ..snip..
    [   84.738633] hello: loading out-of-tree module taints kernel.
    [   84.738684] hello: module verification failed: signature and/or required key missing -tainting kernel.
    [   84.740548] Hello, world!
    [  138.206978] Goodbye!
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る