缘起
这是“Nvidia显卡”系列文章的第三篇,本系列文章主要记录如何使用Nvidia显卡,尤其是在Linux系统上使用Nvidia显卡。在之前的文章中,我记录了在Ubuntu系统上使用Nvidia显卡的相关设置,包括游戏、CUDA编程、深度学习、Docker容器等。现在我已经从Ubuntu迁移到了Fedora系统,而在Fedora上使用Nvidia显卡的设置与Ubuntu有所不同,所以在这里记录一下。
本系列的其他文章参见:
- Nvidia显卡(一):Ubuntu下的游戏、CUDA、深度学习、Docker等
- Nvidia显卡(二):视频剪辑转码工具FFmpeg使用GPU加速
- Nvidia显卡(四):容器化配置Nvidia显卡的CUDA编程和深度学习环境
Fedora安装Nvidia显卡驱动
查看显卡信息
首先,我们需要查看一下我们的显卡信息,打开终端,输入以下命令:
|
|
如果你的电脑上安装了英伟达的显卡,你会看到类似以下的输出:
|
|
不知道为啥,我的电脑上显示的是NVIDIA Corporation Device 2803,而不是RTX 4060 Ti,不过没关系,我们只需要知道这是一块英伟达的显卡就行了。
安装Nvidia显卡驱动
在Ubuntu中,我们使用了apt源里的graphics-drivers包来安装Nvidia显卡驱动,而在Fedora中,我们需要使用rpmfusion源来安装Nvidia显卡驱动。
相比直接从Nvidia官网下载安装包,使用rpmfusion源安装Nvidia显卡驱动更为简单和方便,同时由于rpmfusion中的驱动是经历过在Fedora中测试的,所以更为稳定。主要步骤如下:
-
添加
rpmfusion源:1 2sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm也可以在RPM Fusion官网下载与你的Fedora版本对应的
rpmfusion源安装包,在Fedora系统里直接双击下载的安装包,Fedora会自动打开Discover软件中心,点击标题栏的“安装”按钮即可。一般我们需要安装两个源:rpmfusion-free和rpmfusion-nonfree,前者包含了开源软件,后者包含了非开源软件。装好之后可以更新一下软件源:
1sudo dnf update -
安装Nvidia显卡驱动:
可以参考RPM Fusion官网的说明,使用以下命令安装Nvidia显卡驱动:
1 2sudo dnf install akmod-nvidia # rhel/centos users can use kmod-nvidia instead sudo dnf install xorg-x11-drv-nvidia-cuda #optional for cuda/nvdec/nvenc support这里的
akmod-nvidia是Fedora中Nvidia显卡驱动的包名,安装后会自动编译内核模块。 -
(可选)安全启动:
什么是安全启动
安全启动是一种安全标准,旨在确保计算机在启动时只加载经过验证的操作系统和软件。它可以防止恶意软件在系统启动时加载,从而提高系统的安全性。简单来说,安全启动可以确保只有可信的软件才能在系统启动时运行。
安全启动是如何工作的
- UEFI固件中有一个安全启动数据库,用于存储所有被信任的公钥和证书。一般来说,被信任的公钥包括操作系统厂商、硬件厂商等的公钥,以及用户自己生成的公钥。
- 当计算机启动时,UEFI固件会验证每个加载的组件(如操作系统内核、驱动程序等)是否被信任。
- 只有在安全启动数据库中注册的组件才能被加载,未授权的组件将被阻止。
Linux内核模块(如Nvidia显卡驱动)需要经过签名才能在启用了安全启动的系统上加载。如果内核模块没有签名,或者签名不被信任,那么在启用了安全启动的系统上,这些模块将无法加载,从而导致显卡驱动无法工作。这就是为什么安装了Nvidia显卡驱动后,需要为Linux内核模块生成签名并注册到安全启动数据库中。
我是否需要安全启动
对于普通用户(即对电脑了解有限,也不了解电脑启动过程的用户)而言,我的建议是启用安全启动;对于高级用户(知道自己在干什么,尤其是知道系统在启动时在干什么,或者知道自己让系统在启动时干什么的用户)而言,我的建议是可以禁用安全启动。
如果你的电脑启用了安全启动
如果你的电脑启用了安全启动(Secure Boot),可能会导致Nvidia显卡驱动无法加载。你可以在BIOS中禁用安全启动。
如果你不想禁用安全启动,可以参考RPM Fusion官网的说明,注册一个密钥并将其添加到你的系统中,以启用安全启动。具体步骤如下:
-
安装相关工具
1sudo dnf install kmodtool akmods mokutil openssl -
生成密钥
1sudo kmodgenca -a -
注册密钥
1sudo mokutil --import /etc/pki/akmods/certs/public_key.der这里会提示你设置一个密码,这个密码在重启后需要输入。
注意:由于这里是给当前的内核版本生成密钥,所以之后一旦更新了内核版本,就可能需要重新生成密钥并注册(即重复
生成密钥和注册密钥的步骤)。 -
重启电脑
- 如果你在上一步设置了安全启动,重启后进入MOK管理界面,选择“Enroll MOK”,输入你设置的密码,完成后继续启动系统。
- 如果你在上一步禁用了安全启动,直接重启电脑即可。
-
确认显卡驱动是否安装成功:
1nvidia-smi如果你看到了类似以下的输出,那么恭喜你,你的Nvidia显卡驱动安装成功了:
1 2 3 4 5 6 7 8 9 10 11+-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 12.5 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA RTX 4060 Ti Off | 00000000:01:00.0 Off | N/A | | N/A 41C P8 10W / N/A | 0MiB / 7611MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+
测试显卡
我们可以使用glmark2来测试显卡性能。
- 安装
glmark2:
|
|
- 运行
glmark2:
|
|
如果在终端中看到了类似以下的输出,那么说明显卡性能测试成功:
|
|
并且会有一个窗口弹出来,显示正在测试的内容。测试完成后,终端中会显示测试的分数。

