Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207637
  • 博文数量: 54
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-25 13:58
文章分类

全部博文(54)

文章存档

2014年(12)

2013年(42)

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

阅读(1180) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~