RTX 5060 Ti Linux 驱动安装避坑指南
背景:RTX 50 系列(Blackwell 架构)发布后,在 Ubuntu 24.04 (Kernel 6.14) 下安装 NVIDIA 驱动时,常遇到系统黑屏及 request_mem_region failed 内存冲突问题。本文记录如何正确安装强制要求的 NVIDIA Open Kernel Modules 驱动与 CUDA 13.1。
1. 问题现象与环境
硬件环境:
- CPU: AMD Ryzen 7 5800X (无核显)
- GPU: ASUS RTX 5060 Ti (Blackwell Architecture)
- OS: Ubuntu 24.04 LTS (Kernel 6.14)
故障描述:
系统能够通过 BIOS 自检,但在进入 Ubuntu 引导后全程黑屏。通过 SSH 或 TTY 进入系统后,即便安装了驱动,nvidia-smi 依然报错:
NVIDIA-SMI has failed because it couldn
使用 dmesg 查看内核日志,发现关键错误:
[123.88] NVRM: request_mem_region failed for 64M @ 0xd0000000. [123.88] NVRM: This can occur when a driver such as rivatv is loaded... [123.88] NVRM: probe with driver nvidia failed with error -1
以及尝试加载驱动时的报错:
modprobe: ERROR: could not insert
2. 核心故障分析 (Root Cause Analysis)
导致 5060 Ti 无法工作的核心原因有三点,必须按顺序解决:
- 内存地址冲突 (BAR Space Conflict):日志中的
request_mem_region failed 表明,显卡所需的 PCI BAR 内存地址被系统保留区或帧缓冲驱动(sysfb/efifb)占用了。
- 内核模块类型错误:RTX 50 系列 (Blackwell) 显卡强制要求使用 NVIDIA Open Kernel Modules。传统的闭源驱动无法正确初始化新架构的 GSP。
- 显示权抢占:Linux 高版本内核的
simpledrm 或 sysfb 会'霸占'显示输出,导致 NVIDIA 驱动无法介入。
3. 解决方案 (Step-by-Step)
第一步:BIOS 设置(根治内存冲突)
这是最关键的一步。如果不开启此选项,系统只能给显卡分配 4GB 以下的拥挤地址空间,必然冲突。
- 重启电脑进入 BIOS。
- 找到 Above 4G Decoding (大于 4G 地址解码):设置为 Enabled。
- 找到 CSM Support (兼容性支持模块):设置为 Disabled (纯 UEFI 模式)。
- (可选) Resizable BAR:建议设为 Auto 或 Disabled(排查期可先关闭)。
原理:开启 Above 4G Decoding 后,显卡的内存映射地址会从拥挤的低位迁移到高位地址,彻底解决 request_mem_region failed。
第二步:修改 GRUB 驱逐'钉子户'驱动
为了防止内核自带的 sysfb 或 efifb 干扰显卡初始化,我们需要在内核启动参数中禁用它们。
编辑 GRUB 配置:
sudo nano /etc/default/grub
更新引导并重启前,修改 GRUB_CMDLINE_LINUX_DEFAULT 行,追加以下参数:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1 initcall_blacklist=sysfb_init video=efifb:off video=vesafb:off video=simplefb:off"
sudo update-grub && sudo reboot
第三步:安装 NVIDIA Open Kernel 驱动
由于 Ubuntu 官方源可能尚未提供最新的 590-open 版本,推荐使用 NVIDIA 官方 .run 文件进行安装。
- 下载驱动:前往 NVIDIA 官网下载适用于 Linux 64-bit 的 590.xx 或更新版本。
- 清理旧环境并停止图形界面:
sudo apt remove --purge "nvidia-*" "libnvidia-*"
sudo apt autoremove
sudo systemctl stop gdm
- 执行安装(关键参数):
必须添加
-m=kernel-open 参数,显式启用开源内核模块支持。
chmod +x NVIDIA-Linux-x86_64-590.44.01.run
sudo ./NVIDIA-Linux-x86_64-590.44.01.run -m=kernel-open
- 安装过程选项:
- Install 32-bit compatibility libraries? -> Yes
- Register with DKMS? -> Yes
- Update X configuration? -> No
4. 验证与 CUDA 环境配置
重启系统 (sudo reboot),执行以下命令验证。
1. 检查驱动状态
nvidia-smi
此时应能正确看到 RTX 5060 Ti 设备,且 Driver Version 显示为 590.xx。
[图片:驱动状态验证]
2. 配置 CUDA 环境变量
虽然驱动安装成功,但 nvcc 编译器可能还需要手动添加到 PATH。
echo 'export PATH=/usr/local/cuda-13.1/bin:$PATH' >> ~/.zshrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-13.1/lib64:$LD_LIBRARY_PATH' >> ~/.zshrc
source ~/.zshrc
验证编译器版本:
nvcc -V
3. Hello World 实测
编写一个简单的 test_cuda.cu 验证算力:
#include <stdio.h>
__global__ void helloFromGPU(){
printf("Hello World from RTX 5060 Ti thread %d!\n", threadIdx.x);
}
int main(){
helloFromGPU<<<1,5>>>();
cudaDeviceSynchronize();
return 0;
}
编译运行:
nvcc test_cuda.cu -o test_cuda && ./test_cuda
[图片:Hello World 输出截图]
总结
在 Linux 上部署 RTX 50 系列新显卡时,核心避坑点在于:
- BIOS:必须开启 Above 4G Decoding,否则内存地址冲突无解。
- 驱动架构:必须使用
-m=kernel-open 安装 Open Kernel Modules,闭源驱动已不再完美支持 Blackwell 架构。
- 内核参数:高版本内核需强力禁用
sysfb/efifb 以释放资源。