NVIDIA Driver for Linux Defaults to Open-Source Kernel Module
NVIDIA has a relatively poor reputation in the open-source community, especially after being scolded by Linus Torvalds in the past. However, it seems that NVIDIA has learned from its mistakes.
NVIDIA's graphics driver for Linux systems now comes with two kernel modules: one is the traditional closed-source/proprietary driver, and the other is an open-source kernel module released under the MIT/GPLv2 license.
The open-source kernel module is dual-licensed and its source code is available on GitHub. Although the two kernel modules use the same underlying source code, they are mutually exclusive and cannot be installed simultaneously. However, regardless of which kernel module is installed, the user-space components of the driver remain the same and operate in the same way.
The Change
On May 11, NVIDIA announced that starting from the 560.x series driver, the default installation will no longer include the proprietary NVIDIA driver, but instead, the open-source kernel module.
When users install the driver using the.run file, NVIDIA will pre-detect the system's graphics card model. If the graphics card is supported, the open-source kernel module will be installed by default. Otherwise, the proprietary NVIDIA driver will be installed.
The supported graphics cards are mainly based on NVIDIA Turing architecture and above, including GTX 16XX/20XX, MX450/550, RTX 3000~8000, and others.
In simple terms, all NVIDIA graphics cards released after 2018 support the open-source kernel module, and the 560.x driver will also default to the open-source kernel.
Future Changes
NVIDIA also revealed that users can still specify the kernel through command lines if needed, which means they can continue to install the proprietary NVIDIA kernel module. However, some graphics cards may only support the open-source kernel module in the future.
Does this mean that NVIDIA will gradually abandon its proprietary kernel driver over time? It's possible, as NVIDIA may not see the need to maintain two sets of drivers if the open-source and proprietary drivers can achieve the same functionality and performance.