NVIDIA 開始提供 GPL 授權的核心模組,最主要的原因是其驅動程式架構已發展到足以大幅簡化 Linux 整合、發行與維護流程,同時仍將 GPU 的關鍵智慧財產保留在韌體與使用者空間元件中。
確切來說,NVIDIA 並沒有開放其整個驅動程式堆疊。開放的主要是下列 Linux 核心模組:
nvidia.konvidia-drm.konvidia-uvm.konvidia-modeset.ko
使用者空間元件如 CUDA、OpenGL、Vulkan 以及 GSP 韌體仍維持專有。(NVIDIA Developer)
1. 讓 Linux 發行版更容易整合
過去,NVIDIA 的專有核心模組必須與 Linux 核心分開建置、簽署與發行。使用 DKMS 工作流程在每次核心更新後重新建置模組,常會導致以下問題:
- 核心更新後模組無法建置
- 未簽署的模組遭到 Secure Boot 封鎖
- Linux 發行版難以將驅動程式維護為官方套件
- 整合自訂核心或雲端環境時複雜度增加
透過公開原始碼,Ubuntu、Red Hat、SUSE 等發行版可以更輕鬆地將 NVIDIA 核心模組整合至其封裝、簽署與更新基礎架構。NVIDIA 本身也指出,更緊密的作業系統整合以及更簡單的簽署與發行是主要動機。(NVIDIA Developer)
2. 改善除錯與安全性審查
核心模組會與作業系統的深層部分互動,包括記憶體管理、中斷、行程間同步、PCI Express 與顯示子系統。
有了原始碼,Linux 發行版開發者與企業使用者可以:
- 追蹤執行在核心內停止的位置
- 分析 GPU 事件與工作負載之間的互動
- 修正與自訂核心的不相容性
- 審查安全性相關問題
- 提交修補程式給 NVIDIA
NVIDIA 表示,社群與合作夥伴的審查可以同時改善驅動程式品質與安全性。(NVIDIA Developer)
3. 因為功能已移至 GSP
關鍵技術轉折點是 GSP(GPU System Processor)。
過去,大部分 GPU 控制邏輯在主機 CPU 的核心驅動程式中執行。但在新世代 GPU 上,內部 GSP 韌體負責硬體初始化與管理等關鍵任務。
架構概念上的變化如下:
Previous:
Linux kernel module
↓ Direct low-level hardware control
GPU
Current:
Linux kernel module
↓ Commands / RPC
GSP firmware
↓
GPU hardware
Enter fullscreen mode Exit fullscreen mode
這讓硬體特定複雜度與敏感實作細節仍可留在已簽署的韌體中,同時僅暴露 Linux 面向的核心介面。NVIDIA 明確指出,逐步採用 GSP 驅動程式架構是讓初始開放原始碼核心模組得以實現的技術基礎。(NVIDIA Developer)
換言之,NVIDIA 不只是改變公司政策,而是事先重新設計驅動程式架構,使面向核心的部分得以開放原始碼。
4. 簡化 AI、雲端與資料中心部署
如今 NVIDIA GPU 不僅用於桌上型系統,還用於:
- Kubernetes 叢集
- AI 訓練伺服器
- 雲端虛擬機器
- Grace Hopper 系統
- Confidential Computing 環境
- 統一記憶體架構
在這些環境中,將 GPU 驅動程式自動且安全地整合至作業系統映像檔與容器平台至關重要。
開放核心模組也引進對 HMM、Confidential Computing 以及 Grace 平台上相干記憶體等技術的支援。在 Grace Hopper 與 Blackwell 等部分新平台上,開放核心模組是強制性的。(NVIDIA Developer)
這讓 NVIDIA 得以透過降低在 Linux 上部署 AI 與雲端基礎架構的營運成本,獲得明確的商業優勢。
5. 與 Linux 生態系統(包含 Nouveau)更佳的協作
原始碼的釋出加上 GSP 韌體的引進,也讓改善 Linux 生態系統內附的開放原始碼 NVIDIA 驅動程式 Nouveau 變得更容易,特別是在電源管理與時脈管理等功能方面。
NVIDIA 說明,Nouveau 開發者可將公開的程式碼作為參考,並使用相同的 GSP 韌體。(NVIDIA Developer)
不過,NVIDIA 的開放核心模組尚未完全併入上游 Linux 核心。NVIDIA 說明,其驅動程式碼庫跨多個作業系統共用,目前不符合 Linux 核心上游編碼慣例,因此無法直接納入。(NVIDIA Developer)
為什麼採用「MIT/GPL」雙重授權?
MIT/GPL 代表該程式碼採雙重授權,允許在 GPLv2 或 MIT License 任一授權條款下使用。(NVIDIA Docs)
概括來說,其目的是:
- GPLv2:確保與 Linux 核心授權模式的相容性。
- MIT:允許更寬鬆的重複使用、移植與再發行。
由於 NVIDIA 的程式碼庫跨 Linux、其他作業系統、多個 GPU 系列以及 Jetson 平台共用,因此除了 GPL 之外提供 MIT 選項是務實的選擇。不過 NVIDIA 並未正式表示這是唯一動機;此結論是根據公開的程式碼結構與授權模式推斷而來。(NVIDIA Developer)
總結
與其說 NVIDIA 突然採取公司全面開放原始碼的政策,不如說其實際做法更適合以下描述:
透過將硬體控制移至 GSP 韌體,並開放面向 Linux 的核心介面,NVIDIA 簡化了發行、簽署、維護與雲端部署,同時保留其核心 GPU 智慧財產為專有。
關於先前問題,NVIDIA 目前官方政策是,針對 Turing 世代及更新 GPU,開放 GPU 核心模組是預設且建議的選項。此政策自 R560 驅動程式系列起成為預設。Maxwell、Pascal 與 Volta GPU 仍需使用專有驅動程式。(NVIDIA Developer)
NVIDIAがGPL系のモジュールを提供するようになった最大の理由は、Linuxとの統合・配布・保守を容易にしつつ、GPUの重要な知的財産はファームウェアやユーザー空間に残せる技術構成が整ったからです。
なお、正確には「NVIDIAドライバー全体をGPL化した」のではありません。オープンになったのは主に以下のLinuxカーネルモジュールです。
nvidia.konvidia-drm.konvidia-uvm.konvidia-modeset.ko
CUDA、OpenGL、Vulkanなどのユーザー空間コンポーネントとGSPファームウェアは、引き続きプロプライエタリです。(NVIDIA Developer)
1. Linuxディストリビューションに組み込みやすくするため
従来のプロプライエタリモジュールは、Linuxカーネルとは別にビルド・署名・配布する必要がありました。カーネル更新のたびにDKMSで再ビルドする構成では、以下が問題になりやすくなります。
- カーネル更新後にモジュールがビルドできない
- Secure Bootで署名されていないモジュールをロードできない
- ディストリビューション側が正式パッケージとして管理しにくい
- カスタムカーネルやクラウド環境への組み込みが複雑
ソースを公開することで、Ubuntu、Red Hat、SUSEなどがNVIDIAモジュールを自分たちのパッケージング、署名、更新機構に統合しやすくなりました。NVIDIA自身も「OSとのより緊密な統合」「署名と配布の容易化」を目的として挙げています。(NVIDIA Developer)
2. 障害解析とセキュリティレビューを改善するため
カーネルモジュールは、メモリ管理、割り込み、プロセス間同期、PCI Express、ディスプレイなど、OSの深い部分に関わります。
ソースが見えることで、ディストリビューション開発者や企業ユーザーは、次のような調査が可能になります。
- カーネル内のどこで停止しているか追跡する
- GPUイベントとワークロードの相互作用を解析する
- カスタムカーネルとの非互換性を修正する
- セキュリティ上の問題をレビューする
- パッチをNVIDIAに提案する
NVIDIAは、コミュニティやパートナーからのレビューによってドライバーの品質とセキュリティを改善できると説明しています。(NVIDIA Developer)
3. GSPへの機能移動で、公開しやすくなったため
技術的な転換点が GSP(GPU System Processor) です。
以前は、GPU制御の多くをホストCPU上のカーネルドライバーが実行していました。しかし新しいGPUでは、GPU内部のGSPファームウェアが、初期化やハードウェア管理などの重要な処理を担当する構成へ移行しました。
概念的には次のような変化です。
従来:
Linuxカーネルモジュール
↓ ハードウェアを直接細かく制御
GPU
現在:
Linuxカーネルモジュール
↓ コマンド/RPC
GSPファームウェア
↓
GPUハードウェア
Enter fullscreen mode Exit fullscreen mode
これにより、ハードウェア固有の複雑な制御や機密性の高い部分を署名済みファームウェア側に置きながら、Linuxと接続するカーネル側を公開しやすくなりました。NVIDIAも、最初のオープンモジュールが実現した技術的背景としてGSPドライバーアーキテクチャの段階的導入を明示しています。(NVIDIA Developer)
つまり、単に方針を変えたのではなく、ソース公開可能なドライバー構造へ事前に設計変更していたということです。
4. AI・クラウド・データセンター運用を簡単にするため
NVIDIAのGPUは現在、デスクトップ用途だけでなく、以下の環境で大量に使われます。
- Kubernetesクラスタ
- AI学習サーバー
- クラウドVM
- Grace Hopperシステム
- Confidential Computing
- 統合メモリアーキテクチャ
このような環境では、GPUドライバーをOSイメージやコンテナ基盤に自動的かつ安全に組み込めることが重要です。
オープンモジュールでは、HMM、Confidential Computing、Graceプラットフォームのコヒーレントメモリなど、新しい機能も実装されました。Grace HopperやBlackwellなど、一部の新しいプラットフォームではオープンカーネルモジュールが必須になっています。(NVIDIA Developer)
これは、Linux上のAI・クラウド展開における運用コストを下げるという、NVIDIAにとって明確な事業上の利点があります。
5. NouveauなどLinux側との協調
ソース公開とGSPファームウェアの利用によって、Linuxカーネル内のオープンソースドライバーであるNouveauも、電力管理やクロック管理などの機能を改善しやすくなりました。
NVIDIAは、公開コードをNouveau改善の参考にでき、Nouveauからも同じGSPファームウェアを利用できると説明しています。(NVIDIA Developer)
ただし、NVIDIAの公開モジュールそのものがLinuxカーネル本体に完全統合されたわけではありません。NVIDIAは、コードベースが複数OSで共有されており、Linuxカーネルの設計慣例に適合していないため、そのままではupstreamに入れられないと説明しています。(NVIDIA Developer)
なぜ「MIT/GPL」のデュアルライセンスなのか
表示される MIT/GPL は、GPLv2またはMITライセンスの条件で利用できるデュアルライセンスです。(NVIDIA Docs)
大まかな役割は次のとおりです。
- GPLv2:Linuxカーネルのライセンス体系との親和性を確保する
- MIT:より制約の少ない再利用、移植、再配布を可能にする
NVIDIAのコードはLinuxだけでなく、複数のOS、GPU、Jetson向けに共有されているため、GPLだけに限定せずMITも選択可能にすることには合理性があります。ただし、この部分はNVIDIAが公式に単一の動機として説明したものではなく、公開されているコード構成とライセンス方式からの推論です。(NVIDIA Developer)
要するに
NVIDIAが急に「すべてをオープンソースにする企業方針」へ変わったというより、
GSPファームウェアにハードウェア制御を移し、Linuxとの接点となるカーネル部分を公開することで、配布・署名・保守・クラウド展開を容易にした
というのが実態に近いです。
なお、前の質問に関しては、現在のNVIDIA公式方針では、Turing以降の対応GPUではオープンカーネルモジュールがデフォルトかつ推奨です。R560系列以降、この方針に移行しています。Maxwell、Pascal、Voltaではプロプライエタリ版が必要です。(NVIDIA Developer)
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.