嵌入式Linux系统引导加载程序设置全解析
引导加载程序的重要性与嵌入式系统特点
引导加载程序在系统启动过程中运行时间虽短,却承担着加载内核的重任,是系统的关键组件。几乎所有运行Linux内核的系统都需要引导加载程序,但嵌入式系统由于自身限制,其引导过程与典型桌面Linux开发系统有所不同。
引导加载程序的主要职责是将操作系统内核及其支持架构加载到内存中,并启动内核执行。常见任务包括内核选择(如桌面Linux系统在启动早期按键可选择内核)和加载基于RAM的初始文件系统(如initrd、initramfs等)。这个基于RAM的文件系统提供了挂载根文件系统和启动正常启动流程(如启动系统守护进程)所需的环境。
大多数常规桌面和服务器系统拥有丰富的系统固件(如BIOS、UEFI、OpenFirmware等),这些固件能提供硬件设备配置、中断路由细节等信息,供Linux系统后续使用。然而,嵌入式Linux系统通常没有如此完善的固件,相关任务需由引导加载程序完成,它集成了大型系统中固件的功能。
嵌入式Linux系统对引导加载程序有独特要求。除了将内核镜像加载到系统内存,还需对系统内存控制器进行编程、初始化处理器缓存、启用各种硬件设备、直接实现网络引导基础设施支持等众多操作。
多种引导加载程序介绍
- LILO:LILO(Linux Loader)是早期Linux历史中引入的引导加载程序,部分x86系统仍在使用它来引导内核。过去,每当文件系统更新新内核镜像时,需要运行特殊命令,但现在已无需如此。LILO由John Coffman维护,最新版本可从http://lilo.go.dyn