fedora43 安装 nvidia 驱动以及开启视频编解码硬件加速
一、安装方法
参考官网文档 Fedora Wiki Howto/NVIDIA,以及 Fedora WIKI 中关于视频编解码驱动安装 Hardware Video Acceleration.
首先安装 nvidia GPU 驱动以及 GPU 检测工具,再按需安装 cuda 驱动以及视频编解码硬件加速驱动。
二、安装驱动过程
1、开启软件源
首先开启 RPM Fusion nonfree 库和 RPM Fusion nonfree 库。NVIDIA 驱动为非开源驱动,因此需要手动允许使用非开源库(nonfree)。而 RPM Fusion 开源仓库中一般默认开启,包含许多多媒体驱动。
若是显卡作为视频图像输出功能连接到显示器,使用命令:
/sbin/lspci | grep -e VGA
输出如:
01:00.0 VGA compatible controller: NVIDIA Corporation GM206 [GeForce GTX 960] (rev a1)
根据输出查看到当前 GPU 的型号,可以根据型号查询最新驱动。
如果是将 nvidia GPU 作为计算卡使用,可以使用以下命令查询:
/sbin/lspci | grep -e 3D
2、检测是否为安全启动(Secure Boot)
通过以下命令检查当前是否为安全启动:
# 检测是否使用UEFI启动,输出若为 UEFI mode 则有可能启用了安全启动
[ -d /sys/firmware/efi ] && echo "UEFI mode" || echo "Legacy BIOS mode"
# 安装依赖
sudo dnf install mokutil
# 进行检测
mokutil --sb-state
若输出为 SecureBoot enabled 则需要进行接下来的签名操作。
3、安装签名
首先进行安装依赖:
sudo dnf install kmodtool akmods mokutil openssl
然后生成密钥:
sudo kmodgenca -a
接下来导入和注册密钥到MOK(Machine Owner Key,机器所有者密钥):
sudo mokutil --
import /etc/pki/akmods/certs/public_key.der
如果要求输入密码,请记住输入的密码。
重启系统进入 MOK Management 界面(蓝屏界面)进行注册:
systemctl reboot
进入 MOK Management 界面:
- 选择
Enroll MOK- 选择
Continue- 确认注册 选择
Yes- 输入重启前
import导入密钥步骤时的密码- 系统询问是否重启,选择
reboot
4、安装 GPU 驱动
Fedora 的 RPM Fusion 仓库提供 akmod-nvidia 驱动,akmod 指的是 Automatic Kernel Module,基于 DKMS (Dynamic Kernal Module Support) ,能在系统内核升级时自动触发Nvidia内核模块重新编译,自动保证驱动与内核兼容,免去每次更新内核都要手动编译 nvidia 内核模块的麻烦。另外 akmod-nvidia 自动处理相关依赖,不会与系统配置冲突。
首先更新系统:
sudo dnf update -y
安装驱动:
sudo dnf install akmod-nvidia
若需要使用 cuda:
sudo dnf install xorg-x11-drv-nvidia-cuda
注意,需要将驱动标记为用户安装,避免在进行 sudo dnf autoremove 处理依赖时意外删除驱动。
gtx960 在安装上述驱动后能够正常驱动
在安装完成之后运行以下命令检测内核模块是否安装:
modinfo -F version nvidia
若正确安装则能够输出版本号。
如果输出错误信息或者没有输出,需要等待编译,根据官方文档需要等待最长5分钟,等模块编译完成再尝试。
还可以使用以下命令查看是否编译完成:
systemctl list-jobs
如果有 akmod.service 驱动还在编译中,等待任务结束消失驱动才可用。
还可以使用工具 nvidia-smi 进行检测驱动是否正常安装。
三、开启 GPU 硬件加速功能
1、安装 NVENC / NVDEC 驱动
使用以下命令进行安装:
sudo dnf install xorg-x11-drv-nvidia-cuda-libs
2、安装 VDPAU / VAAPI 视频编解码驱动
使用以下命令进行安装:
sudo dnf install nvidia-vaapi-driver libva-utils vdpauinfo
四、处理 nvidia-vaapi-driver 问题
1、问题发现
在安装驱动 nvidia-vaapi-driver 时出现以下问题:
❯ sudo dnf install nvidia-vaapi-driver
仓库更新和加载中:
仓库加载完成。
Failed to resolve the transaction:
No match for argument: nvidia-vaapi-driver
你可以尝试添加到命令行中:--skip-unavailable 跳过不可用软件包
2、问题检查
在确认已经开启 RPM Fusion Free 和 Nonfree 仓库的情况下,进行刷新缓存再次安装:
# 更新缓存
sudo dnf makecache
# 再次安装
sudo dnf install nvidia-vaapi-driver
安装完成后,可通过以下命令验证 VA-API 是否工作:
vainfo
发现输出为:
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri-nonfree/nvidia_drv_video.so
libva info: Trying to open /usr/lib64/dri-freeworld/nvidia_drv_video.so
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
出现错误 vaInitialize failed with error code -1 (unknown libva error) 并且 VA-API 尝试加载多个路径下的 nvidia_drv_video.so 都失败了,说明 nvidia-vaapi-driver 仍然无法安装。
使用以下命令检查 nvidia-vaapi-driver 是否在RPM Fusion Free 和 Nonfree 仓库中提供。
sudo dnf list available | grep -i vaapi
得到输出:
仓库更新和加载中:
仓库加载完成。
没有匹配的软件包可以列出
发现 RPM Fusion 尚未为 Fedora 43 正式打包 nvidia-vaapi-driver 该包通常滞后于新 Fedora 版本几周甚至几个月。
由此,可以自己先手动编译,等 RPM Fusion 适配打包后再删除自己手动编译的驱动,安装统一打包维护的 nvidia-vaapi-driver 驱动。
3、本地自行编译 nvidia-vaapi-driver 驱动
项目仓库地址:github.com/elFarto/nvidia-vaapi-driver.
首先安装编译依赖:
sudo dnf install git gcc make cmake pkg-config libva-devel vulkan-devel
拉取 nvidia-vaapi-driver 源码并进入对应目录:
git clone https://github.com/elFarto/nvidia-vaapi-driver.git
cd nvidia-vaapi-driver
安装编译所需依赖:
sudo dnf install meson libva-devel gstreamer1-plugins-bad-freeworld nv-codec-headers libdrm-devel
使用 Meson 初始化构建环境:
meson setup build
Meson 自动检测到所有依赖(包括 ffnvcodec, libva, libdrm 等)。
输出信息:
Run-time dependency ffnvcodec found: YES 13.0.19.0
Run-time dependency libva found: YES 1.22.0
...
Build targets in project: 1
说明编译环境就绪。
进行编译安装驱动:
sudo meson install -C build
安装完成后,验证是否正确安装:
ls -a /usr/lib64/dri | grep "nvidia_drv_video.so"
得到输出为:nvidia_drv_video.so 说明驱动成功安装。
验证 vainfo:
vainfo
得到输出:
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri-nonfree/nvidia_drv_video.so
libva info: Trying to open /usr/lib64/dri-freeworld/nvidia_drv_video.so
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypointsVAProfileMPEG2Simple : VAEntrypointVLDVAProfileMPEG2Main : VAEntrypointVLDVAProfileVC1Simple : VAEntrypointVLDVAProfileVC1Main : VAEntrypointVLDVAProfileVC1Advanced : VAEntrypointVLDVAProfileH264Main : VAEntrypointVLDVAProfileH264High : VAEntrypointVLDVAProfileH264ConstrainedBaseline: VAEntrypointVLDVAProfileHEVCMain : VAEntrypointVLDVAProfileVP8Version0_3 : VAEntrypointVLDVAProfileVP9Profile0 : VAEntrypointVLDVAProfileHEVCMain10 : VAEntrypointVLD
说明已经正确调用。
4、使用 MPV 验证视频硬解能力
安装 MPV:
sudo dnf install mpv
使用 MPV 播放一个 H.265 视频:
mpv --hwdec=vaapi --vo=gpu your-video.mkv
观察终端是否输出:
[vo/gpu] Trying to use hardware decoding (vaapi).
同时用另一个终端运行 nvidia-smi,观察 GPU-Util 是否上升。
5、驱动后续更新
当前手动编译的 nvidia-vaapi-driver 的安装位置完全符合 RPM Fusion 的安装路径,所以未来最新打包的 RPM 包来了可以直接覆盖,也没问题。
六、卸载驱动
使用以下命令进行卸载:
sudo dnf remove xorg-x11-drv-nvidia\*
五、参考
- Fedora 安装 NVIDIA 驱动的方法 (Fedora 42、43)
- Fedora Wiki Howto/NVIDIA
- Hardware Video Acceleration
版权声明: 本文为博主「张火火isgudi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接: https://www.cnblogs.com/zbyisgudi/p/19418112
提要:本文详细记录了在 Fedora 43 系统上安装 NVIDIA 专有驱动并启用视频编解码硬件加速的完整流程。内容涵盖 RPM Fusion 非自由软件源的启用、安全启动(Secure Boot)环境下的驱动签名与注册、使用 akmod-nvidia 实现内核模块自动重建,以及针对 Fedora 43 尚未官方提供 nvidia-vaapi-driver 包的问题,通过手动从源码编译该驱动以启用 VA-API 硬件解码支持。文章还提供了验证驱动安装、VA-API 功能及 MPV 播放器硬解效果的具体命令,并说明了未来如何无缝切换至官方 RPM 包。适用于使用 NVIDIA 显卡并希望在 Fedora 上获得完整 GPU 功能(包括 CUDA 与视频硬解)的用户。