更新: If Not True Then False提供了一份Patch后的340.108版驱动,直接使用此版驱动安装包不会遇到DKMS报错,升级5.5内核时也没有问题,点击进入下载页面。


  手头一台Dell D630的本本,虽然已经10年以上寿命,拿来折腾升级续命一番后现在的配置为:Intel Core 2 Duo T9500/PM965/4G DDR2/NVIDIA Quadro NVS 135M/1280*800/Intel 545s 256GB SSD。
现在用来装个Linux玩玩,选择的发行版是Fedora Workstation。
  此为前提。

  试过RPM Fusion里的akmod-nvidia驱动两次总有问题,第一次是每次开机都有个报错,NVIDIA X Server Settings也无法启动;第二次直接连图形界面都无法启动了。所以试着安装NVIDIA官网提供的驱动。
  老黄那里,对NVS 135M这种上古时代G86核心的显卡提供的驱动是340.xx系列,此时最新版是340.108,比RPM Fusion里的107新一点。
按照If Not True Then False上面的教程一步步来,很简单,不过2.6.4移除Nouveau驱动那步我没有做,想着留作一个备份?
  然后重启切换到runlevel 3开始安装:

sudo ./NVIDIA-Linux-x86_64-340.108.run

  这里提醒一下要把驱动安装包放在一个没有中文路径的位置,不然重启后对着一堆方块目录名傻眼吧。
  其中有一步:

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?

  询问是否要使用DKMS注册内核模块,这样更新Linux内核后会自动生成新的模块,但是选Yes后会报错:

ERROR: Failed to run '/usr/sbin/dkms build -m nvidia -v 340.108 -k 5.4.7-200.fc31.x86_64:
Kernel preparation unnecessary for this kernel. Skipping…

Building module: cleaning build area… make -j2
KERNELRELEASE=5.4.8-200.fc31.x86_64 module
KERNEL_UNAME=5.4.8-200.fc31.x86_64; make -C uvm module
KERNEL_UNAME=5.4.8-200.fc31.x86_64
KBUILD_EXTMOD=/var/lib/dkms/nvidia/340.108/build/uvm…(bad
exit status: 2) Error! Bad return status for module build on kernel:
5.4.8-200.fc31.x86_64 (x86_64) Consult /var/lib/dkms/nvidia/340.108/build/make.log for more information.

  注册失败。当时图省事,重新运行安装程序时直接选了No,顺利安装成功,可以回到GUI正常使用了。
  但是Linux升级内核也是够勤的,半个月内升级了两次,每次升级完重启就进不了GUI了,又得折腾一通(我是干脆重装NVIDIA驱动,应该有直接的方法吧?),于是决心解决这个问题。

  首先手动运行dkms:

sudo dkms build -m nvidia -v 340.108 -k $(uname -r)

  报错后打开/var/lib/dkms/nvidia/340.108/build/make.log,文件结尾有这么几行错误信息:

/var/lib/dkms/nvidia/340.108/build/uvm/nvidia_uvm_lite.c: 在文件作用域:
/var/lib/dkms/nvidia/340.108/build/uvm/nvidia_uvm_lite.c:859:14: 错误:initialization of ‘vm_fault_t (*)(struct vm_fault )’ {或称 ‘unsigned int ()(struct vm_fault )’} from incompatible pointer type ‘int ()(struct vm_area_struct *, struct vm_fault )’ [-Werror=incompatible-pointer-types]
859 | .fault = _fault,
| ^~~~~~
/var/lib/dkms/nvidia/340.108/build/uvm/nvidia_uvm_lite.c:859:14: 附注:(在‘uvmlite_vma_ops.fault’的初始化附近)
/var/lib/dkms/nvidia/340.108/build/uvm/nvidia_uvm_lite.c:889:14: 错误:initialization of ‘vm_fault_t (
)(struct vm_fault )’ {或称 ‘unsigned int ()(struct vm_fault )’} from incompatible pointer type ‘int ()(struct vm_area_struct *, struct vm_fault *)’ [-Werror=incompatible-pointer-types]
889 | .fault = _sigbus_fault,
| ^~~~~~~~~~~~~
/var/lib/dkms/nvidia/340.108/build/uvm/nvidia_uvm_lite.c:889:14: 附注:(在‘counters_vma_ops.fault’的初始化附近)
cc1:有些警告被当作是错误
make[2]: *** [scripts/Makefile.build:266:/var/lib/dkms/nvidia/340.108/build/uvm/nvidia_uvm_lite.o] 错误 1
make[1]: *** [Makefile:1652:/var/lib/dkms/nvidia/340.108/build/uvm] 错误 2
make[1]: 离开目录“/usr/src/kernels/5.4.8-200.fc31.x86_64”
NVIDIA: left KBUILD.
nvidia-uvm.ko failed to build!
make: *** [Makefile:217:nvidia-uvm.ko] 错误 1
make: 离开目录“/var/lib/dkms/nvidia/340.108/build/uvm”

  不兼容指针类型。搜索了一下,这个问题可以通过关闭警告当作错误来解决,虽然没治本,但至少标能治好。

