码迷,mamicode.com
首页 > 其他好文 > 详细

Centos系统启动流程

时间:2016-03-27 00:09:00      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:程序   计算机   检测   system   bootloader   


Centos系统启动流程


  启动流程: POST --> BootSequence(BIOS) --> Bootloader (MBR) ->kernel (ramdisk) --> rootfs (switch_root) --> /sbin/init (/etc/inittab,/etc/init/*.conf, /usr/lib/systemd/system/)--> 默认运行级别、系统初始化、关闭及启动服务、启动终端(图形终端)


图解:

技术分享(1)POST

第一步首先加电自检,计算机本身不会执行程序,由此它会载入一段程序,它会在开机时自动实现将某个RAM中的程序映射到cpu可以寻址的地址空间中去,并且可以让cpu可以执行其中的指令,而这些指令是完成系统检测的,检测完成之后,当所有的硬件或基本的核心硬件没有问题的话就进行BIOS。

(2)BIOS

根据BIOS中所设定的程序启动流程去找与其对应设备上的MBR,按照引导次序执行(Boot Sequence),根据引导次序逐个查找对应的存储设备上的MBR,若MBR存在,则读取MBR上的BootLoader,BootLoader是一段程序,早期的MBR总共512字节,但它留给BootLoader空间大小是446字节,在BootLoader当中配置了所有引导的操作系统的内核的位置,因此BIOS在载入内存以后,当它实现将控制流程或控制权限转交给BootLoader以后,BootLoader就接收了整个系统的控制权限,而后根据用户的选择,去读取相应操作系统的内核。

 技术分享

grub: GRand Unified Bootloader

grub 0.x: grub legacy

grub 1.x: grub2 grub legacy:

stage1: mbr

stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;

stage2:磁盘分区(/boot/grub/)配置文件:/boot/grub/grub.conf <-- /etc/grub.confstage2及内核等通常放置于一个基本磁盘分区;

/boot/grub/grub.conf:

技术分享

(3)第三步:将内核装载进内核中合适的位置,解压缩并完成内核初始化,BootLoader会把控制权限转交给内核。

技术分享

(4)第四步:如果内核访问根文件系统的设备需要用到某个驱动程序,而内核中也没有,就需要到根文件中去找这个驱动程序,但这文件系统本身又没有挂载,因此要想访问根文件系统得先找到驱动,要访问驱动得先找到根文件系统,这就出现了一个难题,这时就要借助于initrd,为内核提供访问真正的根文件系统所需要的基本驱动程序。因此initrd是一个辅助性的、过渡性的中间层。它能够实现将kernel与真正的根文件系统连接起来,当连接完成之后它就没有任何意义了。

Linux Kernel:

        CentOS启动流程:POST--> Bootloader(BIOS, MBR) --> Kernel(initrd) --> rootfs -->switch_root --> /sbin/init

内核设计体系:单内核、微内核

Linux:单内核设计,但充分借鉴了微内核体系的设计的优点;为内核引入了模块化机制;

内核的组成部分:

kernel:内核核心,一般为bzImage,通常位于/boot目录,名称为vmlinuz-VERSION-release

kernel object:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/

技术分享

 (5)第五步:执行init进程,而init程序本身的配置文件是/etc/inittab(而在Centos 6上init不在是传统的init,而是upstart,而upstart的配置文件在/etc/inittab和/etc/init/.*conf下的所有文件

1.  根据boot loader的设置加载Kernel 会主动调用init进程,而init会取得run-level信息

2.  init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络、时区等)

3.  init执行run-level的各个服务的启动(script方式)

4.  init执行/etc/rc.d/rc.local文件

5.  init执行终端机模拟程序mingetty来启动login进程,最后就等待用户登录


技术分享


字符界面:


技术分享


图形界面:


技术分享

 

 

 


Centos系统启动流程

标签:程序   计算机   检测   system   bootloader   

原文地址:http://angelababy.blog.51cto.com/6326130/1755530

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!