设为首页 加入收藏

TOP

Linux之Bootloader了解概念和启动过程
2014-11-24 12:46:57 来源: 作者: 【 】 浏览:0
Tags:Linux Bootloader 了解 概念 启动 过程

Bootloader,简而言之就是:它是一段小程序,在系统上电时开始执行,主要功能是初始化硬件设备、准备好软件环境,最后调用操作系统内核。


Bootloader种类比较多,常见的X86上的有LILO,GRUB,ARM架构上比较有名的是U-boot,VIVI. 还有其他的RedBoot / Etherboot等


启动Bootloader指令地址(ARM结构的cpu一般放在0x0000000地址处,而MIPS结构的CPU一般放在0xBFC00000)


Bootloader常见两种操作模式:1。启动加载模式(没用户介入) 2.下载模式(用户命令操作)


Bootloader中典型分区结构图:



*Bootloader上电后第一个程序。


*Boot parameters分区中一般存放一些可设置的参数,比如IP地址、串口波特率,要传递给内核的命令行参数。


*kernel,嵌入式板定制的内核,包含内核启动参数


*Root filesystem文件系统,里面包含了linux能够运行的应用程序,和相关库等。


@Bootloader的两个阶段了解


1.第一阶段(使用汇编语言实现,依赖于cpu体系结构的初始化)


。硬件初始化(看门狗、RAM初始化等)


。为加载Bootloader的第二阶段代码准备RAM空间


。复制Bootloader的第二阶段代码到RAM空间中


。设置好栈


。调转到第二阶段代码的入口点


2.第二阶段(通常C语言实现,好处可读性和移植性)


。初始化本阶段要用到的硬件设备


。检测系统内存映射(memory map)


。将内核映像和根文件系统系统映像从Flash读到RAM内存中


。为内核设置启动参数



@Bootloader与内核交互


Bootloader和内核交互是单向的,因为它们启动有先后。


Bootloader传递参数给内核,有书说明:linux2.4.x后都是以数据结构:标记列表形式来传递启动参数。


标记的数据结构为tag,由tag_header结构和 一个联合union组成。如下:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Shell随机生成十位密码脚本 下一篇Linux用ICMP协议实现简单Ping网络..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)