17-小结
5.6 小结
- Linux内核项目庞大而复杂。如果你想了解如何定制自己的嵌入式项目,理解最终镜像的结构和组成很关键。
- 很多架构都会将一个与具体架构相关的启动加载程序拼接到内核二进制镜像上,从而建立Linux内核所需的合适的执行环境。我们讲述了启动加载程序的构建步骤,它的功能和内核主体有所不同。
- 理解初始化时的控制流有助于加深对Linux内核的了解,还可以从中获得启发,知道如何根据特定需求定制流程。
- 我们在
head.o
中找到了内核的入口点,并顺着控制流程进入了主要的内核初始化逻辑main.c。我们讨论了系统的启动过程以及该过程中输出的消息,同时概要讲述了很多重要的初始化概念。 - 我们讲述了内核命令的处理过程,并介绍了声明和处理内核命令行参数的机制。其中包括一些高级的编码技巧,它们使用链接器生成的列表调用任意未知的设置函数。
- 在内核引导的最后几步会生成第一个用户空间进程。理解这个机制及其选项很有用,有助于你定制自己的嵌入式Linux启动流程,并解决遇到的问题。
补充阅读建议
GNU编译器文档
http://gcc.gnu.org/onlinedocs/gcc[22]
[22] 特别看一下其中关于函数属性、类型属性和变量属性的部分。
使用GNU链接器LD
http://sourceware.org/binutils/docs/ldindex.html
内核文档
.../Documentation/kernel-parameter.s.txt