GPUアクセラレーションインスタンス用にAlibaba Cloud Linux、Red Hat、CentOS、Ubuntuなどのオペレーティングシステムのカーネルを更新すると、カーネルのカーネルアプリケーションバイナリインターフェイス (kABI) が異なる場合があります。 その結果、ソースカーネルに基づいて構築されたTeslaドライバを新しいカーネルにロードすることはできません。 この問題を解決するには、カーネルの更新後にカーネルのカーネルアプリケーションプログラミングインターフェイス (kAPI) が変更されたかどうかに基づいて、さまざまなソリューションを選択します。
問題の説明
GPU高速化インスタンスのオペレーティングシステムカーネルを更新すると、GPU (Tesla) ドライバーを新しいカーネルにロードすることはできません。 つまり、ソースカーネルのNVIDIAカーネルオブジェクト (KO) を新しいカーネルにロードすることはできません。 その結果、ドライバーは期待どおりに仕事をすることができません。 次の図に、サンプルのエラーメッセージを示します。
発生原因
更新前のカーネルのkABIと更新後のカーネルのkABIが異なります。
NVIDIA GPU (Tesla) ドライバのデフォルトのKOインストールディレクトリは
/lib/modules/(uname-r)/extra
ではありません。 カーネルパッケージをインストールするためのソフトリンクは作成できません。
ソリューション
上記の原因とカーネルへのkAPIの影響に基づいて、次のいずれかのソリューションを選択します。
カーネルの更新後にカーネルのkAPIが影響を受けない場合は、Dedicated Key Management Service (DKMS) を使用してNVIDIA GPU (Tesla) ドライバーを自動的に構築します。
カーネルの更新後にカーネルのkAPIが変更され、DKMSを使用してNVIDIA GPU (Tesla) ドライバーを自動的にビルドできない場合は、NVIDIA GPU (Tesla) ドライバーを再インストールする必要があります。
DKMSを使用したNVIDIA GPUの自動構築 (テスラ) ドライバー
NVIDIA GPU (Tesla) ドライバにDKMSをインストールします。
GPU高速化インスタンスに接続します。
この例では、Alibaba Cloud Linux 3オペレーティングシステムを実行するgn7iインスタンスが使用されています。 詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
GPU高速化インスタンスにDKMSをインストールします。
sudo yum install dkms
NVIDIA GPU (Tesla) ドライバをインストールします。
詳細については、「GPUアクセラレーションコンピューティング最適化LinuxインスタンスへのTeslaドライバーの手動インストール」をご参照ください。
インストール中に、次の項目に注意してください。
次のメッセージが表示され、カーネルモジュールのソースコードをDKMSに登録するかどうかを確認したら、[はい] を選択します。
[はい] を選択すると、次の図に示すように、NVIDIA GPUが登録失敗メッセージを報告する場合があります。 メッセージを無視して [OK] をクリックします。
ビジネス要件に基づいて、32ビットNVIDIA互換ライブラリをインストールするかどうかを決定します。
次のコマンドを実行して、DKMSのステータスを確認します。
sudo dkms status
次の図に示すようなコマンド出力が返された場合は, DKMSがインストールされます。
ls
コマンドを実行して、NVIDIA GPU (Tesla) ドライバーファイルが/usr/src/nvidia-${NVIDIA driver version}
ディレクトリに存在するかどうかを確認します。この例では、
nvidia-${NVIDIA driver version}
はnvidia-470.141.03
に設定されています。 バージョンを実際のドライバーバージョンに置き換えます。説明デフォルトでは、NVIDIA GPU (Tesla) ドライバーは、関連するコードまたはファイルを
/usr/src/nvidia-${NVIDIA driver version}
ディレクトリに格納します。 これにより、カーネルの更新後、DKMSはドライバカーネルモジュールを自動的に再コンパイルしてインストールできます。
新しいカーネルをインストールすると、DKMSが自動的にNVIDIA GPU (Tesla) ドライバーを構築します。
この例では、カーネルバージョンは
5.10.134-15.al8
に設定されています。 ビジネス要件に基づいて、バージョンを実際のカーネルバージョンに置き換えます。重要kernel-develパッケージとkernelまたはkernel-coreパッケージを順番にインストールすることを推奨します。 それ以外の場合、DKMSはNVIDIA GPU (Tesla) ドライバーを自動的にビルドしません。 カーネルまたはカーネルコアパッケージはDKMS操作をトリガーし、NVIDIA GPU (Tesla) ドライバーをビルドするにはカーネル-develパッケージが必要です。 この場合、DKMSを手動でトリガーしてNVIDIA GPU (Tesla) ドライバーをビルドする必要があります。 詳細については、このトピックの「手順3」をご参照ください。
次のコマンドを実行して、新しいカーネルのkernel-develパッケージをインストールします。
sudo rpm -ivh kernel-devel-5.10.134-15.al8.x86_64.rpm --force
カーネルまたはカーネルコアパッケージをインストールします。
この例では、カーネルパッケージがインストールされています。 Alibaba Cloud Linux 3オペレーティングシステムの場合、カーネルコアパッケージをインストールし、
sudo rpm -ivh kernel-core-5.10.134-15.al8.x86_64.rpm -- force
コマンドを実行する必要があります。sudo rpm -ivh kernel-5.10.134-15.al8.x86_64.rpm --force
次のコマンドを実行して、新しいカーネル用にNVIDIA GPU (Tesla) ドライバがビルドされているかどうかを確認します。
find /lib/modules/5.10.134-15.al8.x86_64/ -name *nvidia*
sudo dkms status
コマンドを実行して、DKMS情報に新しいカーネルバージョン番号が含まれているかどうかを確認します。
(条件付きで必要) カーネルまたはカーネルコアパッケージをインストールしてからkernel-develパッケージをインストールする場合は、DKMSを手動でトリガーしてNVIDIA GPU (Tesla) ドライバーをビルドする必要があります。
次のコマンドを実行して、NVIDIA GPU (Tesla) ドライバーをビルドします。
sudo dkms build -m nvidia -v ${NVIDIA driver version} -k ${New kernel version} --force
次のパラメータに注意してください。
${NVIDIA driver version}
: バージョンをNVIDIA GPU (Tesla) ドライバーの実際のバージョン番号に置き換えます。 例:470.141.03
。${新しいカーネルバージョン}
: バージョンを新しいカーネルの実際のバージョン番号に置き換えます。 例:5.10.134-15.al8.x86_64
次のコマンドを実行して、NVIDIA GPU (Tesla) ドライバをインストールします。
sudo dkms install -m nvidia -v ${NVIDIA driver version} -k ${New kernel version} --force
次のコマンドを実行して、NVIDIA GPU (Tesla) ドライバが新しいカーネルインストールディレクトリにインストールされているかどうかを確認します。
find /lib/modules/5.10.134-16.3.al8.x86_64/ -name *nvidia*
sudo dkms status
コマンドを実行して、DKMS情報に新しいカーネルバージョン番号が含まれているかどうかを確認します。
NVIDIA GPU (Tesla) ドライバーの再インストール
カーネルの更新後にカーネルのkAPIが変更された場合、DKMSはNVIDIA GPU (Tesla) ドライバーを自動的にビルドまたはインストールできません。 この場合、NVIDIA GPU (Tesla) ドライバを再インストールする必要があります。 詳細については、「GPUアクセラレーションコンピューティング最適化LinuxインスタンスへのTeslaドライバーの手動インストール」をご参照ください。