ubuntu14.04 安装cuda7.5或8.0 中的unable to locate kernel source 问题解决方案

第一次写blog,主要是因为自己被这个问题折磨了很久,当终于解决了之后,又觉得是那么自然,总结起来一个教训:

有官方教程就先好好看官方教程!

有官方教程就先好好看官方教程!

有官方教程就先好好看官方教程!

如果你也碰到了unable to locate kernel source 的问题,这篇blog绝对值得一读。


主要参考资料为:

@庞贝船长 的 ubuntu14.04安装CUDA8.0详细教程

masa_fish 的 Ubuntu 14.04 上安装 CUDA 7.5/8.0 超详细教程

NVIDIA官方教程 NVIDIA CUDA 8.0 Installation Guide for Linux


折腾了几天,重装了几次系统终于把cuda7.5装好了,ubuntu14.04上安装cuda7.5或8.0基本上只要参考上面第一篇@庞贝船长的资料就行了(官方教程最好,但很多人估计不愿意看,我也是,毕竟40页),但是,想很多其他教程一样,里面有一个问题被忽略了,相信正是这个问题搞晕了不少人,包括我。


如果你完全按照@庞贝船长的教程来装,应该会出现如下情况:

第1.4步输入$ sudo apt-get install linux-headers-$(uname -r)时:

命令行窗口会输出如下大概信息:0个文件需要被下载,0个文件需要被更新等等,

这样你就会以为linux-headers本来就已经被安装好了,根本不需要这个命令;

但当你之后用sudo sh cuda*.run安装cuda时,就会被告知:

The driver installation is unable to locate the kernel source.

Please make surethat the kernel source packages are installed and set up correctly.

If you know that the kernel source packages are installed and set upcorrectly,

you may pass the location of the kernel source with the'--kernel-source-path' flag.


然后安装就停止了,我在这里卡了很久,查了很多资料,但都没有找到解决方案,同时也找到这篇:

ubuntu14.04.5装cuda7.5记录(解决unable to locate the kernel source,装cuda黑屏问题,装cuda循环登录问题)

这位老哥也碰到了这个问题,他的方法似乎很复杂,没怎么看懂,而且也没有解决这个问题,后来经过我的反复实验终于找到了

一个解决方案,分享给大家,希望大家都能成功安装cuda。


其实方案很简单,@庞贝船长的教程和很多其他教程的一个问题在于:

忽略了cuda7.5或8.0官方教程的对系统配置的一个要求:

如图,要在ubuntu14.04上安装cuda7.5或8.0的话,官方对内核kernel有一个版本要求:3.13.0-**-generic

ubuntu14.04 安装cuda7.5或8.0 中的unable to locate kernel source 问题解决方案

但是网上这些教程里的图例里基本都写着:

$ uname -r

结果显示:

4.4.0-45-generic

这个4.4系列版本应该是cuda9.0以上版本的官方教程对系统内核的要求,并不是对安装cuda7.5或8.0的要求,

但ubuntu14安装完后的kernel版本就是4.4的,这就很容易让人忽略这个问题,从而以为4.4是最低版本。


因此,解决unable to locate kernel source 问题的一个方案就是:

在开始按教程安装cuda7.5或8.0时,先把ubuntu14的4.4.0-**-generic版本的内核(kernel)更换为低版本3.3.0-**-generic的内核(当然你也可以

去安装cuda9.0以上版本的,4.4版本内核刚好满足要求,应该就没有这个问题了),例如我更换为3.3.0-98-generic版本,更换内核的方法可以参考:

Ubuntu 14.04更换内核


先降低内核版本后,再按照@庞贝船长的教程安装,

第1.4步输入$ sudo apt-get install linux-headers-$(uname -r)时:

命令行就会真的提示开始下载并安装linux-headers-$(uname -r),使得一切看起来都那么合理,

再之后运行sudo sh cuda*.run安装cuda的时候unable to locate kernel source 问题就会迎刃而解。