第一步:加载BIOS

当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

第二步:读取MBR

众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。

系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

第三步:启动Boot Loader

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。以Grub为例,系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

第四步:加载内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

第五步:用户层init依据inittab文件来设定运行等级

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。

Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启

第六步:init进程执行rc.sysinit

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

第七步:启动内核模块

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

第八步:执行不同运行级别的脚本程序

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

第九步:执行/etc/rc.d/rc.local

你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed after all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

第十步:执行/bin/login程序,进入登录状态

此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

嵌入式Linux启动流程相关推荐

  1. 嵌入式 Linux 启动流程和 bootloader 介绍

    目录 嵌入式 Linux 启动流程 简介 启动流程 Bootloader 简介 市面上可见的 bootloader 入式 Linux 启动流程 简介 对于一个 SoC 芯片而言,bootloader ...

  2. 嵌入式Linux 启动流程

    一.第一阶段启动ROM-Code 1.启动过程 每一个芯片都会有一个片内ROM,在出厂时厂家在其中固化好了一段代码,不可更改,这段代码执行第一阶段的启动任务.当芯片上电后,这段ROM-Code会读取启 ...

  3. 嵌入式linux内核启动过程,嵌入式Linux:ARM Linux启动流程

    ARM Linux启动流程大致为:bootloader---->kernel---->root filesystem.bootloader 是一上电就拿到cpu 的控制权的,而bootlo ...

  4. 嵌入式大牛详解:嵌入式linux开发流程总结

    很多的小伙伴都私信问了小编在嵌入式学习的过程中都能学到什么,这次小编就顺从大家的意思来一篇嵌入式linux开发的流程,嵌入式linux的学习是不可少的,可以说嵌入式linux是学习比较困难的,会遇到各 ...

  5. PC机和嵌入式设备启动流程

    一 PC机 和 嵌入式设备启动流程 1.PC机  (1)BIOS程序  [1]硬件初始化   (内存,其它硬件) [2]加载引导程序     (2)引导程序     grub,lilo 加载OS到内存 ...

  6. Linux 进内核,arm linux 启动流程之 进入内核

    原标题:arm linux 启动流程之 进入内核 还是从编译链接生成vm 的过程来看吧,由一大堆.o文件链接而成,第一个就是 kernel/arch//kernel/head-armv.o ,而且我们 ...

  7. 嵌入式Linux启动过程中的问题积累

    嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...

  8. Linux 启动流程学习

    Linux 启动流程学习 开机自检(加载BIOS) 无论什么机器,在开机后都要进行通电自检(硬件),如果硬件有问题,则无法继续下去. (例如当内存条松动时或者损坏,就会发出嘀嘀嘀警报声).接着开始加载 ...

  9. RISC-V Linux 启动流程分析

    " Author:  通天塔 985400330@qq.com Date:    2022/05/15 Revisor: lzufalcon falcon@tinylab.org Proje ...

最新文章

  1. 算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen
  2. HDU 5762 Teacher Bo (鸽笼原理) 2016杭电多校联合第三场
  3. gitlab+svn自动增量发包
  4. md5模式 签名_MD的完整形式是什么?
  5. Vue中使用axios的响应拦截器处理请求失败的情况(处理token过期问题)以及 登录成功跳转回原来页面问题
  6. android开源2016_2016 Hacktoberfest点燃了开源的参与
  7. Selenium的定位元素
  8. 力扣-1143 最长公共子序列/1035 不相交的线
  9. 只有绩效,才是检验创新的唯一标准
  10. 论网络工程中,系统开发设计可行性研究及市面产品对比!
  11. 2020千月最新影视源码 对接苹果影视app小白零基础搭建视频教学可赚钱影视APP
  12. 前加加 后加加 ++ 详解
  13. Asp.net中汉字转换成为拼音
  14. mysql 1236错误_mysql报1236错误代码该如何解决
  15. JS 转换格林尼治时间
  16. 这些神奇 Bug,碰到真是让人目瞪狗呆!
  17. MES系统对注塑行业的帮助
  18. 【论文笔记09】Differentially Private Hypothesis Transfer Learning 差分隐私迁移学习模型, ECMLPKDD 2018
  19. java金额小写转大写金额_Java金额大小写的转换方法
  20. Android 中的 Canvas API

热门文章

  1. 硬件知识:大功率电机驱动
  2. IPC(进程间通信),Remote Call(远程调用),IDL(接口描述语言)架构及其在BMP(BREW移动平台),Android中的应用浅析
  3. 程序员歌.一剂心灵的良药(共勉)
  4. 【图片去重工具】【Duplicate Cleaner】Duplicate Cleaner Pro_5.0.13 下载链接 使用方法
  5. [性能实验]INS山寨版---开篇
  6. 安卓手机主题软件_安卓手机垃圾清理软件!推荐必备!
  7. MP3就是MPEG-3吗
  8. Linux开发之Delphi FMXLinux(二)、Delphi对Linux操作系统内核态主要的Api封装(FMUX.Api.pas)
  9. 关于手机,最近想了这些
  10. python编程从入门到实践第二版答案(第三章)