1 安装内核源代码方式:
解压以Linux-x.y.z.tar.bz2压缩方式的文件命令 tar xvjf Linux-x.y.z.tar.bz2
以zip解压方式 tar xvjf Linux-x.y.z.tar.gz
2 内核源代码树结构:
arch 特定体系结构的源代码
crypto Crypto API
Documentation 内核源码文档
driver 设备驱动程序
fs VFS和各种文件系统
include 内核头文件
init 内核引导和初始化
IPC 进程间通信代码
kernel 像调度程序这样的核心子系统
lib 通用内核函数
mm 内存管理系统和VM
net 网络子系统
script 编译内核所用的脚本
security Linux安全模块
sound 语言子系统
usr 早期用户空间代码
3 内核的编译:
编译前要进体系结构的配置
基于图型编译命令 make menuconfig
配置好久可以编译,执行 make 但是如果只想看到错误和警告信息可执行
make >../some_other_file
4 模块的安装命令
make module——install 就可以把已经编译的模块安装到正确的主目录/lib下
5 内核开发的特点:
内核编程时不能访问C库
内核编程时必须使用GNU C
内核编程时缺乏像用户空间那样的内存保护机制
内核编程时浮点数很难使用
内核只有一个很小的定长堆栈
由于内核支持异步中断、抢占和SMP、因此必须时刻注意同步和并发
6 printk()和printf()之间的区别在于printk()允许通过指定一个标志来设置优先级
7 不要轻易在内核中使用浮点数
8 总结:Linux内核是没有内存保护和libc,比较小的堆栈和庞大的代码