如果我下载源代码如下:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-precise.git
在 Makefile 中我可以看到
VERSION = 3
PATCHLEVEL = 2
SUBLEVEL = 55
EXTRAVERSION =
如果我这样做:
apt-get source linux-image-$(uname -r)
在 Makefile 中我可以看到
VERSION = 3
PATCHLEVEL = 8
SUBLEVEL = 13
EXTRAVERSION = .19
以上两个都不符合我正在运行的内核:
#lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.4 LTS
Release: 12.04
Codename: precise
还:
3.8.0-38-generic #56~precise1-Ubuntu SMP Thu Mar 13 16:23:47 UTC 2014 i686 i686 i386 GNU/Linux
我知道我应该拥有与使用 insmod 开发和加载驱动程序时运行的完全相同的源代码。那么我该如何下载匹配的源代码
答案1
令人困惑的是,uname 报告的版本号与较新的 Ubuntu 版本中的主线内核版本不对应。
以及链接的映射表:
http://people.canonical.com/~kernel/info/kernel-version-map.html
在 FAQ 页面的其他地方,您可以看到如何查询确切版本。在我的 12.04.4 系统上,uname 报告 3.2.0,但使用的上游内核是 3.2.66:
user@host:~$ uname -r
3.2.0-77-generic
user@host:~$ cat /proc/version_signature
Ubuntu 3.2.0-77.112-generic 3.2.66
如果您从精确的内核存储库中检出 tags/Ubuntu-3.2.0-77.112,您将看到一个 SUBLEVEL 为 66 的 Makefile。通过 apt 安装的树也是如此。