内核更新 3.13.0-143-generic Ubuntu 14.04 后登录循环

内核更新 3.13.0-143-generic Ubuntu 14.04 后登录循环

明天我办公桌上的电脑上会有一件大事要处理。

Nvidia:版本魔法“3.13.0-143-genric SMP mod_unload modversions”应为“3.13.0.143-generic SMP mod_unload modversions retpoline”

我知道这里解决了类似的问题(例如Nvidia 驱动程序安装 v14.04 后无法登录

但我不知道如何改变命令以在我的系统上运行。

我有 Ubuntu 14.04...


我尝试加载较旧的内核。它运行良好。我检查了 GUI 配置工具。在更新和驱动程序中,我可以选择将我的 nvidia 驱动程序升级到最新版本 (384.111)。我试过了,一切仍然正常。

然后我回到了最新的内核。

现在,我检查了 modinfo,但 nvidia 不在这里。我尝试了“sudo modprobe nvidia”(dkms 看到 nvidia 384.111 已安装)。

答案:modprobe:错误,无法插入“nvidia_384”:执行格式错误

我检查了 /lib/modules/.../drivers/video/nivdia 中的 nvidiafb.ko,该文件处于 -rw-r--r-- 模式...我不知道它是否应该处于 exec 模式???

我现在被困住了

答案1

这是因为较新的内核具有 retpoline Spectre 缓解措施。您将需要使用修补版本的库存发行版 gcc 重建 nvidia.ko 内核模块。

以下是该错误和更多详细信息:https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1750937

答案2

我通过以下方式解决了这个问题这个帖子来自 bug 启动板。总结如下:

运行以下命令并查找该vermagic行:

modinfo nvidia-384 -k 4.4.0-116-generic

它可能会显示:vermagic: 4.4.0-116-generic SMP mod_unload modversions。这里缺少 retpoline 字符串。您可以通过使用 DKMS 删除并重新构建模块来修复此问题

sudo dkms remove nvidia-384/384.111 -k 4.4.0-116-generic
sudo dkms install nvidia-384/384.111 -k 4.4.0-116-generic

之后 modinfo 命令将显示vermagic: 4.4.0-116-generic SMP mod_unload modversions retpoline

如果你使用自定义版本的 gcc这个帖子也相关:

如果您使用的是 Ubuntu 版本的 gcc,那么当您获得较新的内核时,gcc 可能会更新。支持 retpoline 所需的 gcc 更改应该已反向移植到大多数活跃版本的 gcc。但是,如果您安装了自定义版本的 gcc,那么您的内核模块可能无法正确构建。

因此,如果上述步骤不起作用,您可能需要检查您正在使用的 gcc 版本。

相关内容