获取内核源码:
内核源码树:
编译与安装内核:
- make xconfig/make gconfig
- make
- make modules_install
内核开发注意点:
- 不能访问C库,只能访问内核头文件定义的函数,比如没有printf,可以使用printk,使用方法差不多少;
- 必须使用GNU C,static inline内联函数、内联汇编;
- 没有用户空间那样的内存保护机制;
- 浮点数很难用,尽量别用;
- 只有一个很小的定长栈,注意是定长的,通常是2页,32位机,8KB,64位机,16KB;
- 由于内核支持异步中断、抢占和SMP、因此必须时刻注意同步和并发,常用的办法是自旋锁和信号量;
- 考虑可移植性。