设为首页 收藏本站
查看: 191|回复: 0

[经验分享] CentOS系统启动流程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-6 14:50:34 | 显示全部楼层 |阅读模式
   CentOS的开机可分为4个主要步骤;如下图所示: wKiom1XoKbKydLKKAAEOx6wC624888.jpg
        第一步:主板加电自检,在开机后会运行,针对计算机硬件如CPU、主板、存储器等进行基本的功能检测。当POST检测到硬件部分存在问题时,一般会通过声信号(主板蜂鸣器)发出独特的指示性声信号(例如长鸣、二短一长等)表明故障位置,同时会在显示器输出故障代码或故障文字描述。
        第二步:加载MBR中的Boot Loader:  中所周知,我们的主机上有时候不只一块硬盘,也就是说,主机上有MBR中有boot Loader的设备可能不只一个,BIOS中的boot sequence便定义了开机时到MBR中找boot loader的次序,类似下图中boot项--- wKiom1XoLnrhnjrKAAJVFzDbkgQ915.jpg
在这里可以设置开机拥有boot loader(Grub)的硬件设备的先后顺序,按照此菜单中各项,从上往下查找可引导开机的设备,若第一次查找到可引导开机项,即使引导程序损坏,无法开机,也不会继续往下查找了;BIOS找到boot loader以后加载grub菜单,让用户选择要加载到内存运行的内核;
       第 三步:从第二步中的grub配置中可查找到内核的所在位置,将其加加载至内存中,内核进行自解压、展开运行后,并将硬件控制权交予内核,grub从内存中退出。
wKioL1Xo9dDQx1cLAAERHjYnifk752.jpg
可能需要ramdisk来协助挂载根文件系统的原因是,如果跟文件系统在特殊的磁盘介质上,或者是文件系统比较(例如:RAID、LVM等),内核中没有集成该设备的驱动程序,所以无法挂载根文件系统,因此需要借助于ramdisk来协助挂载。如果根文件系统在IDE磁盘,并且默认文件系统格式为ext2或ext3,即使没有ramdisk协助,根文件系统也可以挂载;ramdisk的运行机制是在内存中加载一个虚拟根文件系统去识别真正的根文件系统所需的驱动程序并加载,加载完成后,内核便可识别真正的根文件系统并将其挂载,此时ramdisk再将根切换给真正的根文件系统,自己退出内存;CentOS5上的ramdisk为initrd,CentOS6上的却是initrmfs,之所以改进的原因是因为内核的特性之一为使用缓存对加速数据访问。Initrd是将自己作为磁盘设备与内核通信,因此,initrd本来就运行于内存中,而内核还需要再次将其加载一份作为缓存,这样大大降低了数据访问效率。所以initrmfs是将自己作为运行在内存中的文件系统与内核通信的。
这里所提到默认以只读方式挂载根文件系统,是因为防止内核出bug,导致根文件系统数据丢失,所以,在系统未完全启动完成之前,只能以只读挂载”/”,待系统完全正常启动,内核便以读写模式重挂根文件系统。
以上步骤完成,便开始内核便开始启动用户空间的第一个应用程序:init(CentOS5),即/sbin/init,以CentOS5为例,init程序的工作具体如下: wKiom1Xo87eAreTTAACUEHLgHtQ669.jpg
以CentOS5为例,首先init根据其配置文件/etc/inittab中的设定,来设定系统启动的默认级别,具体的设置为:” id:3:initdefault: “ 此处的三个字段的意义为:“id”相当于行号,保持全局唯一即可,”3”表示为系统的默认启动级别;inintdefault表示进入定义级别后默认执行的操作,最后”:”后面的便是执行的process。此处第三字段为initdefault意为着设置默认,所以第四字段省略,所以这一行的意义便是设定系统默认启动进入级别3;
系统的运行级别共有7个:0级别-6级别
         0级别:关机
         1级别:单用户模式,相当于Windows的安全模式
         3级别:多用户模式,只是不启动图形界面
         4级别:保留级别,和3级别功能接近
         5级别:多用户图形模式
         6级别:重启
         第一个id行执行完成后,便开始执行执行第二行,格式为:
         Si::sysinit:/etc/rc.d/rc.sysinit这一行代码的意义为在所有级别执行系统初始化,而对应的process便是/etc/rc.d/rc.sysinit这个脚本。Init程序会执行此脚本完成设置主机名、读取/proc的文件来设定系统参数、激活lvm及raid设备等系统初始化操作,而后便开始执行指定级别下的服务脚本,具体代码为:
l1:1:wait:/etc/rc.d/rc1
l3:2:wait:/etc/rc.d/rc2
….
L3:3:wait:/etc/rc.d/rc3
每一行代表进入该运行级别后,便启动指定级别下/etc/rc.d/rc#.d(#代表0-6)目录下的所有以S开头服务脚本链接,关闭以K开头的服务脚本链接。
而后,执行/etc/inittab中的配置字段:
         tty1:2345:respawn:/usr/sbin/mingettytty1
tty2:2345:respawn:/usr/sbin/mingetty tty2
                                               ...
         tty6:2345:respawn:/usr/sbin/mingettytty6
意为设置用户终端,在2345级别下,每个级别都会开启6个终端,终端设置完成后,mingety程序会调用login程序来帮助用户进行登陆验证;
以上步骤全部完成后,便执行/etc/rc.d/rc.loacl脚本,用户可在该脚本内定义想要开机后执行的命令或脚本。
系统启动完成。
即:CentOS开机流程图汇总如下: wKioL1Xo9gqx86MLAAIKyyKbD-0276.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-110223-1-1.html 上篇帖子: Linux Directory commands: mkdir, rmdir, tree dirname,basename 下篇帖子: Linux文件系统管理—LVM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表