linux-nvidia-driver-18-9-2

linux-ubuntu-14.04 内核版本 linux-headers-4.4.0-134-generic 下安装英伟达驱动,一路坎坷。忙了一早上终于成功了,网上有诸多教程,要么不管用,要么过时了。自己写一下吧。

1. 下载最新驱动

一定要去nvidia 官方网站下载最新最新最新的驱动才行。本文截止时,最新版本为 390

2. 安装驱动

  1. 首先将下载好的文件放在英文目录下,因为待会需要到终端下执行安装。而终端下是无法正常显示中文的!!!。
  2. 注销当前用户,按 alt + ctrl + f1 进入终端。
    (坑点:进入终端后,输入用户名和密码后怎么都进不去,原因是终端下默认小键盘未开启)
  3. 进入安装文件目录,使用 sudo NVIDIA-Linux-x86_64-390.87.run 。接下来不出问题的话进入安装界面,继续后会报错,原因是第三方驱动 nouveau 冲突。
  4. sudo 修改 etc/modprobe.d/blacklist.conf,添加
    blacklist vga16fb
    blacklist nouveau
    blacklist rivafb
    blacklist nvidiafb
    blacklist rivatv
    
    禁止加载nouveau模块。
  5. 暂停桌面服务,sudo service lightdm stop

  6. 重新安装,成功。

  7. 重启之后,进入用户名密码登录界面,输入后enter,死循环。无法进入。

  8. alt+ctrl+f1 进入终端,发现提示 4.4.0-134-generic SMP mod_unload modversions should be 4.4.0-134-generic SMP mod_unload modversions retpoline
  9. 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"
    
    也就是强制替换。
  10. 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 恢复到原始状态
    
感谢稀稀拉拉的赞赏