linux启动全过程分析

一、引导加载程序

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)等 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值