下载运行ubuntu 12.04源代码的正确方法

下载运行ubuntu 12.04源代码的正确方法

如果我下载源代码如下:

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 版本中的主线内核版本不对应。

请参阅此常见问题解答条目:
https://wiki.ubuntu.com/Kernel/FAQ#Kernel.2BAC8-FAQ.2BAC8-GeneralVersionToMainline.Given_an_Ubuntu_kernel_package_version_how_do_we_find_the_exact_mainline_release_it_is_based_on.3F

以及链接的映射表:
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 安装的树也是如此。

相关内容