在 linux-ubuntu-14.04
内核版本 linux-headers-4.4.0-134-generic
下安装英伟达驱动,一路坎坷。忙了一早上终于成功了,网上有诸多教程,要么不管用,要么过时了。自己写一下吧。
1. 下载最新驱动
一定要去nvidia 官方网站下载最新最新最新的驱动才行。本文截止时,最新版本为 390
2. 安装驱动
- 首先将下载好的文件放在英文目录下,因为待会需要到终端下执行安装。而终端下是无法正常显示中文的!!!。
- 注销当前用户,按
alt + ctrl + f1
进入终端。
(坑点:进入终端后,输入用户名和密码后怎么都进不去,原因是终端下默认小键盘未开启) - 进入安装文件目录,使用
sudo NVIDIA-Linux-x86_64-390.87.run
。接下来不出问题的话进入安装界面,继续后会报错,原因是第三方驱动 nouveau 冲突。 - sudo 修改
etc/modprobe.d/blacklist.conf
,添加
禁止加载blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv
nouveau
模块。 暂停桌面服务,
sudo service lightdm stop
重新安装,成功。
重启之后,进入用户名密码登录界面,输入后
enter
,死循环。无法进入。alt+ctrl+f1
进入终端,发现提示4.4.0-134-generic SMP mod_unload modversions
should be4.4.0-134-generic SMP mod_unload modversions retpoline
。- sudo 修改
/usr/src/linux-headers-4.4.0-generic/include/linux/vermagic.h
(做好备份)
为#ifdef PETPOLINE #define MODULE_VERMAGIC_RETPOLINE "retpoline"
也就是强制替换。#ifdef 1 #define MODULE_VERMAGIC_RETPOLINE "retpoline"
- sudo reboot 重启,发现还是进不去桌面。
以下纯属猜测
实际上在第10步结束后已经大工告成了,但是由于没有执行内核更新命令导致修改后的
vermagic.h
没有生效。
接下来我使用sudo apt-get purge nvidia*
清除了所有用apt-get
方式安装的英伟达驱动。在卸载过程中,我看到了update-initramfs
更新等说明。重启之后成功进入桌面。
所以,究竟是因为删除掉 nvidia 驱动成功的还是更新成功的已经不为人知了。
总之,最后的状态是英伟达官方驱动安装成功。 卸载了所有在apt-get 安装的驱动。 /usr/src/linux-headers-4.4.0-generic/include/linux/vermagic.h 经过修改为第 10 步状态 blacklist 恢复到原始状态