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

[经验分享] 解析Centos启动过程

[复制链接]

尚未签到

发表于 2018-4-23 10:06:24 | 显示全部楼层 |阅读模式
解析Centos启动过程

  第一步---加载BIOS
  
  打开电源,系统会首先加载BIOS,BIOS运行上电自检程序,对电脑的硬件设施进行完全彻底的检验和测试,检测完成后通过BIOS获取到与CPU、内存、硬盘、设备启动顺序等相关的信息。
  

  第二步---读取MBR记录
  硬盘上的0磁道的第一个扇区既是MBR,大小为512字节,存放着预启动信息、分区表信息,当系统读取到MBR记录,就会把MBR记录复制到0x7c00地址所在的物理内存之中,成为boot loader(在centos中就是grub)。
  

  第三步---加载boot loader
  在操作系统加载内核之前,会先加载boot loader,通过boot loader初始化硬件设备、建立内存映射图,从而把系统的硬件和软件环境调试到一个合适的状态,为系统加载内核做好准备。
  

  第四步---加载内核
  通过上一步,系统的硬件和软件环境已经做好准备,可以加载内核。系统首先读取内存映像,并解压内存映像,把解压之后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成linux内核的建立。
  

  第五步---定义运行级别
  内核加载成功之后,/sbin/init会首先运行,该程序会去读取/etc/inittab文件,依据文件的配置进行初始化工作,设定系统的运行级别。
  

  第六步---执行rc.sysinit
运行级别定义之后,系统会执行/etc/rc.d/rc.sysinit脚本,这个脚本会设定网络配置、启动swap分区、设定/proc等等内容,有关rc.sysinit脚本的具体功能,可以查看/etc/rc.d/rc.sysinit里面的内容。

  
第七步---加载内核模块
依据/etc/modules.conf文件或/etc/modules.d目录下的文件来加载内核模块,这个功能的实现与sys_init_module()函数和load_module()函数有关,但是我本人不是很了解这两个函数,社区中对于linux开机如何加载内核模块也没有一个很明确规范的文章,如果有些朋友对这一方面有所兴趣,可以私信我,互相学习讨论。

  

  第八步---运行不同运行级别的脚本程序
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

  
第九步---执行/etc/rc.d/rc.local
在系统启动的最后阶段,系统会执行rc.local里面的命令,这是自定义开机启动程序,可以根据自己的需求把需要开机自动运行的程序写在这个脚本里

  

  第十步---执行/bin/login程序
  login程序会提示用户输入账号及密码,如果用户名与密码输入正确,则为用户初始化环境,并将控制权交给shell,login程序成功后,系统开始设置各种环境变量。对于bash来说,系统首先寻找/etc/profile脚本文件并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其他配置文件,所有的配置文件执行后,各种环境变量也就设好了,至此整个启动过程就结束了。
  

     本文只是对Centos启动过程做一次大概的解析,其中还有很多内容未涉及,深究起来,可以写几万字呢,如果此文有勘误,欢迎大家在下面留言。
  


运维网声明 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-450783-1-1.html 上篇帖子: Nginx基础应用 下篇帖子: 安装Nginx(CentOS6.6+nginx
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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