Linux内核启动过程
第一篇日志就摘录一下Linux内核的启动过程,参考了《Linux内核移植和yaffs2根文件系统制作》
嵌入式Linux系统从软件角度看可以分为四部分:引导加载程序(Bootloader),Linux内核,文件系统,应用程序。Bootloader是系统启动时执行的第一段代码,它主要用来初始化处理器及一些外设,然后调用Linux内核。这就是我们平时所说的系统的托举。Linux内核在完成系统的初始化之后需要挂载某个文件系统作为根文件系统(Root Filesystem)。根文件系统可以做为Linux系统中文件和数据的存储区域,也包括系统配置文件和运行应用软件需要的库。
总的来说,系统的启动分为:运行Bootloader->调用系统内核->挂载根文件系统。
1、Bootloader 的概念和作用
Bootloader 是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序, 其作用类似于 PC 机上的 BIOS。 在完成对系统的初始化任务之后, 它会将
非易失性存储器 (通常是 Flash 或 DOC 等) 中的 Linux 内核拷贝到 RAM 中去,然后跳转到内核的第一条指令处继续执行,从而启动 Linux 内核。
2、Bootloader 的功能
初始化RAM,初始化串口、检测处理器类型、设置Linux启动参数、调用Linux内核映像。
其中设置Linux启动参数主要采用两种方式:即通过 struct param_struct 和 struct tag(标记列表,tagged list)两种结构传递。前者较老,在2.4版本以前的内核中使用较多,2.4版本之后很少使用。