linux下nvidia驱动装完开不了机 ubuntu台式机安装nvidia驱动
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
写在前面:在经历了各种尝试和试错之后,发现并总结出了比较合适、安全且合理的NVIDIA驱动安装方案,本教程基于Fedora linux发行版,rhel,RockyOS等基本完全相同,deb系及其它linux发行版大同小异,本教程基于NVIDIA官方run包安装方式,尽可能把每一个过程和选择讲述清楚,请大家看完全篇再上手尝试。由于BIOS UEFI Secure Boot的存在使得安装NVIDIA driver并不是像一般的教程直接运行run包或者使用rpmfusion里的[akmod-nvidia] or [【【微信】】cuda]就行。
在linux下安装NVIDIA 驱动方法有多种多样,经过我的测试,还是官方提供的闭源驱动run包是最流畅且占用GPU资源最合理的方法,所以该教程只记录官方run包的安装方式。
如果你是个懒人,实在懒得探究run包或者使用run包安装失败了,在文章最后的最后也会给出rpm包的解决方法。
在总结这篇教程之前,我经历过无数次的失败,虽然心里非常想“F**k you ,nvidia”,但是本着独乐乐不如众乐乐的原则,还是把过程分享出来比较合适。
环境及效果展示:
Fedora37操作系统
N【【微信】】essfully.?
N【【微信】】
由于构建编译NVIDIA官方提供的run包以及需要给NVIDIA driver签名需要一些工具,所以先进行rpm包的安装。安装NVIDIA驱动属于系统级别的改动,所以以下所有的操作都需要在root下进行!
如果出现找不到任何一个rpm包的情况,请添加清华源、ustc源、阿里源等,这些并不是冷门的包。
首先要明确用的是什么显卡:
1、在neofetch那里就已经显示了当前的显卡(图片在前面)
2、使用lshw -c video查看
3、 使用lspci|grep -i vga查看
4、在系统设置中查看
进入NVIDIA官方页面下载linux版的驱动
官方驱动 | NVIDIA
根据自己的情况选择正确的NVIDIA驱动。注意如果你是笔记本显卡,可能要选notebook版本,操作系统应选择Linux。如果显卡填错了,会给出错误的显卡驱动,会影响显示效果。
其中,下载类型有生产分支和新功能分支,建议两个都试一遍然后选择版本更高的那个,一般高版本更加合适。
?下载之后会取得上图所示的一个run包,这里面装着的就是我们的NVIDIA 驱动了。文件名称中就是版本号(525)了,不同级别的NVIDIA显卡有不同有级别的驱动,不仅仅是linux版的驱动,【【微信】】版本也是同样分级。一般来说NVIDIA公司对【【微信】】版驱动比较上心,所以同样的显卡,以我的1660Ti为例,【【微信】】上官方提供的显卡驱动版本号就高一些。版本号越高,意味着显卡所能实际发挥性能就越强。所以上面强调要选择版本号更高的显卡驱动。
然后把下载下来的run包移动到root目录下。由于NVIDIA对LInux的适配力度并没有像WIndows那么大,所以基本只要下载这一次就好了,它一般不会更新,所以一次性下载好以后就不需要再访问NVDIA官网了,少“F**k you ,nvidia”一次也不错。
接下来我们要来查看自己的电脑BIOS是否开启了安全启动模式,这也是linux安装nvidia驱动里最坑人的地方。
有如下两种方式在linux系统内查看是否开启了安全启动模式。
?
?主板BIOS的安全启动情况,建议要打开它,不然的话安装NVIDIA驱动之后Fedora就不正常了。也就是要保持enable然后进Fedora,如果已经是enable那就不用调节;如果是disable,也要调成enable.
这个安全启动的意义,我会在后记那里说明一下。
在NVIDIA显卡上如果没有安装闭源驱动,那么默认使用的就是nouvea开源驱动。
nouveau只是入门级别的显卡驱动,也就是仅仅在勉强够用的水平,在这种情况下是不能完全发挥nvidia显卡的优势的。
所以我们在安装nvidia驱动之前必须禁用它,不要慌,完全没有nvidia驱动的情况下也是能进图形化界面的,只是拿CPU硬算会比较卡。
最终效果:
?在禁用模块和启动引导里同时禁用nouveau驱动。
根据/etc/default/grub的情况重新制作启动引导配置文件,然后重启
重启之后使用以上指令查看nouveau显卡驱动模块是否被加载,最后没有出现任何模块就对了!?
这里必须保证没有任何模块显示出来,如果还有那就是失败了。
我们安装的步骤从现在开始。
输入以上指令后会进入多用户界面,就是纯命令行界面。首先输入用户名,这里我们用root,然后输入密码,就以root的身份登录了。
给安装包执行权限然后执行,run包最前面是shell脚本所以直接运行就好了。我把run包的执行过程拆解一下方便大家理解。
1、运行后在命令行界面会出现.....的进度条
Uncompress NVIDIA driver 这是在解包,后面我会讲一讲解包出来的东西是什么。
2、进度条读完之后会进入NVIDIA驱动的安装界面,以蓝色调为主,看起来比较安心。
Building kernel modules 此时在构建编译NVIDIA驱动linux内核模块,所以需要“De【【微信】】”组提供gcc等编译器。编译完成后Continue。
3、提示是否要给编译好的NVIDIA 模块签名
由于签名几步比较关键,为了读者的用户体验,我把这段提示手打出来了。
The target kernel has CONFIG_MODULE_SIG set which means that it supports cryptographic signatures on kernel modules.On some systems,the kernel may refuse to load modules without a 【【微信】】rusted key.This system also has UEFI Boot enabled; many distributions enforce module signature 【【微信】】stems when Secure Boot is enabled. Would you like to sign the NVIDIA kernel module?
select:
? ? ? ? Sign the kernel module? ? ?or? ? ?Install without signing
目标内核设置了CONFIG_MODULE_SIG,这意味着它支持内核模块上的加密签名。在某些系统上,内核可能拒绝加载没有来自可信密钥的有效签名的模块。此系统还启用了UEFI引导;当启用安全引导时,许多发行版在UEFI系统上强制执行模块签名验证。是否要签署NVIDIA内核模块?
我们知道,linux是典型的模块化的宏内核操作系统,在加载安装nvidia内核模块的时候由于Uefi?Secure Boot的阻拦,我们必须给该模块签名,如果不签名则无法加载。
所以我们这里选择“Sign the kernel module”,给我们的NVIDIA内核模块签名以免被安全启动阻拦。
4、生成签名密钥
Would tou like to sign the N【【微信】】h an existing key pair,or would you like to generate a new one?
select:
? ? ? ? Use an existing key pair? ? ?or? ? ?Generate a new key pair
首次安装时务必选择“Genrate a new key pair”,它会自动生成NVIDIA模块的签名密钥,我们将来要把它交给UEFI Secure Boot审核。非首次安装的时候,也就是密钥文件以及存在的情况下,可以选择“Use an existing key pair?”,选择这个选项,它会提示你输入密钥文件存储的位置。
那么实际上我们这里的? /usr/share/nvidia/【【微信】】*.der? 就是它索要的密钥文件,首次安装的时候没有这个文件,首次安装后选择generate才生成的这个文件。
5、删除私有的签名密钥
The N【【微信】】uccessfully signed with a newly generated key pair .Would you like to delete the pri【【微信】】?
select:
? ? ? ? Yes? ? ?or? ? ?No
因为我们上面选择了生成,所以这里删除私有签名密钥就好了。
做出选择之后
An X.509 certificate containing the public signing key will be installed to /usr/share/nvidia/nvidia*.der . ..................此处省略一万字.......................
This certificate must be added to a key database which is trusted by your kernel in order for the kernel to be able to 【【微信】】ture.
select:
? ? ? ? OK
必须将此证书添加到内核信任的密钥数据库中,以便内核能够验证模块签名
根据以上提示,虽然我们一厢情愿地想安装NVIDIA驱动.但是【【微信】】和UEFI Secure Boot并不领情,不相信我们的N【【微信】】gn.没有关系,这个我们选择第一项“Install signed kernel module”就好了,具体操作我后面会讲。
这里问我们是否要安装N【【微信】】位兼容库,我们选择Yes就好。?
6、选择是否注册DKMS
?dkms我们最前面已经安装过了。
DKMs以文件的形式存储并能在系统运行过程中动态地加载和卸载。DKMs由一个用户层的DKM服务器来管理,并非由内核来管理。当核心需要某模块时,由DKM服务器负责把相应的DKM加载;当核心的内存资源紧缺时,由DKM服务器负责卸载一个没有被使用的DKM。
dkms这个工具的作用就是动态加载内核模块,在NVIDIA的提示下,它的大致作用是在你安装新的linux kernel的时候dkms会自动帮你编译安装nvidia驱动模块到你的新内核。这里可以选择Yes或者No,本人测试更新内核的时候,在新内核里并没有自动加上nvidia驱动。这里讲一下选择Yes的情况,选择No的话就直接进入下一步了。
?选择Yes后会提示错误,不要慌,虽然它是ERROR,但它并不会影响你安装NVIDIA驱动。我这里建议你把这个提示错误的界面给拍下来,等到后面我们还有用的。
?直接OK就好了,没有大碍。
7、修改X的配置文件
?选择Yes即可,让NVIDIA驱动帮你自动修改X和grub2的配置文件,就不要自己去改了。
接下来就已经退出NVIDIA驱动的安装界面了,会重新回到命令行界面,如果以上步骤和我讲述的不一样直接提示错误导致退出,可以重新运行NVIDIA驱动安装包,多次尝试。
8、安装NVIDIA驱动之后操作
这里千万不要直接重启,我们还有一些善后事宜要做的。
特别是第三步,非常重要,因为前面提示签名错误,我们这里可以手动签名,所以前面提示错误也无妨。注意:如果你没有打开安全启动,那么就不需要签名这个步骤,NVIDIA驱动也大概不会给你这个.der文件,所以直接跳过mokutil就好了。
输入的那串密码一定要记住,很快就要用到了。
?重启之后会出现如下界面,不要慌,根据它的提示按下任意键即可。不要一直停留,不然界面消失的话,我们得在linux中重复?mokutil --import /usr/share/nvidia/nvidia*.der 这个步骤然后重启。
选择“Enroll MOK”
?
选择Yes
?这里要写上刚才记录的密码。
reboot重启
重启之后就回到了熟悉的grub2的启动引导界面,然后进入Fedora,就有NVIDIA驱动了。
?
在【【微信】】输入nvidia然后两个Tab就能显示NVIDIA提供的命令了。
n【【微信】】是官方提供用来监控nvidia显卡情况的工具;n【【微信】】用来设置显卡;n【【微信】】用来卸载显卡驱动。
然后就可以开始愉快地玩耍啦。
可以看到,从开源的nouveau驱动切换到了官方闭源的nvidia驱动,显示效果会好很多很多。
前面还挖了几个坑,我们来填一下。
首先是dkms报错的问题,我前面说如果报错的话可以把报错信息给拍下来,这里说一下这个东西怎么用。
?以上是报错信息,上面给出了执行的代码和错误建议。我们安装好NVIDIA驱动之后可以根据建议再次执行这行代码。
这是我的提示代码,大家可以根据自己的报错信息去执行提示的代码。?
可以看到注册成功了,确实出现了extra目录。
大家注册dkms后可以观察一下,更新linux kernel的时候是否会自动编译安装nvidia闭源驱动的模块,如果没有自动安装也不要急。我们不需要卸载再安装nvidia驱动,只需要按照步骤再来一遍就好了,从运行run包开始。如果有水平高的小伙伴可以写一个自动编译安装nvidia驱动模块的脚本。
我们再来看看NVIDIA官方提供的run包解包出来的是什么。
实际上,-x选项可以把run包给解出来 。里面是一堆动态链接库,压缩包和可执行文件,这些就是run包的本来面目,以及安装NVIDIA闭源驱动后产生的那些以nvidia开头的命令皆来自这里。
2.1.2 ?Linux/FreeBSD Exception. ?Notwithstanding the foregoing terms of Section 2.1.1, SOFTWARE designed exclusi【【微信】】 or FreeBSD operating systems, or other operating systems deri【【微信】】 to these operating systems, may be copied and redistributed, pro【【微信】】les thereof are not modified in any way (except for unzipping of compressed files).
2.1.3 ?Limitations.
No Re【【微信】】. ?Customer may not reverse engineer, decompile, or disassemble the SOFTWARE, nor attempt in any other manner to obtain the source code.
No Separation of Components. ?The SOFTWARE is licensed as a single product. ?Its component parts may not be separated for use on more than one computer, nor otherwise used separately from the other parts.
2.1.2 Linux/FreeBSD异常。尽管有上述条款
第2.1.1节,专为Linux或
FreeBSD操作系统,或衍生自
这些操作系统的源代码可以被复制和重新分发,
前提是其二进制文件未以任何方式修改
(压缩文件解压缩除外)。
2.1.3限制。
无逆向工程。客户不得逆向工程,
反编译或反汇编软件,也不尝试任何其他
获取源代码的方式。
无部件分离。本软件作为
单一产品。其组成部分不得分开使用
在多台计算机上,也不能与
其他部分。
温馨提示:这是NVIDIA闭源驱动,里面的LICENSE也不是开源的,所以这里面的东西看可以,但不要拿去搞逆向和反编译,也不能擅自修改二进制文件,只能在官方的基础上加上自己脚本什么的方便安装或者自动安装。切记不要搞逆向,否则会涉及侵权!
N【【微信】】包的命令参数如下:
参数 | 作用 |
--info | 打印驱动程序信息 |
--check | 检查存档完整性 |
-x | 解包 |
-A | 打印常用命令行选项和高级选项的使用信息 |
--no-rpms | 取消与rpm包冲突的检查 |
--no-opengl-files | 不安装openGL相关的文件 |
--no-wine-files | 不安装wine驱动相关的文件 |
--dkms | 使用dkms |
--no-dkms | 取消dkms |
--no-check-for-alternate-installs | 跳过对备用驱动的检查 |
--no-unified-memory | 不需要CUDA |
--skip-depmod | 驱动安装后不自动运行depmod |
--no-systemd | 禁用systemd单元的安装 |
--【【微信】】-check | 不检查nouveau模块是否被加载唏嘘!网友晒GTX970到4070Ti价格变化:10年间NV涨价幅度不含糊快科技5月2日消息,一转眼过去的10年时间,显卡市场也是经历了最火爆的时光,特别是价格方面。 现在,有网友罗列了过去10年NVIDIA一些显卡的涨价过程,总结后直呼,老黄一手推高了显卡的价格,并且涨上去就降不下来了。 2014年NVIDIA推出了【【微信】】,其跟GTX 980一样,都属于GM204架构,堪称是一代神卡,上市之初国内价格是2399元。 随后,NVIDIA相继推出了【【微信】】、【【微信】】 Ti、RTX 2070、RTX 2070 Super、RTX 3070、RTX 3070Ti、RTX 4070和RTX 4070Ti,其对应的售价:3499元、3499元、3999元、3999元、3899元、4499元、4799元、6499元。 一些老玩家甚至感慨称,价格虽然是涨上去了,但是NVIDIA的刀法确实是越来越精准,真的是让人感慨万千,大家觉得呢? 版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。
|