深入解析内核初始化流程与命令行处理机制
1. 初始化控制流
在系统完整的启动周期中,引导加载程序(bootloader)扮演着重要角色。它是驻留在系统非易失性内存(如闪存或只读存储器)中的底层组件,在通电后立即接管控制权。引导加载程序通常是一组小型、简单的例程,主要用于进行底层初始化、加载启动映像以及系统诊断。它可能包含用于检查和修改内存内容的内存转储和填充例程,还可能包含底层板载自检例程,包括内存和 I/O 测试。最终,引导加载程序负责加载另一个程序(通常是操作系统,如 Linux)并将控制权传递给它。
以 ARM XScale 平台为例,该平台使用 Redboot 引导加载程序。通电后,Redboot 被调用并开始加载操作系统。当引导加载程序定位并加载操作系统映像(该映像可能驻留在本地闪存、硬盘上,也可能通过局域网或其他设备获取)后,控制权将传递给该映像。在这个特定的 XScale 平台上,引导加载程序在引导加载器的 Start 标签处将控制权传递给 head.o 模块。
引导加载器附加到内核映像之前,其主要职责是创建适当的环境来解压缩和重新定位内核,并将控制权传递给内核。控制权从引导加载器直接传递到内核本身,对于大多数架构而言,是传递到一个名为 head.o 的模块。不过,引导加载器和内核本身都包含名为 head.o 的模块,这给新的嵌入式 Linux 开发者带来了困扰。实际上,最近的 Linux 2.6 源代码树中至少有 37 个名为 head.S 的源文件,这也凸显了了解内核源代码树结构的重要性。当引导加载器完成任务后,控
超级会员免费看
订阅专栏 解锁全文
681

被折叠的 条评论
为什么被折叠?



