POST --> BootSequence(BIOS) --> BootLoader --> Kernel (ramdisk) --> rootfs --> /sbin/init

第一步、加载BIOS

BIOS担负着初始化硬件,检测硬件功能,以及引导操作系统的责任。在早期,BIOS还提供一套运行时的服务程序给操作系统及应用程序使用。BIOS程序存放于一个断电后内容不会丢失的只读存储器中;系统过电或被重置(reset)时,处理器第一条指令的地址会被定位到BIOS的存储器中,让初始化程序开始运行。

第一阶段

自我检测(Power On Self Test):

按下电源以后,CPU第一条指令指向BIOS芯片(ROM只读存储器;一般情况为只读,BIOS程序可升级,中端高端服务器上有两个BISO芯片,防止BIOS升级失败后可回退)中的BIOS程序载入到内存运行,BIOS(Basic Input/Output System的缩写、中文:基本输入输出系统)程序运行起来后会识别检测各个硬件。

如果某些检测到硬件有问题时:

1.相关硬件指示灯会变颜色(红色或者橙色)

2.屏蔽有问题的硬件继续进行下一步;如果达到临界点下一步无法进行; (例如一些工业标准服务器有多路处理器,多根内存条... 将有问题硬件所在槽位设置成disabled)

第二阶段:Boot Sequence

bios程序自检完成后会加载CMOS芯片中(随机存储器RAM)的BIOS设置信息(时间,密码,启动项等);

Boot Sequence(BIOS)为用户设定启动顺序由哪个设备启动计算机,如光盘驱动器、硬盘、软盘、USB U盘等, 按照Boot Sequence设定启动顺序,遍历设备的第0柱面第0磁道第1个扇区(也叫MBR),如果发现这个扇区0xAA559结束,则BIOS认为它是一个可引导扇区,进入第三阶段;否则再找下个下一个启动项中设置的下一个设备,直到找到为止;如果都没有BIOS会提示没有找到操作系统。

第三阶段:Boot Loader(启动加载器)

当BIOS确定要启动哪个启动设备后,它会去加载设备第0柱面第0磁道第1个扇区中512字节内容程序到内存地址00000:7c00中,然后跳转到00000:7c00处将控制权交给这段代码,到此,计算机不再由BIOS中固有的程序来控制,变成了这一小段程序(446)执行掌控计算机进行下一步工作(参考:一个操作系统的实现 作者:于渊)

MBR:

位于硬盘的0柱面、0磁头、第1扇区称为主引导扇区(也叫主引导记录MBR),大小为512字节

第一部分主引导程序(boot loader)占446个字节

第二部分区表信息占64字节(一个分区占16个字节,所以只能分4个主分区)

第三部分是magic numb占两个字节,校验MBR信息

Boot Loader中的程序不属于哪个操作系统,它只是为了让计算机引导操作系统(内核),所以只要这个程序能引导对应的操作系统,其实用哪个都无所谓。Boot Loader作用找到内核后将其加载到内存中,计算机不再由Boot Loader来掌管,

linux上常见的Boot Loader:

1.LILO

2.GRUB

GRUB功能比较强大,很多linux都使用GRUB作为启动加载器,它既可以引导linux内核,也可以引导window

以下为grub的内容

