linux启动全过程分析

来源:互联网 发布:sql2000数据库置疑 编辑:程序博客网 时间:2024/05/17 15:02

一、引导加载程序

1、固件

有些CPU在运行bootloader之前有一段固化程序,如BIOS,然后才运行第一个分区中的bootloader程序,大多数嵌入式系统中无固件,直接从起始地址开始运行bootloader程序,ARM为0,将存储bootloader程序的存储设备映射到该地址;

2、bootloader

第一阶段:

CPU体系结构的初始化(关看门狗,关中断,设置CPU时钟,RAM初始化)

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

复制第二阶段代码到RAM空间

设置栈

跳转到第二阶段入口点

第二阶段:

初始化要用的设备

检测内存映射

将内核和根文件系统读到RAM

设置内核启动参数

调用内核

具体动作:

R0=0

R1=机器类型ID

R2=启动参数标记列表的起始地址(bootloader和内核间以标记列表形式来传递启动参数)

关中断

关MMU

关CACHE

3、内核

start_kernel(),具体过程:先挂载/dev/ram0,执行/linuxrc,切换根目录,挂载根文件系统,执行第一个用户进程(init);

4、用户进程

文件系统为用户进程和内核之间的交互接口,如shell,库(glibc,uclibc)等 

0 0
原创粉丝点击