5090 GPU服务器Ubuntu驱动冲突如何解决?
新硬件配新系统,驱动永远是第一道坎。5090这张卡刚出来的时候,不少人在Ubuntu上装驱动都碰了壁。黑屏、卡日志、签名验证失败——各种状况层出不穷。我前前后后折腾了好几台5090服务器,踩过的坑不算少,今天把经验系统性地梳理一下。
先说一个核心结论:5090在Ubuntu上的驱动问题,大部分不是卡本身的问题,而是Linux内核版本、NVIDIA驱动分支、系统安全策略这三者之间的版本不匹配造成的。理解了这一点,解决问题的思路就清晰了。
冲突到底从哪来
5090作为Blackwell架构的新卡,对驱动的版本要求非常严格。实测下来,570.x版本是必须的,旧版本驱动根本不认这张卡。这是第一个硬性门槛。
第二个门槛是Linux内核版本。5090需要比较新的内核才能正常工作,具体来说,Ubuntu 24.04默认的6.8内核是不够的,需要升级到6.13或更高版本。很多人在这一步就卡住了——系统装好了,但内核太老,驱动装上去各种报错。
第三个门槛是Secure Boot。Ubuntu默认开启安全启动,而NVIDIA的闭源驱动模块没有用系统信任的密钥签名,加载时会被拒绝。这就导致一个很迷惑的现象:驱动明明装成功了,重启后nvidia-smi却找不到卡,或者直接黑屏进不了桌面。
这三个问题叠加在一起,不出问题才怪。
安装前的准备工作
在动驱动之前,先把基础环境准备好,能省掉后面90%的麻烦。
第一步是安装系统时的黑屏问题。用5090装Ubuntu 24.04时,选择“Try or Install Ubuntu”之后经常会卡在黑屏界面,停在booting command list不动。解决方法是在GRUB启动菜单中按e编辑启动参数,在linux行末尾添加nomodeset acpi=off noapic,然后按F10启动。这个参数的作用是禁用内核的图形模式切换,让安装程序能正常显示界面。
系统装好之后,第一件事是升级内核。用mainline工具安装6.13版本的内核。装完重启,uname -a确认内核版本已经更新。这一步非常关键,内核对不上,后面怎么折腾都白费。
第二步是安装编译依赖。NVIDIA驱动在安装过程中需要编译内核模块,build-essential和对应内核版本的headers缺一不可。命令如下:
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r)
第三步是处理GCC版本问题。这里有个容易忽略的坑:你的内核是用什么版本的GCC编译的,安装驱动时就应该用同样版本的GCC。我遇到过一个典型的报错:“Compiler version mismatch: Your kernel was built with GCC 14, but you are using GCC 13”。解决方法是把GCC升级到14,或者使用update-alternatives切换默认GCC版本。
驱动安装的核心步骤
准备工作做完,正式开始装驱动。
屏蔽nouveau开源驱动
Ubuntu默认加载了nouveau这个开源的NVIDIA驱动,但它和官方闭源驱动是冲突的。不屏蔽它,官方驱动装完重启后大概率黑屏。
编辑黑名单文件:
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
写入以下内容:
blacklist nouveau
options nouveau modeset=0
保存后更新initramfs并重启:
sudo update-initramfs -u
sudo reboot
重启后执行lsmod | grep nouveau,如果没有输出,说明屏蔽成功。
选择正确的驱动版本
5090需要570.x或更高版本的驱动。有两种安装方式。
方式一:使用Ubuntu的apt源。Ubuntu在2025年5月左右已经把NVIDIA 570驱动反向移植到了22.04和24.04的仓库中。可以直接用以下命令安装:
sudo apt update
sudo apt install nvidia-driver-570
但注意一点:对于Ubuntu 24.04,有用户反馈需要安装带-open后缀的版本才能正常识别5090:
sudo apt install nvidia-driver-570-server-open
方式二:从NVIDIA官网下载.run文件手动安装。这种方式更灵活,可以精确控制安装选项,但步骤多一些。下载对应版本的.run文件后,赋予执行权限并运行:
chmod +x NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run
处理Secure Boot问题
这是最常见的冲突源之一。当Secure Boot启用时,系统只允许加载经过签名的内核模块,而NVIDIA驱动模块没有使用被系统信任的密钥进行签名,会导致加载失败。
有几种解决方法。
最简单粗暴的方法是在BIOS中禁用Secure Boot。重启进入BIOS设置,找到Secure Boot选项并设为Disabled。这个方法最省事,但会降低系统安全级别。
如果不想降低安全性,可以为NVIDIA驱动创建并注册自定义密钥。步骤如下:
# 安装必要工具
sudo apt install mokutil openssl
# 创建密钥对
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=NVidia Driver Signing Key/"
sudo chmod 600 MOK.priv MOK.der
# 注册密钥到MOK
sudo mokutil --import MOK.der
系统会提示设置一个密码,记住它。重启后会进入MOK management蓝色界面,选择“Enroll MOK” → “Continue” → “Yes”,输入密码完成注册。
注册完成后,驱动模块加载时就能通过签名验证了。
安装过程中的交互选项
如果使用.run文件安装,安装过程中会遇到几个交互式问题:
第一个是“The distribution-provided pre-install script failed”,选择Continue installation即可。
第二个是DKMS注册问题,选择No。因为手动安装的场景下,DKMS自动编译后续内核版本可能会出问题,不如等需要时再手动处理。
第三个是32位兼容库,如果不需要运行32位应用,选No。
第四个是x配置自动更新,选择Yes,这样重启后X Server能正确使用NVIDIA驱动。
重启X服务
安装完成后,重启图形服务:
sudo service lightdm restart
如果使用的是gdm3或其他显示管理器,可能需要重启整个系统才能生效。
安装后的验证
驱动装完后,执行nvidia-smi。如果能看到显卡信息和驱动版本号,说明安装成功了。
如果nvidia-smi报错或者找不到设备,按以下顺序排查:
第一,检查驱动模块是否加载成功:lsmod | grep nvidia。如果没有输出,说明模块没加载上,通常是Secure Boot的问题。
第二,检查内核日志:dmesg | grep -i nvidia。如果看到“module verification failed: signature and/or required key missing”之类的信息,说明还是签名问题。
第三,如果系统能启动但图形界面卡顿,可以尝试禁用GSP(GPU System Processor)。在/etc/modprobe.d/目录下创建nvidia.conf文件,写入options nvidia NVreg_EnableGpuFirmware=0,然后update-initramfs -u并重启。
一个真实案例:PCIe兼容性问题的解决
讲一个比较典型的案例。有用户在笔记本电脑上安装5090驱动,试了所有方法都失败——用apt装驱动黑屏,用.run装也黑屏,加上nomodeset参数后系统直接冻结。
排查了很久,最后发现问题出在PCIe 5.0兼容性上。他把BIOS中的PCIe速度从Auto/5.0改为4.0,然后用NVIDIA的固件更新工具升级了GPU固件。更新完成后,再把PCIe速度改回5.0,显卡就能正常工作了。
这个案例说明了一个容易被忽视的问题:新硬件之间的磨合有时候不是驱动本身的问题,而是底层协议或固件的兼容性。遇到实在解决不了的情况,查一查显卡有没有固件更新,或者在BIOS里把PCIe降一代试试。
不同Ubuntu版本的差异
Ubuntu 22.04和24.04在5090驱动安装上还是有些区别的。
对于22.04,系统自带的ubuntu-drivers工具可能还识别不了5090,推荐使用NVIDIA官网的.run安装程序,并且建议选择开源驱动版本(MIT协议)。
对于24.04,可以用apt直接安装nvidia-driver-570-server-open这个包。注意一定要带-open后缀,否则可能出现“No devices found”的错误。
另外,24.04默认的Wayland显示服务器和NVIDIA驱动之间的兼容性还在完善中。如果遇到图形界面问题,可以切回Xorg试试。
总结
5090在Ubuntu上的驱动问题,归纳起来就几个关键点。
内核版本必须够新,6.13是最低要求。驱动版本必须570以上,低了不认卡。Secure Boot要么关掉,要么自己签个证书。nouveau必须屏蔽,不然装完黑屏。最后,如果所有方法都试了还是不行,去查查BIOS设置和固件版本,特别是PCIe相关配置。
做这些操作的时候,建议一步一步来。每次只改一个变量,装完驱动重启验证,没问题了再继续下一步。批量改完再验证,出了问题根本不知道是哪一步导致的。
另外,每次操作前把重要数据备份好。驱动折腾的过程中,进不去桌面是常有的事,有备无患。