sudo gedit /lib/modules/$(uname -r)/build/Makefile

  查找“-Werror=incompatible-pointer-types”,改为“-Wno-error=incompatible-pointer-types”。
  感谢fedora21/beta 安装bcm43142无线网卡驱动和-Werror=incompatible-pointer-types
  重新运行dkms,这次的报错信息是:

DKMS make.log for nvidia-340.108 for kernel 5.4.8-200.fc31.x86_64
(x86_64) 2020年 01月 10日 星期五 19:32:07 CST NVIDIA: calling KBUILD…
make[1]: 进入目录“/usr/src/kernels/5.4.8-200.fc31.x86_64” Makefile:882:
*** 对函数“call”的未终止的调用:遗漏“)”。 停止。 make[1]: 离开目录“/usr/src/kernels/5.4.8-200.fc31.x86_64” NVIDIA: left KBUILD.
nvidia.ko failed to build! make: *** [Makefile:197:nvidia.ko] 错误 1
make: 进入目录“/var/lib/dkms/nvidia/340.108/build/uvm” cd ./…; make
module SYSSRC=/lib/modules/5.4.8-200.fc31.x86_64/source
SYSOUT=/lib/modules/5.4.8-200.fc31.x86_64/build KBUILD_EXTMOD=./…
make[1]: 进入目录“/var/lib/dkms/nvidia/340.108/build” NVIDIA: calling
KBUILD… make[2]: 进入目录“/usr/src/kernels/5.4.8-200.fc31.x86_64”
Makefile:882: *** 对函数“call”的未终止的调用:遗漏“)”。 停止。 make[2]:
离开目录“/usr/src/kernels/5.4.8-200.fc31.x86_64” NVIDIA: left KBUILD.
nvidia.ko failed to build! make[1]: *** [Makefile:197:nvidia.ko] 错误 1
make[1]: 离开目录“/var/lib/dkms/nvidia/340.108/build” make: ***
[Makefile:221:…/Module.symvers] 错误 2 make:
离开目录“/var/lib/dkms/nvidia/340.108/build/uvm”

  这个就有点滑稽了。

sudo gedit /usr/src/kernels/$(uname -r)/Makefile

  定位到882行下面,补全缺失的反括号。
  不知怎么会出现这个BUG,不过解决了就行。
  接下来运行dkms就OK了,返回success。
  输入

dkms status

  也可以看到

nvidia, 340.108, 5.4.8-200.fc31.x86_64, x86_64: installed

  重新安装一遍NVIDIA驱动,这次在DKMS那里选Yes也能正常完成,大功告成,以后升级内核时应该不用再操心显卡驱动的问题了。