游戏
Linux系统本来是不太适合玩游戏的,但是随着Steam的推广,越来越多的游戏可以通过Proton在Linux上运行。Proton是Valve开发的一个基于Wine的工具,可以在Linux上运行Windows游戏。
在Ubuntu上安装Steam还需要安装一些额外的依赖包,并且手动安装Proton。而在Fedora上,安装Steam就非常简单了,而且默认就包含了Proton。
安装Steam
- 安装Steam:
|
|
- 登录Steam账号
在开始菜单中找到Steam就可以点击打开,登录你的Steam账号即可。

安装游戏
如果你是第一次使用Steam,尚未购买任何游戏,你可以选择一些免费的游戏进行测试,例如《Dota 2》、《Counter-Strike: Global Offensive》等。

启动游戏
安装好之后可以点击“Launch”来启动游戏,但是第一次启动往往不会成功,需要启动三次。

- 第一次启动会卡在下载一个组件上面,点开下载管理,发现它试图下载Steam Linux Runtime 2.0。但不知为何一直无法启动下载,而且明明已经有来Steam Linux Runtime 3.0。我只能取消启动。
- 第一次取消启动之后再次启动游戏,Steam Linux Runtime 2.0会被成功下载,游戏进入加载界面。但会卡在一个全屏黑屏的界面。只能点击停止游戏。
- 第三次启动游戏,这次游戏会成功加载,进入着色器编译阶段。等待着色器编译完成就可以正常启动了。
手柄
如果你使用手柄,还需要一点点额外的配置。默认使用USB线来连接但话直接就能玩。
如果使用XBox手柄,可以通过蓝牙连接。但即使连上,你可能会发现手柄依然不能控制游戏。这是因为缺少相关驱动,我们可以安装xpadneo包来解决这个问题:
|
|
然后重新连接蓝牙。连接上时手柄会轻微震动一下,而之前连接时是没有震动的,这说明手柄已经成功被识别,可以用来玩游戏了。
CUDA编程
CUDA是英伟达公司推出的并行计算平台和编程模型,可以利用GPU的并行计算能力,加速计算密集型应用程序。CUDA编程需要安装Nvidia显卡驱动和CUDA工具包。而且CUDA版本和Nvidia显卡驱动版本有一定的对应关系,需要根据自己的显卡驱动版本选择合适的CUDA版本。
2025年8月更新:安装完发现这样安装还是不行,主要是Fedora 42和CUDA 12.9的兼容性问题。可直接参见最后的“问题”部分。
安装CUDA
- 查看Nvidia显卡驱动需要的CUDA版本:
|
|
在CUDA Version一行中,可以看到Nvidia显卡驱动需要的CUDA版本,例如CUDA Version: 12.9。即我们需要安装CUDA 12.9。
- 安装CUDA:
在Ubuntu中安装CUDA时,我们直接参照了Nvidia官网上的安装指南。
在Fedora中,由于我们刚才在安装驱动时用的时RPM Fusion仓库,直接参照Nvidia官网的话可能会遇到版本不匹配的问题。例如上一步中我们查到需要安装CUDA 12.9,但在Nvidia官网上可能只提供CUDA 13.0的安装包,如果直接按照Nvidia官网上的指示安装,就会造成版本不匹配的问题。这是因为RPM Fusion在Nvidia官方发布驱动之后还要测试,稳定之后才会推送到RPM仓库。因此我们这里还是要按照RPM Fusion上的说明来安装CUDA。
其命令如下:
|
|
注意到上面的命令中安装的CUDA版本是为Fedora 41准备的,而我们的Fedora版本是42。但是不用担心,RPM Fusion上的说明里也提到了,上述命令对于Fedora 41之后的版本都适用。
- 配置环境变量:
如果安装成功,你会在/usr/local/cuda-12.9目录下看到CUDA的安装文件。同时你会在/usr/local/cuda目录下看到一个指向/usr/local/cuda-12.9的软链接。如果之后升级CUDA版本,/usr/local/cuda会指向新的CUDA版本目录。
我们需要配置环境变量,使得CUDA可以被找到。将cuda的bin目录和lib64目录添加到PATH和LD_LIBRARY_PATH环境变量时,我们使用/usr/local/cuda目录,而不是/usr/local/cuda-12.9目录,因为这样可以在以后升级CUDA版本时不需要修改环境变量。
如果你使用bash,可以在~/.bashrc文件中添加以下内容:
|
|
如果使用其他shell,可以将以上内容添加到对应的配置文件中。
- 测试CUDA:
|
|
如果你看到了类似以下的输出,那么说明CUDA安装成功:
|
|
问题
经历上面的步骤,看似我们已经成功安装了CUDA,但实际上上面的编译器在Fedora 42中是不能用的。如果你直接使用它来编译,会报错gcc版本不匹配。因为上面安装的CUDA版本是12.9,它只匹配GCC 14及以下的版本,而Fedora 42默认安装的是GCC 15。
而且这个问题也无法通过安装GCC 14来解决,因为即使安装了GCC 14,Fedora 42中的库、头文件之类的仍然是GCC 15的版本,所以编译时仍会报错。
这个问题很难解决,一个办法是不再使用RPM Fusion来安装Nvidia驱动、CUDA等,而是直接从Nvidia官网下载安装包来安装CUDA 13.0及对应的驱动。CUDA 13.0是支持GCC15的,然而这依然会有两个问题:
- 无法使用Fedora的包管理系统来管理Nvidia驱动和CUDA的安装和升级。万一有跟他们相关的依赖是由Fedora管理的,那么没准哪一次更新时就会更新失败。问题严重时甚至会影响系统的稳定性。
- 深度学习常用的PyTorch至今(2025年8月)仍未适配CUDA 13.0,所以安装了CUDA 13.0仍然无法搞很多深度学习。
如果你非要使用Fedora系统,我认为目前(2025年8月)有两个解决方案:
- 一是放弃Fedora 42,转向Fedora 41。但这估计不能通过简单的系统版本降级来实现,因为牵涉到的东西太多。估计只能重装系统。
- 二是使用虚拟化的容器来配置。等到之后RPM Fusion和PyTorch都支持CUDA 13.0了,或许可以再把容器丢掉。
我思考过后选择了第二个选项。我决定把安装好的Nvidia驱动和CUDA先放在这里,另起一个docker/Podman容器来配置CUDA编程和深度学习开发环境。主要想法是在容器中运行Ubuntu 24.04,安装与之兼容的CUDA和Nvidia驱动,由于PyTorch暂未支持CUDA 13.0,因此在容器中使用CUDA 12.9。具体配置过程我会另起一篇文章,请参见: