admin 管理员组

文章数量: 887021

一、前言

先上图:

原视频链接:这里     CSDN可能无缘无故让链接失效 ,下面手动放个链接。图片不想打码的,但是不打码CSDN显示违规。

https://www.bilibili/video/BV1EE411Z7J2/?share_source=copy_web&vd_source=6d8c91561a34d72b6b7602496a5a062e

二、本文解决的问题

        如果你为ubuntu系统安装nvidia驱动,看过无数篇文章,试过各种解决方法,安装过各种版本,但是依然以开机黑屏结尾,可是你就是偏偏要为ubuntu系统装上nvidia驱动,那么这篇文章值得你看看。

三、思路

        笔者安装nvidia驱动是因为需要跑深度学习,但是一旦安装上nvidia驱动之后,重启开机,ubuntu就无法进入图形化界面,具体情况如下:

其实这里已经进入了ubuntu系统,只是没法加载图形化界面,因为NVIDIA 显卡驱动带来的一系列和 GNOME、LightDM 等桌面环境不适配、不兼容。有没有一种方法,可以让nvidia加速图形处理,但是不让nvidia显卡作为图形化界面显示呢?答案是肯定的!就是让集显作为图形化显示界面,而nvidia显卡仅仅当作计算(CUDA)设备。这样既能进入图形化界面,又能使用gpu加速深度学习。

四、本文环境

这里指明本文解决问题的环境。

        安装了windows11和ubuntu双系统的笔记本电脑

        电脑具有集成显卡Intel和单显Nvidia显卡

        ubuntu版本:Ubuntu 18.04.6 LTS(LTS:Long-Term Support长期支持版本)

        nvidia显卡型号:GeForce RTX 3050 Mobile

        如果你的笔记本电脑没有独立显卡,或者独显是A卡,或者你的ubuntu是装在虚拟机里面的,或者你根本连驱动都装不上(装上是指黑屏进入tty模式,登陆之后输入nvidia-smi有输出)那么,这篇文章不适合你。如果ubuntu版本不是18.04,诸如2004版本的,个人觉得问题不大,建议尝试一下。!!!2023.11.29重要更新:20.04版本的看文章最后一部分!!!就算你是Ubuntu18版本的,也先别着急看下面的解决方法,直接去看文章最后一部分!直接去看文章最后一部分!直接去看文章最后一部分!

        

        本文只适用于可以成功安装nvidia驱动,但是进不去图形化界面。

五、准备

        不清楚你看到这篇文章的时候,是否还能进入ubuntu系统桌面。不管能不能,都建议把之前安装过的nvidia驱动完全卸载干净。

        如果不是黑屏的,直接打开终端输入卸载命令;

        如果你是黑屏,先进入tty模式:Ctrl + Alt + Fn2(Fn3-Fn6都行)登陆之后输入卸载命令。

        (关于tty模式:Ubuntu的TTY界面是纯文本串行终端,通常用作访问计算机以修复内容的方式登录。它没有实际登录到可能的图像界面,而是通过按Ctrl + Alt + F1-F6键来进入。TTY一般为tty1-tty6,可以通过按ctrl +alt + F1- F6实现。在TTY中,用户可以控制程序,杀死进程,完成在terminal上完成的大部分命令。)

通过apt命令安装的驱动卸载

# 卸载驱动
sudo apt-get --purge remove nvidia*
sudo apt autoremove
# 完全删除驱动
sudo apt-get --purge remove "*nvidia*"

通过手动执行.run文件安装的:

sudo ./显卡驱动包名称 --uninstall
# 比如 sudo ./NVIDIA-Linux-x86_64-430.26.run --uninstall
# 有空格的地方不要露

如果你是黑屏的,将所有驱动卸载完之后,执行sudo reboot 按理就能着正常进入桌面了。

六、解决方案:

1.apt方式安装nvidia显卡驱动

终端输入:

ubuntu-drivers devices

选择带有recommended的版本,我的输出是这样

于是选择470版本的。安装前先更新一下软件包:

sudo apt update
# 这个命令会更新本地软件包列表,以获取最新的软件包信息

sudo apt upgrade
# 然后,你可以使用以下命令来升级已安装的软件包到最新版本:

然后安装对应版本的驱动

# sudo apt install nvidia-driver-版本号
# 如果你想安装版本号为 470 的驱动,可以使用以下命令:

sudo apt install nvidia-driver-470

装完之后先别重启!这时候重启开机还是进入不了图形界面。

检查一下是否安装成功:输入命令

nvidia-smi

这个时候系统可能还没有检测到nvidia驱动,会出现下面这样的问题:

NVIDIA_SMI has failed because it couldn’t communicate with the NVIDIA driver.

运行下面命令:

sudo modprobe nvidia

# 用于加载和卸载NVIDIA设备驱动程序。nvidia-modprobe的作用是
# 加载或卸载用于支持NVIDIA GPU的内核模块。通过执行nvidia-modprobe命令,
# 系统会加载与NVIDIA GPU相关的内核模块,使得系统能够正常识别和使用NVIDIA GPU。

然后再重新执行:nvidia-smi,因该就有如下显示了:

到此,我们成功安装了nvidia驱动,这只是成功的第一步,相信大多数读者都可以安装成功,但就是重新启动的时候,会黑屏。

后话:发现apt命令安装起来比手动安装快多了,不用禁用nouveau、不用先关闭图形界面啥的。

2.查看当前电脑显卡

打开终端,输入命令:

lspci | grep VGA

输入结果如下:

00:02.0 VGA compatible controller: Intel Corporation TigerLake-H GT1 [UHD Graphics] (rev 01)
01:00.0 VGA compatible controller: NVIDIA Corporation GA107M [GeForce RTX 3050 Mobile] (rev a1)

上面一行输出的是Intel核显,下面一行输出的是nvidia单显,每行前面的是BusId,需要记住,后面要用到。Intel的id 写成:"PCI:0:2:0"

3.修改 Xorg 配置文件指定 Intel 核显来做图形化界面的显示设备

这一步是最重要的一步。也是关键所在。

执行命令:

sudo nano /etc/X11/xorg.conf

创建了该文件,同时往里面写配置信息:

Section "Module"
        Load "modesetting"
EndSection

Section "Device"
        Identifier      "Device1"
        Driver          "modesetting"
        VendorName      "Intel Corporation"
        BusID           "PCI:0:2:0"
EndSection

没有安装nano的需要先安装一下nano编辑器:


# 输入以下命令以更新软件包列表:
sudo apt-get update。
# 输入以下命令以安装nano文本编辑器:
sudo apt-get install nano。

# 安装完成后,您可以在终端中输入“nano”来启动编辑器,或者使用以下命令
# 指定要编辑的文件名:nano /path/to/file。
# 按下Ctrl+X键退出nano编辑器,然后按下Y键保存更改,或按下N键放弃更改并退出编辑器。
解释一下上面的配置信息:

这段配置是 Xorg 服务器的配置文件,用于配置图形显示的相关设置。

1. Section Module这个部分指定了 Xorg 服务器要加载的模块。

   modesetting 模块是用于支持基于内核模式设置的 Xorg 驱动程序的模块。它通常用于支持集成显卡和一些较新的独立显卡。

2. Section Device
   这个部分定义了一个设备配置块,用于配置与图形设备相关的设置。
    
Identifier 指定了这个设备配置块的标识符,这里是 "Device1"。
   
 Driver "modesetting" 指定了使用 `modesetting` 驱动程序来驱动这个设备。
   
VendorName "Intel Corporation" 指定了设备的制造商,这里是 "Intel Corporation",表明这是一个英特尔集成显卡。
 
 BusID "PCI:0:2:0" 指定了设备的总线地址,这里是 "PCI:0:2:0",用于唯一标识设备的物理位置。

综合起来,这段配置表明 Xorg 服务器将使用 `modesetting` 驱动程序来驱动一个标识为 "Device1" 的设备,该设备是一个由英特尔制造的集成显卡,总线地址为 "PCI:0:2:0"。这种配置通常用于支持基于内核模式设置的图形设备,例如一些集成显卡和一些较新的独立显卡。

BusID换成第一步自己得到的BusId。有的文章还需要配置别的信息,但是笔者配置这一个就足够了。

配置完成保存即可,最好再打开看看,确保写入内容有效。作者的效果如下:

4.重启电脑

重启电脑,此时应该在原先黑屏的地方停留一秒左右就可以进入ubuntu桌面了。此时再输入nvidia-smi命令,正常显示。最后可以安装一个nvidia-settings,方便管理nvidia显卡。

七、其他命令

查看显卡型号 lspci | grep -i nvidia
查看驱动的版本ubuntu-drivers device
检查nouveau是否被禁用lsmod | grep nouveau
查看当前显卡的使用模式apt install nvidia-prime
prime-select query
检验使用的是哪个驱动
(哪个有输出就是哪个)
lsmod | grep nvidia
lsmod | grep nouveau
安装小火车sudo apt-get install sl
运行小火车sl

八、参考文章

感谢知乎用户“埃苯泽”提供的思路,文章链接

九、发发牢骚

        写下这篇博客时,刚刚把Nvidia驱动安装好。10.14开始装双系统,现在是11.14,整整一个多月,英伟达苦人久矣!这个过程我重装了至少6次Ubuntu系统,刚开始的那个周末,两天时间什么也没干,晚上一直调试到两三点。中间的过程我甚至不想装了,大不了就用cpu跑,再不行就用云平台,一个小时也就一两块。后来看到cpu可能要跑几个小时的,而gpu有用跑几分钟;云平台我也没接触过。装不上属于自己的驱动,心里有块石头一直悬着。所以,在第一周重装了好几次之后,这一个月中,我还是有事没事就看看关于Ubuntu安装的nvidia驱动的帖子,这次其实是我最后的尝试了,如果还不行,那就不装N卡驱动了。为了这个问题,耽误了这么长时间,该及时止损了。

        如果在前两年,被一个问题折磨这么久,心态早就爆炸了。记得刚进入大二时,myeclipse和jdk冲突,最后解决它不到用了一个下午,但那几个小时内,确实心急火燎。如今,经历不少次配环境之后,对这类问题已经产生了些许免疫。不会这么简单就让我破防。
        linux为什么和Nvidia兼容这么差?如果Ubuntu只用来开发和学习,无论是Intel的核卡、AIT的显卡,还是Nvidia的显卡,Ubuntu默认的显卡驱动足以支持使用。但是像视频剪辑、3D游戏、深度学习等等,Nvidia的显卡驱动直接决定了它们的效果和工作效率。所以这也是为什么需要安装合适的驱动。在开源显卡驱动中,Intel的核卡早就将开源集成到了linux内核,而ATI显卡开源和闭源驱动差别都不大。唯独Nvidia,如果只使用linux的开源驱动Nouveau,没法使用N卡的全部功能。黄老板不愿意将技术开源(2022年5月为linux开源了部分),作为开源界鼻祖的林大神, 又不喜欢让闭源软件进入他们的内核,所以此时需要另外安装N卡驱动。

        这次的经历,也给了我一些教训。因为一直装不上驱动,中间有段时间开始病急乱投医了,只要看到黑屏有关解决方法,就全部试一遍,什么禁止linux内核更新,修改grub文件,还有啥root文件里改什么东西,导致ubuntu甚至连tty模式都进不去。网上关于某一问题的帖子实在太多,网友在看的时候,最好仔细甄别一下,不要轻易地去照着别人的做,每个问题都有独特之处,别人能解决的,到你这里不但解决不了可能还会把问题加重。另外,文章的评论也很重要,实操之前也多看看评论。

        希望这些可以给你一些帮助,如果一直解决不了,不要太纠结,及时止损。

 十、Ubuntu20.04LTS版本安装英伟达驱动

        如果你的18.04版本一直装驱动黑屏,你也没有非18版本不用的理由,强烈建议丢弃18版本的,使用20版本的。

介绍一下笔者的情况,在折腾了一个月的时间,终于把ubuntu的N卡驱动装好,开始进行深度学习了。结果配完深度学习环境之后,发现内存要满了。(口吐芬芳)

(这里提一下具体情况,笔者一共分了100G给Ubuntu18.04,根挂载点 \ 分了30G,\home 分了50G,其他的是引导区和swap分区。网上有的教程纯纯坑人,根挂载点 \  竟然才说分30G,如果你要是分了30G甚至更少,装好一些环境 pytorch 、cuda 、cudnn 、anaconda ,再来个qq或者pycharm,会发现你的根挂载点就要满了。)

因为笔者的ubuntu18快满了,就打算再装个Ubuntu20.04LTS。装好之后,竟然不需要改任何文件,就能直接把nvidia驱动装好!!!虽然不是完全顺利,但是相比给Ubuntu18.04装,简直太简单了。下面是安装的注意事项和笔者踩过的坑。

1.安装官方显卡驱动源

sudo apt-get-respository ppa:graphics-drivers/ppa -y

        这一步很重要,这是Ubuntn官方维护的显卡驱动软件源,比自带的版本更新,兼容性也更强。装完之后,终端输入:

ubuntu-drivers devices

        显示如下:

这里选择版本也有坑。不要选择带open的,open表示开源的,兼容性根本不好。我装了两个open版本的都不行。不要安装最新版本的。笔者最开始安装的是545-open版本的,安装成功之后,一次开机成功,查看设置,确实都换成了N卡驱动,但是在使用的时候有BUG,每次开机用大概四五分钟,屏幕就突然卡住,鼠标动不了,按任何键都没有响应,紧接着,风扇就开始呼呼地转,要是一直等的话,它就一直转,只能强制关机,最新版的稳定性也是不行的。卸载了545之后,重新安装了535-open版,为什么又选择open版,因为觉得开源的可能好一点,但是实践证明,根本大错特错!装了535-open回到了老问题,开机黑屏。于是我又卸载了重装535不带open的,装上之后,正常使用,没有出现问题。

2.多试几个版本

        因为电脑配置不同,也有可能你试完上面方法之后,依然不行,建议你再多试试其他的版本!总能成功的。

3.为什么要选择Ubuntu20.04?

        相比18版本的,就个人而言,体会如下:笔记本电脑的触摸板卡可以用了,Ubuntu18.04下,触摸板是用不了的;界面更现代化,从18的桌面到20的桌面,感觉明显不一样,光是清晰度就高了许多,18版本的像是复古版。此外,18.04不再维护了,自带的g++,gcc编译器还都是7.50版本的,还得手动更新成9版本。总之,20版本就是比18版本好多了。而且已经发行3年了,稳定性也很有保证。

本文标签: 黑屏 Ubuntu Nvidia