分类: LINUX
2013-12-29 15:55:22
1.获取内核源码
(1)
(2)$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
$git pull
这两个命令,就可以获得最新的内核副本
2.内核树下的CREDITS是开发了很多内核代码的开发者邮件列表,MAINTAINERS是维护者列表,他们负责维护内核子系统和驱动程序。
System.map是一份符号对照表,用以将内核符号和它们的其实地址对应起来
3.内核配置
$make defconfig 取默认配置
$make oldconfig 更新配置
$cat /proc/config.gz > bk.config 这是运行系统所用的配置,配置选项CONFIG_IKCONFIG_PROC
4.内核编译
$make > ../detritus 减少编译垃圾
$make > /dev/null
$make –jn (每个处理器衍生出一个或两个作业)
distcc,ccache工具可以动态地改善编译时间
5.内核开发特点
(1)内核编程时既不能访问C库也不能访问标准的C头文件
Syslogds会根据printk的优先级标志来决定在什么地方显示这条系统消息。
(2)内核编程,必须使用GNU C
①内敛函数inline
②内敛汇编
③分支声明,likely()和unlikely()
(3)内核编程缺乏像用户空间那样的内存保护机制
(4)内核编程,难以执行浮点运算
(5)内核编程,每个进程只有一个很小的定长堆栈
(6)支持异步中断,抢占和SMP,因此必须时刻注意同步和并发
(7)考虑可移植性
在探索Linux内核征途中,最重要的是要阅读和修改内核源代码,只有通过实际的阅读和实践才会理解内核。