感谢支持
我们一直在努力

Linux开机启动详解

Linux开机启动过程指的是从打开计算机电源到显示用户登录画面的过程。


第一步:加载BIOS


BIOSBasic Input Output System信息存储在计算机的主板上,需要靠主板的锂电池来维持。其中包含有CPU、硬盘、内存等计算机自身最基础的信息。计算机加载BIOS与安装的操作系统没有任何关系。


第二步:读取MBR


BIOS加载完毕后,计算机将控制权转交给硬盘第0磁道第1扇区,也就是硬盘的MBRMaster Boot Record,俗称主引导记录。MBR的容量很小,一般只有512字节,里最主要的部分是分区表和引导程序,受物理大小的限制,分区表只能存储4个硬盘分区的信息,所以硬盘都只能有4个主要分区。引导程序指的是grublilo这类的东西,这些程序也可以不写在MBR里,而是直接写在硬盘的数据区域里,一般装系统的时候会提示让你选择安装的引导程序的位置。


第三步:加载引导程序(Boot Loader)


引导程序是为加载内核前的一小段程序片,帮内核准备一些环境,同时还记录有内核的地址。如上所述,引导程序可能存在MBR里也可能存在硬盘数据区域里。


第四步:加载Linux内核


根据引导程序记录的内核地址加载内核以及内核的外挂模块,还有swap等数据。到了这一步才算是真正进入了Linux的世界。


第五步:执行init程序


1.   init程序首先寻找的文件是/etc/inittab,该文件定义了系统的运行级0-6





























运行级


定义


0


关机


1


单用户模式


2


无网络支持的多用户模式


3


有网络支持的多用户模式(标准级)


4


保留,未使用


5


有网络支持有X-Window支持的多用户模式


6


重新引导系统,即重启


更多运行级的信息可以参考其他资料。


提前声明:2和3的顺序我不确定。


2.   init程序接着会加载/etc/rc.d/rc0.d~rc6.d目录下的文件,0~6的数字代表着该目录的运行级,目录里面的文件如S80postfix、K45named,其中S代表start,K代表kill,数字代表顺序。这些目录下的文件即是Linux启动项组成的一部分,主要是跟系统紧密相关的一些启动项,建议不要随便修改。


3.   init程序接着会加载/etc/rc.d/init.d目录下的文件,这些文件一般是使用rpm安装的时候生成的启动项,主要以二进制文件为主。chkconfig命令管理的就是这些文件了。www.linuxidc.com 顺便提一下另一个目录/etc/init.d,该目录其实都是软链接过去的,本质上和/etc/rc.d/init.d是同目录。


4.   系统内置的启动项加载完了,init程序会加载用户自定义的启动脚本,文件为/etc/rc.d/rc.local,打开这个文件写着:


#This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.


如果你想在系统启动的时候加载自己写的一些脚本,没错,就是它了!


第六步:运行登录程序。


不多说,/bin/login


附上一张逻辑图,理解更深刻些。



 



以上是综合网络资料和自己经验的结论,有错误的地方麻烦大神指点一二。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux开机启动详解
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