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

centos6系统启动流程

时间:2015-09-03 21:55:54      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:加载内核   bootloader   开机自检   系统启动   

剖析开机到登陆界剖析开机到登陆界面整个流程:

技术分享

POST开机自检:主要是检查硬件是否正常,根据cmos/bios的代码寻找启动介质(主要是硬盘)。由boot squence 找到bootloader


 读取MBR:MBR存在硬盘的0磁道0柱面第一个扇区上,大小为512个字节,其中前446是bootloader,64个字节是磁盘分区表,后两位是用来检验的


 Bootloader(引导加载器):提供一个菜单,允许用户选择要启动系统或不同的内核版本,把用选定的内核装载到内存中的特定空间中,解压.展开,并把系统控制权移交给内核.(而Bootloader里面的程序是grub,它的作用是启动内核,grub分两部分组成,stage1和stage2,stage1是在MBR里面的,为了引导stage2的。stage2是存放在分区文件系统上的,分区在系统没有启动之前是无法识别的。则需要stage1.5这个中间层来协助stage1找到stage2,当stage2引导后,会解析/boot/grub/grub.conf来加载内核)


 加载内核:根据流程图,内核的作用就是完成自身初始化(探测可识别到的所有硬件设备, 加载硬件驱动程序(有可能会借助ramdisk加载驱动),以只读方式挂载根文件系统,运行用户空间的第一个程序:/sbin/init,把系统的控制权交给/sbin/init进程)


 系统初始化:当/sbin/init进程接管内核后,读取/etc/inittab文件(centos6不在像cetons5把执行步骤放在inittab文件里面,而是以分片的方式把配置文件放到/etc/init/*.conf的各个文件里面)

 先去执行/etc/rc.d/rc.sysinit脚本进行系统初始化,初始化主要包括:

    设置主机名

    设置欢迎信息

    激活udev和selinux

    挂载/etc/fstab里面的文件系统

    设置网络时钟

    以读写的方式重新挂载根文件系统

    激活swap设备

    根据/etc/systmctl.conf文件设置内核参数

    激活lvm和soft raid设备

    清理操作 等操作

  然后根据系统默认的运行级别如(id:3:initdefault:)去执行/etc/rc.d/rc这个脚本,根据默认级别,找到/etc/rc.d/rc#.d/目录下的链接文件(K表示stop,S表示start)来执行/etc/init.d/各个服务的脚本


  上述流程执行完后,最后会执行/etc/rc.d/rc.local脚本,如果有x需要跟系统一起启动的脚本可以放在次脚本内


  完成了系统所有的启动任务后,linux会启动终端或X-Window来等待用户登录。tty1,tty2,tty3...tty6这表示在运行等级1,2,3...6的终端,都会执行都会执行/sbin/mingetty,出现登陆界面,至此系统启动完毕。


centos6系统启动流程

标签:加载内核   bootloader   开机自检   系统启动   

原文地址:http://yangbb.blog.51cto.com/10649397/1691095

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