Rocky Linux 9.7 安装 NVIDIA 驱动:双 RTX 5050 六屏配置与踩坑记录
前述
最近在配置 Rocky Linux 9.7 的时候,需要让两张 RTX 5050 各带三个显示器,实现六屏扩展显示。原本以为装好显卡驱动就可以了,实际操作中却遇到了内核开发包缺失、安装依赖时带入新内核、Wi-Fi 无法使用,以及驱动装好了却加载不了等问题。
这篇文章把两台机器的安装和排错过程整理一下,也方便以后遇到相同问题时查阅。第一台已经实现两张卡各带三屏;第二台在关闭 Secure Boot 后解决了驱动加载问题,六屏重启恢复的结果还需要单独验收。
这次最终采用的方案是:保留 Wi-Fi 正常的原内核,补齐对应开发包,安装 NVIDIA 开放内核模块驱动,使用 X11,关闭原配置中的 SLI/BaseMosaic,再启用第二张显卡的三个输出并保存布局。
PS:下面的内核版本、驱动版本和接口名称来自本次实际环境,照着操作之前一定要先核对自己的机器。
本次环境与结果
| 项目 | 本次记录 |
|---|---|
| 初始安装系统 | Rocky Linux 9.7,x86_64 |
| 最终采用的内核 | 5.14.0-611.5.1.el9_7.x86_64 |
| 显卡 | 两张 GeForce RTX 5050,另有 Intel 核显 |
| 本次安装的 NVIDIA 驱动 | 615.71.09,开放内核模块 |
| 桌面会话 | X11 / Xorg |
| Secure Boot | 关闭 |
| 第一台结果 | 两张卡各带三屏,六屏全部亮起,后续设置可用 |
| 第二台结果 | 关闭 Secure Boot 后驱动恢复正常;暂未单独记录六屏重启验收结果 |
这里先说明一个关键点:RTX 5050 属于 Blackwell 架构,需要使用 NVIDIA 开放内核模块。它与 Nouveau 驱动不同,两张同型号显卡也只需要安装一套驱动。NVIDIA 在开放内核模块说明中明确说明,Blackwell 及后续架构仅由开放内核模块支持。
另一台电脑的内核、接口名和配置文件必须按实际结果核对。本文中的精确 RPM 地址只适用于上述内核版本。
本文的 --exclude 参数只限制当前安装事务,不会永久锁定内核或系统版本。保留旧内核也不等于撤销此前更新过的其他软件包;默认 Rocky 9 软件源可能提供后续 9.x 小版本的依赖。若必须严格冻结整个发行版,需要另行规划软件源及版本策略。
安装前与 BIOS 设置
- 备份系统盘重要资料;核对安装磁盘,必要时先断开数据盘。
- 使用 Rocky Linux 9.7 x86_64 DVD 镜像,选择“工作站”或“带 GUI 的服务器”。
- 创建具有管理员权限的日常用户。
- 保留两张显卡,初始调试可先连接一台显示器;连接 Wi-Fi 或有线网络。
- 使用 UEFI 启动,保持已验证可用的磁盘控制器设置。
- 本次采用关闭 Secure Boot 的路径。
华硕主板常见路径:
1 | F7 → Advanced Mode → Boot → Secure Boot → OS Type → Other OS |
如果 BIOS 提供 Secure Boot Control 开关,则设置为 Disabled。无需清除安全启动密钥或 TPM,也无需改为 Legacy 启动。
关闭 Secure Boot 会减少启动签名验证保护;若环境要求保留开启,则需另外完成模块签名与密钥登记。参见 华硕官方安全启动说明。
检查系统、网络和双卡
以下命令在目标 Rocky 系统中执行,不是在其他电脑上执行。
1 | cat /etc/rocky-release |
本次目标内核:
1 | 5.14.0-611.5.1.el9_7.x86_64 |
成功路径的安全启动状态:
1 | SecureBoot disabled |
若 mokutil 或 lspci 不存在,可在联网后按“准备工具与匹配的开发包”一节安装工具,再回来检查。
如果出现 Could not resolve host,先检查网络:
1 | nmcli device status |
本次第一次下载失败,是尚未连接 Wi-Fi。后续又曾因新内核下无线网络不可用而无法下载。
保留网络正常的内核
这次有一个比较容易绕进去的坑:安装不指定版本的 kernel-devel-matched 时,依赖把新内核一起带进来了。重启到新内核后,Wi-Fi 无法使用;切回原来的内核,Wi-Fi 又恢复了。
所以我后面采用的办法是:保留网络正常的原内核,再给它补齐相同版本的开发包。 这是针对这两台机器的处理方式,并不是说 Rocky 的新内核都不能使用无线网络。
如果当前已经运行正确内核,只需检查默认启动项:
1 | sudo grubby --default-kernel |
如果需要恢复本次旧内核,先确认启动项存在:
1 | sudo grubby --info=/boot/vmlinuz-5.14.0-611.5.1.el9_7.x86_64 |
正常显示该启动项后,再执行:
1 | sudo grubby --set-default=/boot/vmlinuz-5.14.0-611.5.1.el9_7.x86_64 |
保存工作后重启,用 uname -r 确认。若旧启动项不存在,不要照抄设置命令。
准备工具与匹配的开发包
准备软件源
1 | sudo dnf install dnf-plugins-core mokutil pciutils --exclude='kernel*' |
安装时核对事务列表;任何一步报错就停在该步骤,不要通过 --allowerasing 或取消所有排除条件强行继续。
安装两个精确匹配的开发包
仅在 uname -r 为 5.14.0-611.5.1.el9_7.x86_64 时使用下面的地址。
先安装 kernel-devel:
1 | sudo dnf install https://download.rockylinux.org/vault/rocky/9.7/AppStream/x86_64/os/Packages/k/kernel-devel-5.14.0-611.5.1.el9_7.x86_64.rpm --exclude=kernel --exclude=kernel-core --exclude='kernel-modules*' |
再安装同版本 kernel-devel-matched:
1 | sudo dnf install https://download.rockylinux.org/vault/rocky/9.7/AppStream/x86_64/os/Packages/k/kernel-devel-matched-5.14.0-611.5.1.el9_7.x86_64.rpm --exclude=kernel --exclude=kernel-core --exclude='kernel-modules*' |
这两个精确版本都可以在 Rocky 9.7 官方归档中找到。两者作用不同:
kernel-devel提供编译驱动所需的内核开发目录。kernel-devel-matched提供匹配依赖关系;第二台的 DKMS 包明确要求它。
不要将第二条改成不带版本的 dnf install kernel-devel-matched。 本次用官方归档中的精确版本满足依赖,同时排除运行内核包变化。
检查:
1 | rpm -q "kernel-devel-$(uname -r)" |
三条均正常后继续。用于内核模块构建的 kernel-devel 必须匹配运行内核;不要仅因用户空间 kernel-headers 包版本不同就盲目降级它。
归档下载慢时
若正在下载阶段,可以取消后改为支持断点续传的下载;进入 Running transaction 后不要中断。
1 | curl -fL -C - --retry 3 -o "$HOME/kernel-devel-5.14.0-611.5.1.el9_7.x86_64.rpm" https://download.rockylinux.org/vault/rocky/9.7/AppStream/x86_64/os/Packages/k/kernel-devel-5.14.0-611.5.1.el9_7.x86_64.rpm |
完整下载成功后再安装:
1 | sudo dnf install "$HOME/kernel-devel-5.14.0-611.5.1.el9_7.x86_64.rpm" --exclude=kernel --exclude=kernel-core --exclude='kernel-modules*' |
分开下载并不能保证提速,但中断后可继续下载;也可将完整 RPM 用 U 盘复制到另一台机器。安装成功后仍需准备前面的 matched 包。
安装 NVIDIA 开放模块驱动
安装方式参考 NVIDIA 的 Rocky Linux 驱动安装文档。下面在官方仓库安装流程的基础上,保留了本次避免切换运行内核的排除参数。
如果目标系统已经有其他来源或 .run 安装的驱动,不应直接混装;先确认并处理原安装方式。本节针对新装或沿用本次官方仓库路径的系统。
1 | sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo |
Rocky 9 对应 NVIDIA 仓库代号 rhel9。config-manager 中间是连字符。
本次安装版本为 615.71.09;open-dkms 会随软件源更新,并未固定驱动版本。需要显示桌面,因此采用包含桌面组件的 nvidia-open,而不是仅计算用途的安装组合。
安装结束后检查当前内核的模块:
1 | sudo dkms autoinstall -k "$(uname -r)" |
预期:
- 当前内核对应的 NVIDIA 条目显示
installed。 - 许可证显示
Dual MIT/GPL。 - 默认启动内核仍为保留的旧内核。
dkms autoinstall 若没有输出并立即返回提示符,可能是模块已在软件包安装阶段构建完成;以检查结果为准。尚未返回提示符时,不要重复运行或立即关机。
保存工作后重启:
1 | sudo reboot |
重新登录检查:
1 | uname -r |
应列出两张 RTX 5050。这里是大写 -L;小写 -l 表示循环刷新。
使用 X11,检查 SLI/BaseMosaic
本次六屏成功采用 X11。登录界面选择用户后,在会话选项中选择“GNOME on Xorg”(如提供该选项)。进入桌面检查:
1 | echo "$XDG_SESSION_TYPE" |
应显示 x11。不要因为切换为 X11 就认为驱动损坏。
检查当前配置:
1 | cat /etc/X11/xorg.conf.d/10-nvidia.conf |
第一台曾存在以下两项:
1 | Option "SLI" "Auto" |
当时 nvidia-smi 可以查询到两张卡,但 xrandr --listproviders 只有一个 NVIDIA 显示提供者。关闭这两项并重启后,第二个 NVIDIA 显示提供者出现。这验证了本次配置修改有效,但不表示所有双卡故障都由这两项造成。
有相同配置时,先备份再修改
以下备份命令首次执行一次即可;不要用后续状态覆盖原始备份。
1 | sudo cp -a /etc/X11/xorg.conf.d/10-nvidia.conf /etc/X11/10-nvidia.conf.before-dual-gpu |
1 | sudo sed -i '/"SLI"/s/"Auto"/"Off"/; /"BaseMosaic"/s/"on"/"off"/' /etc/X11/xorg.conf.d/10-nvidia.conf |
本次最终文件内容记录如下,供核对:
1 | Section "OutputClass" |
如果另一台没有该文件、选项不同或配置复杂,不要直接用上面的样例覆盖全部设置。上述替换命令只针对本次实际出现的值,执行后必须查看结果。
保存工作后重启,继续使用原内核和 X11。
识别并启用六个屏幕
在当前图形桌面的终端运行:
1 | xrandr --listproviders |
本次修正配置后的记录:
| 显示提供者 | 能力与含义 |
|---|---|
NVIDIA-0 |
第一张 NVIDIA 显卡,Source Output |
NVIDIA-G0 |
第二张 NVIDIA 显卡,Sink Output |
modesetting |
额外显示提供者,不能仅凭名称认作第二张 RTX 5050 |
modeset 为 Y。第二张卡已关联到当前桌面,因此本次没有再执行手动 provider 关联命令。
本次接口记录:
| 显卡 | 已连接输出 | 启用前状态 |
|---|---|---|
| 第一张 | DP-0、DP-2、DP-4 |
已显示分辨率与位置 |
| 第二张 | DP-1-0、DP-1-2、DP-1-4 |
connected,但没有分辨率与位置 |
connected 但没有分辨率和位置,表示被识别但没有启用输出。nvidia-smi 的 Disp.A Off 是显示状态,不是可以直接打开的开关;启用持久模式也不是点亮显示器的方法。
仅当实际接口名称与上表一致时,使用本次成功的命令:
1 | xrandr --output DP-1-0 --auto --right-of DP-2 --output DP-1-2 --auto --right-of DP-1-0 --output DP-1-4 --auto --right-of DP-1-2 |
不加 sudo。这条命令以 DP-2 为参照,把新启用的三个屏幕依次排在它右侧;第一台执行后,六个屏幕就都亮起来了。最终摆放位置再到桌面设置里调整。
若接口名不同,必须替换为实际已连接接口;若第二个 NVIDIA 显示提供者尚未出现,不应直接套用此命令。
保存布局与完成验收
进入“设置 → 显示器”:
- 使用扩展/加入显示器模式,按实际摆放位置排列六屏。
- 选择主屏、分辨率和缩放比例。
- 初次调试先使用约 60 Hz,稳定后再逐项调整。
- 点击“应用”,确认保留更改。
命令行 xrandr 调整只影响当前会话。通过桌面设置保存布局后,仍需重启验证是否恢复。
验收项目:
-
uname -r为目标旧内核。 - Wi-Fi 可以连接。
-
nvidia-smi -L能列出两张卡。 - 六个显示输出均启用,可显示画面。
- 主屏、位置、分辨率和缩放符合实际摆放。
- 鼠标和窗口可以按预期跨屏移动。
- 重启并登录后,六屏和布局恢复。
如用于长期展示,再按需要调整自动挂起、锁屏和屏幕熄灭时间。
踩坑记录与处理方法
下面按本次遇到的错误提示整理处理方法,方便遇到相同问题时对照。
开发目录缺失,DKMS 无法构建
当时的报错为 Your kernel headers ... cannot be found。在本次 Rocky 环境中,通过补齐对应版本的 kernel-devel 并确认 build/Makefile 存在,解决了开发目录缺失问题。
DKMS 还要求 kernel-devel-matched
第二台出现的依赖关系是:DKMS 要求 (kernel-devel-matched if kernel-core)。--exclude='kernel*' 也会排除尚未安装的 matched 包。
解决方式是在安装驱动前,先从官方归档安装与旧内核相同版本的 matched 包;不是取消所有内核限制,也不是直接安装最新 matched 包。
软件包已安装,但 Secure Boot 开启,模块没有加载
第二台当时的状态是:
nvidia-open已安装。nvidia-smi无法连接 NVIDIA 驱动。SecureBoot enabled。lsmod没有显示 NVIDIA 模块。
第二台关闭 Secure Boot 并重启后,驱动恢复正常。若安全启动必须保留,则应处理模块签名与信任登记,不能把关闭当成唯一方案。
当时读取的内核日志没有显示明确的签名拒绝错误。出现 NVIDIA 音频设备或证书字样,也不等于 NVIDIA 显示模块已经加载;应结合模块状态和 nvidia-smi 判断。
常用排错命令
1 | uname -r |
检查 Xorg 配置和本次启动日志:
1 | cat /etc/X11/xorg.conf.d/10-nvidia.conf |
如果最后 60 行只有显示器探测记录,应继续查找更早的初始化/错误记录,不能据此断言不存在错误。旧的 /var/log/Xorg.0.log 也可能不属于当前会话。
黑屏时的恢复路径
如果安装或切换显示后黑屏,先等待几分钟并观察所有屏幕,避免在后台仍编译时断电。尝试 Ctrl + Alt + F3 或 Ctrl + Alt + F4 进入文字终端。
若无法操作,先尝试短按电源键正常关机;只有持续无响应时才考虑长按强制关机,后者可能丢失未写入数据。
通过 GRUB 临时进入文字模式:
- 开机显示内核菜单,选择原来的
611.5.1.el9_7内核。 - 按
e编辑。 - 找到以
linux开头的长行,保留root=等参数,删除rhgb quiet。 - 在该行末尾加空格及
systemd.unit=multi-user.target。 - 按
Ctrl + X启动,使用普通账户登录。
此修改只影响本次启动,不是重装或永久改成文字模式。
如果黑屏发生在修改 Xorg 配置之后,可恢复之前确实创建过的备份:
1 | sudo cp -a /etc/X11/10-nvidia.conf.before-dual-gpu /etc/X11/xorg.conf.d/10-nvidia.conf |
参考资料
- NVIDIA:Rocky Linux 驱动安装
- NVIDIA:安装前检查与内核开发包
- NVIDIA:开放内核模块与 Blackwell 支持
- NVIDIA:X 配置选项,包括 SLI、BaseMosaic
- NVIDIA:RandR 跨显卡显示说明
- NVIDIA:nvidia-smi 字段说明
- Rocky:9.7 AppStream 官方归档
- Red Hat:默认内核修改
- Red Hat:systemd 启动目标与文字模式
- 华硕:开启或关闭 Secure Boot
- GNOME:多显示器与主屏设置
这篇文章记录的是本次环境下的安装和排错过程。以后更换内核或更新驱动时,我会重新检查 Wi-Fi、驱动模块和六屏布局是否能正常恢复;其他机器也需要按自己的内核版本和显示接口调整。





