无法初始化 NVIDIA 内核模块

无法初始化 NVIDIA 内核模块

我正在运行 XUbuntu 16.04,配有 Nvidia 1080ti 和 4 台显示器。我使用 xrandr 脚本在其中 3 台显示器之间切换,以便工作,第 4 台显示器是电视。

昨天,在执行此脚本时,系统不知何故崩溃了,当时正在运行一个 GPU 密集型后台任务。我运行了脚本,3 个显示器变黑了,但第 4 个显示器从未收到信号。我无法再获得显示输出,不得不关闭系统电源。我认为崩溃不仅仅是显示系统,因为音乐也停止播放了。

今天我发现 nvidia 内核模块似乎不再加载。1080p 电视在 1080p 下仍能获得不错的输出,但其他 3 个显示器(通过 DisplayPort 为 1440p)的分辨率仅为 640x480。我也无法一次启用多个显示器。

我在 /var/log/Xorg.0.log 中发现了“无法初始化 NVIDIA 内核模块,请参阅系统内核日志以了解更多错误消息”的消息

/var/log/kern.log 中显示“nvidia:版本魔法‘4.4.0-139-generic SMP mod_unload modversions’应为‘4.4.0-139-generic SMP mod_unload modversions retpoline’,记录器在系统启动时可能出现几十次。

Googe 对这些信息没有提供任何帮助。

我尝试使用 software-properties-gtk --open-tab=4 选择各种驱动程序版本、nvidia 以及标准 ubuntu 驱动程序。但都没有任何区别,问题仍然存在。

我也尝试清除所有 nvidia 驱动程序,但这也没有明显的效果。

我还以为这可能是我的 xorg.conf 或 Monitors.xml 的一些问题,但这两个文件似乎都不存在。不确定它们是否应该存在。

我有一个 Windows 7 双启动,没有出现任何问题,除了不知何故我没有获得 144hz 中心显示器的完整 144hz,而只有 85。不过我怀疑这无关紧要,因为这种情况已经持续了几个星期。这可能是由 Windows 上的图形驱动程序更新引起的,我太懒了,没有修复它,因为我最近没怎么玩。

我该如何修复这个问题?我不知道该怎么做。

编辑:我找到了一些有关 redpotline 的信息。显然,对于其他人来说,这是一个由非标准 GCC 版本引起的问题。我也有这个。但是我已经用了几个月了,没有出现任何问题。我还尝试通过 update-alternative 返回到较旧的 gcc,并在其处于活动状态时重新安装各种驱动程序,但没有成功。

编辑 2:彻底清除 nvidia 驱动程序后,我得到了新的驱动程序,日志中没有错误消息,但可用的屏幕分辨率仍为 640x480 和单个屏幕。不确定驱动程序是否已经过时,无法做更多事情,日志中列出的支持卡都是老旧的,以 Gefore 8 结尾。

我在内核日志中发现了一个堆栈跟踪,它正好出现在我的显示器切换脚本崩溃的时间附近,它说了一些关于 nvidia 和获取自旋锁的事情。也许由于当时 GPU 负载过高,发生了某种死锁或超时。不过这很奇怪,我以前在 GPU 负载为 100% 时切换过显示器,从来没有遇到过问题。

答案1

我已经修复了。毕竟是错误的 gcc 版本。我第一次尝试用这种方式解决问题时使用了系统上最老的 gcc 4.9,即“自动”选项。但不知何故,它并没有将 retpotline 标志添加到驱动程序中。我再次尝试使用 gcc 5.4,成功了。

因此,如果您在日志中发现 retpotline 东西,请确保仅在切换到“正确”的 gcc 版本时安装驱动程序,对我来说,该版本是 gcc (Ubuntu 5.4.0-ubuntu1-16.04.10) 5.4.0 20160609

现在悬而未决的问题仍然是,为什么崩溃会导致我的驱动程序重新编译。我不知道这是怎么发生的,但事实是日志条目中的时间看起来很像发生的事情。或者之前有什么东西以某种方式重新编译了驱动程序,崩溃就是由此引起的。系统之前已经连续运行了 6 天,也许在我不注意的时候,某种自动更新启动了。

相关内容