快速业务通道

linux 启动过程分析

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-02

开机过程详细说明:

示意图:

过程说明:
1. BIOS:系统由POST(PowerOnSelfTest,上电自检)程序来对内部各个设备进行检查;自检后,就按照系统CMOS设置中保存的启动顺序搜寻软硬盘驱动器及CD—ROM、网络服务器等有效地启动驱动器,读入操作系统引导记录,然后将系统控制权交给引导记录,并由引导记录来完成系统的顺利启动.

注:
硬盘主引导记录MBR(Master Boot Record):位于硬盘0磁道0柱面1扇区,该扇区共512bytes,其中MBR占446bytes ;MBR所做的唯一的事情就是装载第二引导装载程序.
分区表DPT(Disk Partition Table)占64bytes;
硬盘有效标志(Magic Number)占2bytes;

2. 引导扇区的前446字节,其中定义如何启动本硬盘上的系统(根据分区表找到对应分区上的内核);而对于Linux,一般多用Grub引导,grub相对较大,分为两段式的进行引导,第一段存储于硬盘MBR中,第二段放置于操作系统内核所在的分区上.Grub根据MBR中第一段找到第二段,继续引导,第二段中放置的有GRUB菜单等信息,可以让用户选择需要继续引导启动的系统;并且菜单中指定的有内核及RamDisk信息;
3. 根据用户选择将对应的内核读到内存,解压展开;然后内核开始初始化;初始化完成后需要读取根分区(根是一切的起点),这时候如果系统不是普通磁盘,是scsi或是raid形式时,就需要先加载相关的文件系统驱动来驱动该磁盘设备,从而读取根分区(鸡和蛋问题);这时候给内核提供了一个minilinux,即initrd,其中含有内核所需的一些基本模块驱动,该linux只在内存中运行.内核启动时展开该initrd来加载相应的驱动,在该驱动的补充之下从而挂载上根分区;
4. 然后运行根分区脚本/sbin/init 来初始化系统;这个客户自行程序运行会读取初始化配置文件inittab:在其中顺序定义并运行的有1.默认的运行级别 2.默认的系统服务初始化脚本sysinit位置 3.各种运行级别;系统会根据默认的运行级别,来对应执行相应级别下的脚本,该处脚本是链接文件,链接到init.d中相对应的文件,真正运行的是init.d里的脚本).

注:
rc N;表示用rc脚本去运行rc N.d目录下的脚本;rc脚本就是去执行所需级别脚本的功能脚本;
目录下的文件均为脚本链接文件,指向/etc/rc.d/rcN.d/目录,并且命名时以S或K开头,后面跟上0-99的数字;S代表启动时执行;K代表关闭时执行;01-99代表启动或关闭的级别(数字越小越优先)
5. 初始化结束前执行一个文件:/etc/rc.d/rc.local,系统会读取该脚本中的所有命令并执行一遍;但是该脚本只在启动时执行一次,系统关闭时不能执行,不要为了实现开机启动而将某些服务写入这个脚本,那样会造成服务关机时的非正常关闭;

注:
内核:模块化设计,大部分设备模块是在需要时加载驱动,并且大部分模块的驱动放置于根分区上.

开机详细流程图:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号