Ubuntu--NVIDIA显卡驱动与内核自带显卡驱动冲突导致黑屏
新安装的ubuntu系统是使用nouveau驱动nvidia显卡的,最简单且方便的安装NVIDIA显卡驱动的方式是:通过软件更新界面自动安装推荐的nvidia驱动就会自动禁止nouveau驱动开机运行。
黑屏问题:
ubuntu24.04在nvidia官网下载驱动并手动安装导致黑屏或卡在ubuntu转圈圈logo。问题产生的原因是NVIDIA显卡驱动没安装成功,且系统自带显卡驱动nouveau被禁用了,导致没有显卡驱动能用。
- 正常启动流程:
ubuntu系统上电后初始化,启动Linux内核(此时加载nouveau驱动或BIOS自带显示),再加载显卡驱动
nouveau驱动是ubuntu开源的nvidia非官方驱动,与nvidia驱动有冲突,不能同时打开,所以选择禁用nouveau驱动,使用BIOS自带显示。 - nouveau显卡驱动
nouveau是一个由爱好者组织的针对NVIDIA显卡开发的第三方开源3D驱动的共同项目,并且nouveau是在完全没有得到NVIDIA任何支持的情况下进行开发的,与NVIDIA驱动存在冲突,并且会影响GPU运行的可靠性,建议使用NVIDIA GPU前先禁用该驱动。
在OS命令行中执行lsmod | grep -i nouveau查看nouveau驱动是否已被加载,如果未被加载,请跳过此节。如回复中存在nouveau,则说明nouveau驱动已被加载,否则说明nouveau驱动未被加载。
先通过进行不带界面的tty命令行模式进入ubuntu,将nouveau驱动解除禁用。这部分博客比较多,不在此展开。有界面后再进行以下操作,或者直接在tty模式下进行以下操作。
解决方案:
解决方案1(可以显示,但是用核显驱动显示不是最好的):
通过设置使用核显驱动屏幕显示,nvidia显卡用于计算。Inter的核显驱动和Nvidia的驱动不会有冲突,都同时运行。
解决方案2(最终解决思路):
- nvidia-xconfig 是只为英伟达的显卡设置 xorg 配置文件,在核显+独显的电脑上,这个配置文件是无效的。于是就会出现登陆后直接卡住的问题
- 在没有 xorg.conf 的情况下,X server 会检测系统状态并且自动生成配置。但是自动生成的配置把独显的驱动检测成了 nouveau(nvidia 驱动安装中禁用掉的系统自带的nouveau驱动)。于是在这种情况下,如果使用了 prime-select 把默认显卡设置成了独显,系统会因为找不到驱动而一直启动失败,此时会造成循环登陆。
步骤:
# 终端执行
sudo nvidia-xconfig
# 此时会在/etc/X11中生成xorg.conf文件,打开进行编辑 --20230704 删除了这个文件还是可以进入图形界面
sudo gedit /etc/X11/xorg.conf
将其替换为以下内容,手动在 nvidia-xconfig 生成的文件中添加对 intel 显卡的支持
最终解决方法:更改xorg.conf(Xorg的配置文件)注意这个Intel驱动的命名必须是modesetting
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "NVIDIA GeForce RTX4050"
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "intel"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
成功解决了,安装nvidia驱动黑屏、卡屏问题。
参考博客:https://blog.csdn.net/cwg213_code/article/details/131395846
nvidia显卡驱动安装方法有三种:
1.先检查显卡型号
lspci | grep -i nvidia
65:00.0 VGA compatible controller: NVIDIA Corporation AD102 [GeForce RTX 4090] (rev a1)
65:00.1 Audio device: NVIDIA Corporation AD102 High Definition Audio Controller (rev a1)
2. 更新系统
确保系统已更新到最新版本,以便安装过程中不会出现兼容性问题。在终端中运行:
sudo apt update
sudo apt upgrade
一、ubuntu自带的“软件和更新”中安装(推荐)
1、先查找并安装推荐的驱动版本(标注为 “recommended”)(最好安装方法,不会有冲突)
输入命令行:ubuntu-drivers devices
== /sys/devices/pci0000:64/0000:64:00.0/0000:65:00.0 ==
modalias : pci:v000010DEd00002684sv00001462sd00005103bc03sc00i00
vendor : NVIDIA Corporation
model : AD102 [GeForce RTX 4050]
driver : nvidia-driver-570-open - third-party non-free
driver : nvidia-driver-560-open - third-party non-free
driver : nvidia-driver-550-open - third-party non-free
driver : nvidia-driver-545-open - third-party non-free
driver : nvidia-driver-545 - third-party non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-565-open - third-party non-free
driver : nvidia-driver-535 - third-party non-free
driver : nvidia-driver-570-server - distro non-free
driver : nvidia-driver-560 - third-party non-free
driver : nvidia-driver-550 - third-party non-free
driver : nvidia-driver-565 - third-party non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-570 - third-party non-free recommended
driver : nvidia-driver-570-server-open - distro non-free
driver : nvidia-driver-535-open - third-party non-free
driver : xserver-xorg-video-nouveau - distro free builtin
安装推荐的驱动版本(不带后缀的版本)。
版本特性:
-
a. -server:为服务器/数据中心优化,侧重长期稳定性和计算任务(如CUDA),但可能缺少图形功能更新。-server 和 -open的区别:
b. -open:使用开源内核模块,适合新版Linux内核或对开源兼容性有要求的系统,但稳定性可能略低于标准闭源驱动。
c. 标准驱动(无后缀):闭源全功能版,桌面用户首选,兼容性和性能更均衡。
二、使用PPA安装(次推荐)
2.1.1. 添加NVIDIA驱动PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
2.1.2. 查找并安装推荐的驱动版本(标注为 “recommended”)
使用以下命令列出可用的NVIDIA驱动版本和推荐的版本(标注为 “recommended”):
ubuntu-drivers devices
选择recommended版本型号,并且选是无后缀的版本。
选择版本安装
sudo apt install nvidia-driver-570
2.1.3. 重启系统
安装完成后,重启计算机以使新的NVIDIA驱动生效:
sudo reboot
2.1.4. 验证驱动安装
重启后,通过运行以下命令来验证NVIDIA驱动是否已成功安装:
nvidia-smi
nvidia-smi
Tue Mar 18 01:34:14 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.15 Driver Version: 570.86.15 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| 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 GeForce RTX 4090 Off | 00000000:65:00.0 Off | Off |
| 31% 27C P0 58W / 450W | 1MiB / 24564MiB | 3% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
三、手动下载手动安装(不推荐容易黑屏)
3.2.1. 下载NVIDIA驱动
同上ubuntu-drivers devices找到系统推荐的版本号。
官网下载链接:NVIDIA 驱动程序下载,是.run文件,下载到英文目录下,如:/home/ben/download,因为后面在命令行模式下中文会乱码。
3.2.2. 禁用nouveau驱动(如果已安装)
nouveau是Ubuntu自带的开源显卡驱动(与nvidia驱动不能同时运行),可能与NVIDIA驱动冲突。您需要禁用它。打开/etc/modprobe.d/blacklist.conf文件,并添加以下行:
sudo vim /etc/modprobe.d/blacklist.conf
# 在文件最后插入以下内容,将nouveau加入黑名单,默认不开启
blacklist nouveau
options nouveau modeset=0
# 使禁用生效然后重启
sudo update-initramfs -u
sudo reboot
# 重启后验证:如果回车后无反应无输出,则禁用成功
lsmod | grep nouveau
lsmod | grep nvidia #此时会有输出
※手动安装nvidia驱动需要关闭BIOS的Secure Boot,不然会容易安装失败,导致黑屏。
因为后面需要卸载显示驱动所以切换到无图形界面(命令行界面)的tty模式下进行。 按Ctrl + Alt + F2~F6,一般F1是当前图形界面,按F2就行
或者用命令从界面进入tty命令行 sudo telinit 3
tty模式下输入:login是用户名,password是不可见密码。
其他命令操作和终端的一样。
3.2.3. tty下卸载旧驱动(如果已安装)
先停止图形显示管理器
#先确定一下使用的是gdm3还是lightdm显示管理系统
sudo systemctl status gdm3
sudo systemctl status lightdm
#看看哪个是激活状态就知道,然后停掉那个,或者都stop一次
sudo systemctl stop gdm3
sudo systemctl stop lightdm
卸载nvidia显示驱动
# ppa源文件卸载(方式1)
sudo apt-get remove --purge nvidia*
sudo apt autoremove
# runfile源文件卸载(方式2)
sudo ./NVIDIA-Linux-x86_64-384.59.run --uninstall
# 或
nvidia-uninstall
给驱动文件权限并安装
sudo chmod +x NVIDIA-Linux-x86_64-570.120.run
sudo ./NVIDIA-Linux-x86_64-570.120.run -no-x-check -no-nouveau-check -no-opengl-files
#-no-x-check:安装驱动时关闭X服务
#-no-nouveau-check:安装驱动时禁用nouveau
#-no-opengl-files:只安装驱动文件,不安装OpenGL文件
安装过程中会进入一个交互式界面,按键盘的左右箭头选择相应选项,按回车键确认。
在前两个界面中,选择 Continue Installation(继续安装)。
之后,系统会进行内核构建,稍等片刻。
Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?
选择 No 继续。选择yes说可以随版本自动更新显卡驱动,但没成功过。
接下来,系统会询问是否需要内核签名。此时,选择Install without signing。开启secure boot时才需要sign the kernel module,并且需要生成密钥和公钥等一堆操作,所以直接关闭secure boot,选without signing
注意:如果出现以下提示,说明由于系统的 BIOS 启用了 Secure Boot,这可能会导致内核加载失败。此时,您需要进入 BIOS 设置中禁用 Secure Boot。
有时候会问你要不要安装32位的库,我一般都选择安装(为啥不装嘞,除非空间不够吧)。下图是运气不好,装不上32位的库 ,都行
安装完成后,系统会询问是否需要安装 nvidia-x-config,该工具会提供一个图形界面的显卡管理工具。建议选择 Yes 进行安装。
重启后,使用以下命令检查显卡状态:
# 加载驱动(可能需要)
sudo modprobe nvidia
# 查看驱动
nvidia-smi
如果能够成功显示显卡状态,则说明驱动安装成功!
安装完成后,重启系统:
sudo reboot
[可选] 禁用内核更新:
我理解的安装显卡驱动的过程,会将你安装的显卡驱动跟当前使用的内核进行绑定。如果后续更新内核并重启系统,之前安装的显卡驱动就会识别不到导致无法进入图形界面,需要通过到命令行界面or以save mode启动系统,然后重装显卡驱动
所以为了省事,我都直接禁止更新内核:
# 查看当前已安装内核
dpkg --get-selections | grep linux-image
linux-image-5.15.0-67-generic install
linux-image-5.15.0-76-generic install
linux-image-generic-hwe-20.04 install
# 保持当前内核
sudo apt-mark hold linux-image-generic linux-headers-generic
# 解除保持
sudo apt-mark unhold linux-image-generic linux-headers-generic