解决一例Fedora 31安装NVIDIA官方驱动程序无法使用DKMS注册的问题相关推荐

  1. Fedora 17安装NVIDIA显卡驱动

    最近自己的笔记本安装了Fedora 17,一直想玩3D桌面,但是3D桌面又要安装显卡驱动,结果就卡在这儿了,从网上找了一篇文章,写的不错!在此分享一下 原文地址:http://www.if-not-t ...

  2. 18 linux mint 驱动_Linux Mint 18.2双显卡之安装NVIDIA官方闭源驱动

    NVIDIA 系统:Linux Mint 18.2 Cinnamon 64-bit 硬件:GeForce GT 425M Linux Mint的安装步骤,和Ubuntu一样,网上教程比较多,这里略过 ...

  3. Fedora 31安装音频视频解码器的方法

    Fedora 31安装音频视频解码器的方法分为两步: 一.安装RPMFusion源 dnf install https://download1.rpmfusion.org/free/fedora/rp ...

  4. 【NVIDIA】ubuntu桌面版安装nvidia显卡驱动程序

    [NVIDIA]ubuntu桌面版安装nvidia显卡驱动程序 1.背景 2.安装步骤 1.背景 nvidia显卡驱动安装一般来说,在桌面版系统安装比服务器版系统更麻烦一些. 其中CentOS-8桌面 ...

  5. ubuntu安装nvidia官方驱动(安装CUDA7.5之后,找不到TITAN显卡的解决方法)

    由于cuda7.5中自带的Nvidia驱动是老版本,安装之后将会使得系统无法找到独立显卡(TITAN),可以通过以下方法安装Nvidia驱动: 1. 下载最新版的nVidia驱动,命名为NVIDIA. ...

  6. 在Fedora上安装NVIDIA驱动详细教程及解析

    写在前面:在经历了各种尝试和试错之后,发现并总结出了比较合适.安全且合理的NVIDIA驱动安装方案,本教程基于Fedora linux发行版,rhel,RockyOS等基本完全相同,deb系及其它li ...

  7. centos打显卡驱动命令_在Linux系统下安装Nvidia官方显卡驱动的方法

    一.安装Nvidia驱动步骤: 1.到NV官网:http://www.nvidia.cn/Download/index.aspx?lang=cn 下载295.59版本Linux驱动.得到一个以.run ...

  8. linux nvidia驱动安装rpm,Fedora 下安装NVIDIA显卡驱动

    rpmfusion安装法: 相对于ATi,在Linux下安装NVIDIA就简单得多.只需要一个命令即可完成驱动的安装: 首先要确保你已经添加rpmfusion的源,如果你不能确认你可以安装输入此命令添 ...

  9. Kali linux安装Nvidia官方显卡驱动的心灵路程

    Kali安装Nvidia显卡驱动 Kali系统安装好后先看硬件,发现显卡驱动是一个名字叫nouveau的开源驱动,实际使用起来发现偶尔都会有鼠标延迟的情况,于是决定安装Nvidia的官方驱动,从此就走 ...

  10. Fedora 31安装网易云音乐

    0.系统 1.获取软件包 此处可以到网易云音乐的官网去获取deb包,或者我已经对软件包中要用到的部分(data.tar.xz)进行了上传,链接为https://download.csdn.net/do ...

最新文章

  1. Hybrid assembly with long and short reads improves discovery of gene family expansions
  2. 综合布线施工中的不规范现象
  3. 一款美轮美奂的JavaScript 小项目
  4. Java项目实例教程详细
  5. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
  6. 建造者模式源码解析(jdk-guava+mybatis)
  7. ElasticSearch插件demo
  8. 【转】设备数据通过Azure Functions 推送到 Power BI 数据大屏进行展示
  9. navicat 将自增长字段重置(重新从1开始)的方法
  10. 2021李宏毅机器学习课程笔记——Domain Adaptation
  11. thinkphp5.0连接mysql_thinkphp5.0数据库操作
  12. 数据结构与算法 | Leetcode 19. Remove Nth Node From End of List
  13. 耐驰测试仪上的软件,Proteus
  14. 服务器系统2008r2网卡驱动,防吞Win 7/xp/10/server2008 r2网络驱动(网卡驱动)
  15. 深圳计算机学校排名2015年,2015深圳各区初中最新排名,10各区学校都有
  16. 数据结构——二叉树总结
  17. Jmeter测试数据怎么保存
  18. 2021年危险化学品经营单位安全管理人员模拟试题及危险化学品经营单位安全管理人员实操考试视频
  19. IT痴汉的工作现状33-HTML5的春天是原生App的冬天?
  20. 现代密码学期末复习总结(个人整理自存)

热门文章

  1. 一键开关机电路(不错)
  2. python中卡方检验_python 使用卡方检验
  3. 从JavaScript单例模式到Vuex中store
  4. 【转载】批量维护(创建/修改)客户主数据函数 SD_CUSTOMER_MAINTAIN_ALL BP自定义屏幕 数据维护
  5. python 识别二维码内容
  6. centos6.5重置密码
  7. AVFoundation音视频采集(三)
  8. 模拟科目二侧方位停车训练
  9. 续流二极管作用及工作原理
  10. 学硕与专硕 计算机,2019计算机考研选学硕还是专硕?