详解请查看(http://blog.chinaunix.net/uid-24774106-id-3497929.html)

第四阶段:Kernel

当Kernel被加载到内存中后它会进行自解压,并且运行起来以只读方式挂载文件系统,检测以及掌控各个硬件。其中kernel从grub启动接收到传递到的参数initrd /initramfs-2.6.32-573.el6.x86_64.img有何作用? 当内核启动运行后,它需要访问根文件系统,要访问根文件系统必须要加载根文件系统所在的设备,而这时根文件系统又没有挂载,要挂载根文件系统首先需要根文件系统的驱动程序,这是一个典 型的先有鸡先有蛋的问题啊!为解决这个问题,GRUB在加载内核同时,也把initrd加载到内存中并运行,那么initr又起到了什么作用哪,其实initrd文件其实是一个虚拟的根文件系统,里面有bin、lib、lib64、sys、var、etc、sysroot、 dev、proc、tmp等根目录,它的功能就是内核与真正的根建立联系,内核通过它加载根文件系统的驱动程序,然后以读写方式挂载/etc/fstab中定义的内容,至此, 内核加载完成。

第五阶段:运行/sbin/init

当系统内核启动完成以后,启动的第一个用户进程为/sbin/init,系统掌握权限交给/sbin/init,让执行系统初始化!

用户空间执行的程序有 /sbin/init-->/etc/inittab(设定默认级别) -->/etc/rc.d/rc.sysinit->/etc/rc3.d/S* (或者/etc/rc5.d/S* )-->/etc/rc.sysinit-->--> 设定默认运行级别 --> 系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端

本文由 CentOS中文站 - 专注Linux技术 作者:centos 发表,其版权均为 CentOS中文站 - 专注Linux技术 所有,文章内容系作者个人观点,不代表 CentOS中文站 - 专注Linux技术 对观点赞同或支持。如需转载,请注明文章来源。

linux引导过程简述6,CentOS 6系统启动引导过程讲解相关推荐

  1. 简述计算机控制系统调试和运行的过程,简述计算机控制系统的一般控制过程

    <简述计算机控制系统的一般控制过程>由会员分享,可在线阅读,更多相关<简述计算机控制系统的一般控制过程(2页珍藏版)>请在人人文库网上搜索. 1.1. 简述计算机控制系统的一般 ...

  2. 简述计算机控制系统调试和运行的过程,简述计算机原理与系统启动过程

    一.哈佛结构与冯·诺依曼结构 1.冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点: (1).使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存: (2).使用独立 ...

  3. uefi启动linux过程_Linux UEFI与备份还原(引导修复)

    这篇文章主要介绍UEFI启动流程.Linux系统下的备份还原以及grub引导修复. UEFI相关知识 UEFI启动要求硬盘上有一个特殊的分区--EFI系统分区.它是FAT32格式带有efi.boot标 ...

  4. linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程

    转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...

  5. Windows系统启动引导过程

    Windows系统引导过程以及多系统引导原理- 系统启动的两种引导方式 计算机系统引导方式主要有两种:一种是传统的BIOS模式,另一种是新型UEFI(全称统一的可扩展固件接口)模式.UEFI启动也可以 ...

  6. 如何用u盘装linux 7,U盘安装CentOS 7的方法

    安装CentOS7前,我的PC是win7和CentOS6.5的双系统,使用GRUB引导启动.我在CentOS6.5中安装了很多应用软件和服务器软件,并重新编译了高版本的内核.但由于在按自己需求打造li ...

  7. linux系统从开机到登陆界面的启动过程

    简述: 1.开机BIOS自检 2.MBR引导 3.grub引导菜单 4.加载内核kernel 5.启动init进程 6.读取inittab文件,执行rc.sysinit,rc等脚本 7.启动minge ...

  8. Linux PXE网络装机+Kickstart(centos版)

    Table of Contents 一.何为PXE 二.PXE装机服务器上必须有什么 三.Linux系统使用PXE网络装机 0.环境准备 1.DHCP服务 2.构建tftp服务,提供众多的引导文件 3 ...

  9. centos光盘修复引导_Centos6 系统修复grub

    GRUB引导的stage1阶段损坏,系统启动会直接进入光盘引导界面,stage1.5阶段损坏,系统启动失败且不会自动进入光盘引导界面 grub-install修复grub后,则将grub相关的文件放置 ...

最新文章

  1. Windows下RabbitMQ安装及注意事项
  2. 在内存只有 24KB 的电脑上写操作系统,是怎样的体验?
  3. Jmeter性能测试之请求MXL格式报文
  4. 012_Vue计算属性
  5. 各种没有由来的问题,干!
  6. c++中std::set自定义去重和排序函数
  7. 数据库工作笔记002---新建mysql数据库的时候_对字符集和排序规则的选择
  8. js中去掉字符串中的某个指定字符
  9. 使用OpenResty搭建高性能服务端
  10. mybatis --XML 映射配置文件
  11. 智慧医院建设方案_【聚焦医改】安泰创新智慧医院建设方案惊艳中国医院院长大会!...
  12. MySQL(17)-----数值函数
  13. dsp2812 寄存器总线
  14. matlab逻辑符号怎么打,matlab逻辑符号
  15. 道一MD5校验工具发布
  16. 这个微信隐藏代码,你们现在知道还不晚
  17. CRM系统管理日常计划
  18. 彻底解决tplink路由器无法访问部分https网站
  19. oracle中文转换为unicode,Oracle数据库字符集转换成Unicode产品开发
  20. 【Android ROM定制】CyanogenMod源码下载和编译

热门文章

  1. 详尽 | PyTorch动态图解析
  2. 统计学和机器学习到底有什么区别?
  3. 栈与队列4——用一个栈实现另一个栈的排序
  4. 苹果应用上架审核规则介绍
  5. QGIS Server使用记录
  6. 虚拟化云计算平台Proxmox VE
  7. [Math]理解卡尔曼滤波器 (Understanding Kalman Filter)
  8. [分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 )
  9. VMware Coding Challenge: Possible Scores Summary: static
  10. 说经年——感悟我接触的求职简历