您的位置:首页 > 运维架构 > Linux

centos6系统启动流程

2015-09-03 13:04 429 查看
剖析开机到登陆界剖析开机到登陆界面整个流程:



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,出现登陆界面,至此系统启动完毕。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: