请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

内核编译和嵌入式产品的设计与开发
回复
DavidYuxuan
帖子: 3
注册时间: 2010-03-04 15:05

请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

#1

帖子 DavidYuxuan » 2011-02-28 15:32

请问: 如何使用apt-get命令获得与自己当前系统完全一样的内核源码树(版本号完全一致)? 我想在虚拟机的Ubuntu操作系统上加载一个很简单的内核模块。编译好之后使用命令 ./insmod driver.ko时,终端提示 insmod: error inserting './driver.ko': -1 Invalid module format。 网上查找了一下,说是我自己系统的内核版本和编译驱动模块时的版本不匹配。我下载内核源码时用的是 apt-get install linux-source 命令, 下到的是linux-source-2.6.35。 可找来找去,我也不知道该用到哪个命令才可以下得到和自己的内核完全匹配的内核源码。求各位大侠帮助!
注:虚拟机是vmware7.1.2,Linux操作系统是Ubuntu10.10,通过终端中敲 uname -r 命令知道自己的内核版本为: 2.6.35-22-generic
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

#2

帖子 smallapple » 2011-02-28 20:03

sudo apt-get install linux-headers-$(uname -r)
DavidYuxuan
帖子: 3
注册时间: 2010-03-04 15:05

Re: 请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

#3

帖子 DavidYuxuan » 2011-03-01 9:08

smallapple 写了:sudo apt-get install linux-headers-$(uname -r)
谢谢你的答复,不过,这样做并不可以得到正确的内核源代码。
使用 sudo apt-get linux-headers-$(uname -r) 命令可以得到 linux-headers-2.6.35-22-generic ,这个源码是安装好Ubuntu10.10后 /usr/src 下面已经存在的。我之所以发这个帖子,是因为这个源码是不可以用的。因为它缺少了很多的部分,不能作为一个整体的内核源码去编译。 而且,从名字可以看到,它是 "headers" ,不全的。

附: 已经测试过,linux-headers-2.6.35-22-generic 不可以用。所以我想下载完整的 内核源码
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

Re: 请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

#4

帖子 leeaman » 2011-03-01 9:14

小苹果~~~那个是头文件,装linux-source这个包看看
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

#5

帖子 smallapple » 2011-03-01 9:41

搞错了
:em06
头像
fang0319
帖子: 628
注册时间: 2011-01-05 14:21

Re: 请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

#6

帖子 fang0319 » 2011-03-01 9:51

www.kernel.org没有吗
O(∩_∩)O
DavidYuxuan
帖子: 3
注册时间: 2010-03-04 15:05

Re: 请问: 如何使用apt-get命令下载与自己内核版本完全相同的内核源码

#7

帖子 DavidYuxuan » 2011-03-01 12:30

fang0319 写了:http://www.kernel.org没有吗
回复6楼:
你好,我在www.kernel.org上找过Ubuntu10.10的内核源码,可惜,没有!具体在 http://www.kernel.org/pub/linux/kernel/v2.6/ 上都有列出。不过问题解决了!
很可惜我仍没有下到理想的内核源码,就是 linux-source-2.6.35-22-generic 版本的。不过我新创建了一个虚拟机OS,仍是Ubuntu10.10。 /usr/src下面还是那两个文件夹 linux-headers-2.6.35-22 和 linux-headers-2.6.35-22-generic。我这次改变驱动文件的 Makefile,
KERNELDIR 改为绝对路径: KERNELDIR = /usr/src/linux-headers-2.6.35-22-generic
再次编译,通过了!
Ubuntu10.10中在终端编译一个简单模块,通过
Ubuntu10.10中在终端编译一个简单模块,通过
创建好Ubuntu10.10后, /usr/src/linux-2.6.35-22-generic 已经编译好一些模块,即它是可用的内核源码树。谢谢大家的帮忙啦!
回复