开门见山:

1、嵌入式linux启动第一步----Boot Loader

Boot Loader在这里我就不细说了,详细分析起来的话有很多内容,网上也有很多讲解很详细的文章。这段小程序中我们可以初始化硬件设备、建立内存空间的映射图,将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

2、嵌入式linux启动第二步----加载内核

假如你是从u-boot启动的话,可能会有很多方式来实现内核的加载。系统读取内存映像,并进行解压缩操作,此时屏幕一般会有一些供调试用的打印信息。内核解压好之后,系统将解压后的内核放在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此Linux内核已经建立起来了,也就是说核心的任务调度、多用户什么的功能都齐全了。可能有人会问我们在Boot Loader里面不是已经初始化了硬件了么?怎么还要初始化设备。这里原因说不好,Boot Loader里面确实是初始化了一些硬件设备,但是那些初始化只是临时的,系统起来之后的初始化会覆盖掉。你可以理解为Boot Loader里面初始化算是游击、土八路,真正系统起来才是正规军。

3、嵌入式linux启动第三步----用户层init依据inittab文件来设定运行等级

内核加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“xxx1:xxx2:xxx3:xxx4”其中xxx1是指入口标识符,xxx2是指init所处的运行等级,xxx3是指action,描述process的运行方式,xxx4是指process。

运行等级设定如下:

0:关机

1:单用户模式

2:无网络支持的多用户模式

3:有网络支持的多用户模式

4:保留,未使用

5:有网络支持有X-Window支持的多用户模式

6:重新引导系统,即重启

4、嵌入式linux启动第四步----init进程执行rc.sysinit

在设定了运行等级之后,Linux系统执行的第一个用户文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。

5、嵌入式linux启动第五步----启动内核模块

依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

6、嵌入式linux启动第六步----执行不同运行级别的脚本程序

根据不同的级别设置,运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

7、嵌入式linux启动第七步----执行/etc/rc.d/rc.local

这是linux留给用户进行个性化的地方。可以把想设置和启动的东西放到这里。

8、嵌入式linux启动第八步----执行/bin/login程序,进入登陆状态

阅读(2787) | 评论(0) | 转发(0) |

嵌入式linux的运行过程,嵌入式linux的启动流程--详解相关推荐

  1. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  2. 暗黑2在linux上运行,建立Diablo2(暗黑破坏神2)封闭式服务器详解

    建立Diablo2(暗黑破坏神2)封闭式服务器详解 I. 需求 软件需求: bnetd, d2cs, d2dbs和d2gs diablo2以及diablo2扩展版 系统需求: bnetd, d2cs, ...

  3. Linux启动流程详解

    Linux组成 Linux: kernel+rootfs     kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能     rootfs:程序和glibc     库:函数集 ...

  4. 《嵌入式 - 深入剖析STM32》STM32 启动流程详解(GCC)

    开发环境: 处理器:STM32F103 GCC:10.3.1 对于我们常用的桌面操作系统而言,我们在开发应用时,并不关心系统的初始化,绝大多数应用程序是在操作系统运行后才开始运行的,操作系统已经提供了 ...

  5. Linux服务器启动流程详解

    启动第一步 - 加载BIOS 启动第二部 - 读取MBR 启动第三部 - Boot Loader 启动第四部 - 加载内核 启动第五部 -用户层init依据inittab文件来设定运行等级 重新引导系 ...

  6. linux madplay运行完成,Madplay移植到mini2440全过程详解

    madplay交叉编译 交叉编译器:arm-linux-gcc 3.4.1 PC环境:Ubuntu 8.10 注意:最好在root权限下执行以下移植,否则在make install时可能权限不够. 一 ...

  7. 引导linux为什么要用实模式,Linux引导过程与故障排除|第1章:Linux启动流程详解...

    1. BIOS 当你按下电源键的那一刻起,计算机的的启动就开始了.Intel x86 系列的 CPU 可以分别在 16 位 实模式(Real mode) 和 32 位 保护模式(Protected m ...

  8. php的persion是,php创建Persion类,反射过程,反射后使用流程详解

    1. 介绍 -- PHP5添加了一项新的功能:Reflection.这个功能使得phper可以reverse-engineer class, interface,function,method and ...

  9. linux upstart脚本,Linux upstart启动方式详解

    Ubuntu从6.10开始逐步用Upstart()代替原来的SysVinit进行服务进程的管理.RHEL(CentOS)也都从版本6开始转用Upstart代替以往的init.d/rcX.d的线性启动方 ...

最新文章

  1. Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约
  2. 流水账日记20150626
  3. SAP CRM 产品主数据搜索时的权限检查实现 - Product search authorization check
  4. 【渝粤教育】国家开放大学2018年春季 7392-22FMatlab语言及其应用 参考试题
  5. C++ —— C++高手之路
  6. 类型的设计--类型和成员基础(二)
  7. WIN7打补丁后VS2012出现版本不兼容
  8. java 档案管理系统论文_基于JAVA学生档案管理系统论文.doc
  9. [转载] 随机游走和随机重启游走_网络动画API的随机游走
  10. php mysql zend linux,Linux系统安装配置PHP+MySQL+zend+PHPadmin开发环境
  11. Python爬虫实战01 ---- 百度贴吧一键签到
  12. 最简单的STM32入门教程----闪烁LED
  13. 选择器的权重中对交集选择器,分组(并集)选择器,以及关系选择器的理解
  14. 微信公众平台测试号验证Token失败的坑
  15. JavaScript网页特效编程百宝箱pdf
  16. 2019年十大让人欲罢不能的消费潮流 | 财见年终观察
  17. PHP AJAX Promise
  18. 计算机组成原理 | 穿越功耗墙,我们该从哪些方面提升“性能”?
  19. Linux登入Oracle数据库修改密码
  20. 一个不错的shell 脚本教程 (国)

热门文章

  1. apktool高版本产生compileSdkVersion等错误
  2. SparkSQL视图
  3. 推广引流方法有哪些?
  4. 作业题:京东店铺访问数
  5. 微信获取openId--java
  6. fedora30 桌面图标_Linux桌面上的创新:Fedora 30的新功能
  7. 《鸟哥的Linux学习:基础篇》第零章 计算机概论 读书笔记
  8. 苹果WWDC学习框架Core ML的发布,正式嵌入终端设备
  9. 【人工智能】技术采纳:重新思考医疗保健的罗杰钟形曲线
  10. vue+eCharts---标题居中的圆环图实例2