全部產品
Search
文件中心

Alibaba Cloud Linux:核心更新時無法正常載入NVIDIA GPU(Tesla)驅動

更新時間:Aug 15, 2024

當升級GPU執行個體的作業系統(例如Alibaba Cloud Linux、RedHat、CentOS、Ubuntu等)核心時,可能會因為兩個核心的kABI(Kernel Application Binary Interface)不一致,導致舊核心上構建的GPU(Tesla)驅動無法在新的核心上載入。核心升級後,請根據核心的kAPI(Kernel Application Programming Interface)是否存在變化,採取不同的方案解決該問題。

問題現象

升級GPU執行個體的作業系統核心時,出現GPU(Tesla)驅動無法在新的核心上載入,即無法在新的核心版本上插入舊核心的NVIDIA的KO,導致該驅動無法正常使用。報錯資訊如下:

報錯截圖.jpg

問題原因

升級核心包後導致NVIDIA GPU(Tesla)驅動無法載入的可能原因如下:

  • 升級前後兩個核心的kABI不一致,導致舊核心上構建的NVIDIA GPU(Tesla)驅動無法在新核心上載入。

  • NVIDIA GPU(Tesla)驅動的預設KO(Kernel Object)安裝目錄不在 /lib/modules/(uname−r)/extra下,導致新的核心包安裝時無法對其建立軟連結。

解決方案

基於以上原因,根據核心的kAPI影響情況,採取不同的解決方案:

通過DKMS自動構建NVIDIA GPU(Tesla)驅動

  1. 在NVIDIA GPU(Tesla)驅動上安裝DKMS。

    1. 遠端連線GPU執行個體。

      本文以Alibaba Cloud Linux 3系統的gn7i執行個體為例,具體操作,請參見通過密碼或密鑰認證登入Linux執行個體

    2. 在GPU執行個體上安裝DKMS。

      sudo yum install dkms
    3. 手動為GPU安裝NVIDIA GPU(Tesla)驅動。

      具體操作,請參見在GPU計算型執行個體中手動安裝Tesla驅動(Linux)

      安裝過程中,請注意以下幾點:

      • 出現以下提示(即是否將核心模組原始碼註冊到DKMS)時,選擇Yes

        DKMS.jpg

      • 選擇Yes後NVIDIA GPU可能會報註冊失敗提示(如下圖所示),您無需擔心,直接單擊OK即可。

        DKMS-OK.jpg

      • 根據實際需要選擇是否安裝NVIDIA的32位相容性庫。

        相容32位.jpg

    4. 執行以下命令,檢測DKMS的目前狀態。

      sudo dkms status

      結果顯示如下,表示DKMS已安裝成功。

      註冊到dkms.jpg

    5. 執行ls命令,查看/usr/src/nvidia-${nvidia 驅動版本}目錄下是否存放NVIDIA GPU(Tesla)驅動相關檔案。

      本樣本以nvidia-${nvidia 驅動版本}nvidia-470.141.03為例,請替換成您實際的驅動版本。

      目錄.jpg

      說明

      NVIDIA GPU(Tesla)驅動預設將其相關代碼或檔案存放在 /usr/src/nvidia-${nvidia 驅動版本} 目錄下,以便DKMS在核心更新後自動重新編譯和安裝驅動程式的核心模組。

  2. 安裝新核心觸發DKMS自動構建NVIDIA GPU(Tesla)驅動。

    本樣本以新核心版本5.10.134-15.al8為例,請您根據業務需要替換為實際的核心版本。

    重要

    建議先安裝 kernel-devel包然後安裝kernel/kernel-core包,否則,DKMS不會自動構建NVIDIA GPU(Tesla)驅動。因為kernel/kernel-core包觸發DKMS,而DKMS構建NVIDIA GPU(Tesla)驅動需要kernel-devel包,此時需要手動觸發DKMS構建NVIDIA GPU(Tesla)驅動。具體操作,請參見步驟3:手動觸發DKMS構建Tesla驅動

    1. 執行以下命令,安裝新核心的kernel-devel包。

      sudo rpm -ivh kernel-devel-5.10.134-15.al8.x86_64.rpm --force

      kernel-devel.jpg

    2. 安裝kernel/kernel-core包。

      本樣本以安裝kernel包為例。對於Alibaba Cloud Linux 3系統來說,需要安裝kernel-core包,執行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

      kernel.jpg

    3. 執行以下命令,檢查新核心下NVIDIA GPU(Tesla)驅動是否構建成功。

      find /lib/modules/5.10.134-15.al8.x86_64/ -name *nvidia*

      image

    4. 執行sudo dkms status檢查DKMS是否存在新的核心記錄。

      image

  3. (條件必選)如果您先安裝了kernel/kernel-core包,然後安裝kernel-devel包,需手動觸發DKMS構建NVIDIA GPU(Tesla)驅動。

    1. 執行以下命令,構建NVIDIA GPU(Tesla)驅動。

      sudo dkms build -m nvidia -v ${nvidia 驅動的版本} -k ${新的核心版本} --force

      主要參數說明如下:

      • ${nvidia 驅動的版本}:請替換為NVIDIA GPU(Tesla)驅動的具體版本號碼,例如470.141.03

      • ${新的核心版本}:請替換為新核心的具體版本號碼,例如5.10.134-15.al8.x86_64

      image

    2. 執行以下命令,安裝已構建好的NVIDIA GPU(Tesla)驅動。

      sudo dkms install -m nvidia -v ${nvidia 驅動版本} -k ${新的核心版本} --force

      image

    3. 執行以下命令,檢查新核心安裝目錄下NVIDIA GPU(Tesla)驅動是否已安裝。

      find /lib/modules/5.10.134-16.3.al8.x86_64/ -name *nvidia*

      驅動安裝.jpg

    4. 執行sudo dkms status檢查DKMS是否存在新的核心記錄。

      image

重新適配NVIDIA GPU(Tesla)驅動

如果核心升級後導致核心的kAPI受到影響發生變化,通過DKMS無法自動構建和安裝NVIDIA GPU(Tesla)驅動,您需要重新適配NVIDIA GPU(Tesla)驅動。具體操作,請參見:在GPU計算型執行個體中手動安裝Tesla驅動(Linux)