Linux内核设计与实现(2)---Getting Started with the Kernel

3670阅读 0评论2013-05-09 leon_yu
分类:LINUX

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内核征途中,最重要的是要阅读和修改内核源代码,只有通过实际的阅读和实践才会理解内核。

上一篇:Linux内核设计与实现(1)---Introduction to th Linux Kernel
下一篇:Linux内核设计与实现(4)---Timers and Time Management