参考http://blog.chinaunix.net/uid-26495963-id-3066282.html

1,加载BIOS

BISO,英文Basic input Output System,基本的输入输出系统,它是一组固化在计算机主是的ROM芯片上的程序,为计算器提供最底层的、最直接的硬件设置和控制。

(1)       计算机刚上电时对硬件部分的检测,机加电自检,Power On Self Test,简称POST,

检查内容包括CUP,640K基本内存,1M以上内存扩展,ROM,主板,CMOS存储器,串并口,显卡,软硬盘,键盘等进行检查,发现问题则鸣笛警告,如严重错误,则停机;

(2)       初始化,包括创建中断向量、设置寄存器,对一些外部设备进行初始化和检测,其中很重要的一部分是BIOS设置,这样是对硬件设置一些参数;

(3)       引导程序,即引导DOS或其他操作系统,从软盘,硬盘,USB的开始失去读取引导记录。

2.读取MBR

硬盘的主引导扇区位于硬盘的第0磁道0柱面第一个扇区称为MBR,大小512 bytes,由3部分组成:

(1)       硬盘主引导记录MBR(Master Boot Record)占446 Bytes

(2)       分区表DPT(Disk Partition Table)占64Bytes

(3)       硬盘有效标志(Magic Number)占2Bytes

MBR包含硬盘的一系列参数和一段引导程序,其中硬盘引导程序的主要作用是检查分区表是否正确并且在POST完成后引导分区上的操作系统,将Boot Loader复制到物理内存0x7c00;

3.Boot Loader

(1)Boot Loader是在操作系统内核运行之前运行的一段程序,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件带到一个合适的状态,以便最终调用操作系统内核;Boot Loader严重依赖硬件;

(2)Boot Loader有若干种,其中Grub,Lilo,Spfdisk是常见的Loader;

Grub使用的最多,系统读取内存中的Grub配置信息,一般为menu.lst或grub.lst,并依照此配置信息来启动不同的操作系统;

4.加载内核

根据Grub设定的内核映像路径,读取内存映像,并进行解压操作;屏幕上会输出“Uncompressing Linux”的提示,解压完成后,输出“Ok,booting the kernel”

系统将解压后的内核放在内存中,并调用start_kernel()函数来启动一系列的初始化动作,完成Linux核心环境的建立;

至此,Linux内核已经建立起来了,基于Linux的程序可以正常运行。

5.用户init设定运行等级

内核加载完成后,第一个运行的程序是/sbin/init,该文件会读取/etc/inittab文件,并以此来进行初始化操作;

/etc/inittab文件最主要的作用就是设定Linux的运行等级,Linux包含5个等级;

6.init进程执行rc.sysinit

设定运行等级后,Linux系统执行的第一个用户层文件是/etc/rc.d/rc.yssinit脚本程序,该脚本会设定PATH,网络配置,启动swap分区,设定/proc等;

7.启动内核模块

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

8.执行不同运行基本的脚本程序

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

9.执行/etc/rc.d/rc.local

rc.local就是在一切初始化工作完成后,linux留给用户个性化的设定的位置;

10.执行/bin/login程序,进入登录状态

此时,系统已经进入到了等待用户输入username和password,输入用户名和密码登录,启动过程完成;

转载于:https://www.cnblogs.com/thoughtInShare/p/4271042.html

Linux 启动过程剖析相关推荐

  1. linux启动过程剖析,分析Linux系统的启动过程

    导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...

  2. Linux 启动过程详解

    随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统.由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Window ...

  3. 干货 | 走进Node.js之启动过程剖析

    走进Node.js之启动过程剖析 作者:正龙 (沪江Web前端开发工程师) 本文原创,转载请注明作者及出处. 随着Node.js的普及,越来越多的开发者使用Node.js来搭建环境,也有很多公司开始把 ...

  4. Activity启动过程剖析

    Activity启动过程剖析 你同样可以在Github上看到这篇文章:https://github.com/onlynight/ActivityStartPrinciple 写在前面 在看这篇文章之前 ...

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

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

  6. 深入理解Linux启动过程 0号进程,1号进程

    深入理解Linux启动过程 Linux系统的启动过程由很多阶段组成,这篇博客从初始化引导程序到第一个用户空间应用程序探索Linux启动进程. 我们先从Linux启动的顶层视图开始分析,以便能有一个整体 ...

  7. Linux启动过程详细介绍

    Linux启动过程详细介绍 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相 ...

  8. Linux启动过程学习

    该学习过程是一个Linux从主引导记录到第一个用户空间程序的指导. 启动一个Linux系统的过程包含一系列步骤.但是无论你是启动一个标准的X86桌面或嵌入式PowerPC,大部分流程是相似的.该文章探 ...

  9. linux系统需要占多大的内存,linux启动过程Bootloader、kernel

    256M可以推1080P屏幕 128M可以基本运行并安装 256M可以勉强开启特效 512M流畅运行特效 当然内存越大越好,特效与显卡也有关系 和windows相比,当然linux对内存的需求小 Bo ...

最新文章

  1. 鲜为人知的静态、命令式编程语言——Nimrod
  2. Web Service 的工作原理
  3. MySQL客户端和服务器端工具集
  4. 下拉推广系统立择火星推荐_下拉词删除都择火星下拉
  5. OpenShift 4 之获取OpenShif的最新开发进度
  6. 产业互联网的“神”在哪里?
  7. linux 终端 qmake,qt中的qmake命令设置
  8. jsweet-quickstart下载测试
  9. Tomcat安装步骤及详细配置教程(2022最新版)
  10. Linux - Manjaro查看本机IP地址
  11. java读取图片 去除alpha_java – 从图像中剥离Alpha通道
  12. 第三阶段应用层——1.4 数码相册—FreeType介绍
  13. c语言程序设计第三版乌云高娃答案,C语言程序设计教学课件作者第3版乌云高娃补充习题及答案C语言程序设计教学课件作者第3版乌云高娃补充习题及答案第3章补充习题及答案课件.doc...
  14. 关于union联合查询
  15. windwos操作系统有snmp服务器,windows服务器snmp v3
  16. [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
  17. vscode在报错时候自动格式化代码
  18. 测试治具、夹具、托盘
  19. php x12,小辣椒x12pro是什么处理器,一款专门为老年人服务的手机
  20. Linux远程登录xftp,xshell下载以及简单使用教程

热门文章

  1. 笔记本电脑性价比排行2019_笔记本电脑性价比排行2020榜单介绍
  2. lambda表达式java_Java Lambda表达式
  3. android按钮_Android按钮
  4. primefaces教程_Primefaces FileUpload组件示例教程
  5. 通过命令行启动uwp应用
  6. 开课吧:Java软件开发的优点有哪些?​
  7. 为何要进入互联网行业做产品经理?
  8. 数据库基础:MySQL必备的三个工具
  9. shell终端行首行尾命令介绍
  10. 父子页面iframe相互调用方法详解