This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.2.2. カーネルモジュールのノードへの追加
大半の一般的なハードウェアの場合、Linux カーネルには、コンピューターの起動時にそのハードウェアを使用するために必要となるデバイスドライバーモジュールが含まれます。ただし、一部のハードウェアの場合、Linux でモジュールを利用できません。したがって、各ホストコンピューターにこれらのモジュールを提供する方法を確保する必要があります。この手順では、OpenShift Container Platform クラスターのノードについてこれを実行する方法を説明します。
この手順に従ってカーネルモジュールを最初にデプロイする際、モジュールは現行のカーネルに対して利用可能になります。新規カーネルがインストールされると、kmods-via-containers ソフトウェアはモジュールを再ビルドし、デプロイしてそのモジュールの新規カーネルと互換性のあるバージョンが利用可能になるようにします。
この機能によって各ノードでモジュールが最新の状態に保てるようにするために、以下が実行されます。
- 新規カーネルがインストールされているかどうかを検出するために、システムの起動時に起動する各ノードに systemd サービスを追加します。
- 新規カーネルが検出されると、サービスはモジュールを再ビルドし、これをカーネルにインストールします。
この手順に必要なソフトウェアの詳細については、kmods-via-containers github サイトを参照してください。
以下の重要な点に留意してください。
- この手順はテクノロジープレビューです。
-
ソフトウェアのツールおよびサンプルは公式の RPM 形式で利用できず、現時点ではこの手順に記載されている非公式の
github.com
サイトからしか取得できません。 - この手順で追加する必要がある可能性のあるサードパーティーのカーネルモジュールについては Red Hat はサポートしません。
-
この手順では、カーネルモジュールのビルドに必要なソフトウェアは RHEL 8 コンテナーにデプロイされます。モジュールは、ノードが新規カーネルを取得する際に各ノードで自動的に再ビルドされることに注意してください。このため、各ノードには、モジュールの再ビルドに必要なカーネルと関連パッケージを含む
yum
リポジトリーへのアクセスが必要です。このコンテンツは、有効な RHEL サブスクリプションを使用して効果的に利用できます。
3.2.2.1. カーネルモジュールコンテナーのビルドおよびテスト リンクのコピーリンクがクリップボードにコピーされました!
カーネルモジュールを OpenShift Container Platform クラスターにデプロイする前に、プロセスを別の RHEL システムでテストできます。カーネルモジュールのソースコード、KVC フレームワーク、および kmod-via-containers ソフトウェアを収集します。次にモジュールをビルドし、テストします。RHEL 8 システムでこれを行うには、以下を実行します。
手順
RHEL 8 システムを取得して、これを登録し、サブスクライブします。
subscription-manager register subscription-manager attach --auto
# subscription-manager register Username: yourname Password: *************** # subscription-manager attach --auto
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソフトウェアとコンテナーのビルドに必要なソフトウェアをインストールします。
yum install podman make git -y
# yum install podman make git -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kmod-via-containers リポジトリーのクローンを作成します。
mkdir kmods; cd kmods git clone https://github.com/kmods-via-containers/kmods-via-containers
$ mkdir kmods; cd kmods $ git clone https://github.com/kmods-via-containers/kmods-via-containers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8 ビルドホストに KVC フレームワークインスタンスをインストールし、モジュールをテストします。これにより kmods-via-container systemd サービスが追加され、ロードされます。
cd kmods-via-containers/ sudo make install sudo systemctl daemon-reload
$ cd kmods-via-containers/ $ sudo make install $ sudo systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルモジュールのソースコードを取得します。ソースコードは、制御下になく、他から提供されるサードパーティーモジュールをビルドするために使用される可能性があります。システムに対してクローン作成できる以下の
kvc-simple-kmod
サンプルのコンテンツと同様のコンテンツが必要になります。cd .. git clone https://github.com/kmods-via-containers/kvc-simple-kmod
$ cd .. $ git clone https://github.com/kmods-via-containers/kvc-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、設定ファイル
simple-kmod.conf
を編集し、Dockerfile の名前をDockerfile.rhel
に変更し、ファイルが以下のように表示されるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例ではカーネルモジュール
simple-kmod
のkmods-via-containers@.service
のインスタンスを作成し、これを有効にします。sudo make install sudo kmods-via-containers build simple-kmod $(uname -r)
$ sudo make install $ sudo kmods-via-containers build simple-kmod $(uname -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd サービスを有効にしてから起動し、ステータスを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルモジュールがロードされていることを確認するには、
lsmod
コマンドを使用してモジュールを一覧表示します。lsmod | grep simple_
$ lsmod | grep simple_ simple_procfs_kmod 16384 0 simple_kmod 16384 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow simple-kmod のサンプルでは、それが機能するかどうかをテストする他のいくつかの方法も使用できます。
dmesg
を使ってカーネルリングバッファーで Hello world メッセージを探します。dmesg | grep 'Hello world'
$ dmesg | grep 'Hello world' [ 6420.761332] Hello world from simple_kmod.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /proc
でsimple-procfs-kmod
の値を確認します。sudo cat /proc/simple-procfs-kmod simple-procfs-kmod number = 0
$ sudo cat /proc/simple-procfs-kmod simple-procfs-kmod number = 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spkut コマンドを実行して、モジュールの詳細情報を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
その後は、システムの起動時に、このサービスは新規カーネルが実行中であるかどうかをチェックします。新規カーネルがある場合は、サービスは新規バージョンのカーネルモジュールをビルドし、これをロードします。モジュールがすでにビルドされている場合は、これをロードします。