<fieldset id='czntk'></fieldset>
      <span id='czntk'></span>
        <dl id='czntk'></dl>
          <ins id='czntk'></ins>

        1. <tr id='czntk'><strong id='czntk'></strong><small id='czntk'></small><button id='czntk'></button><li id='czntk'><noscript id='czntk'><big id='czntk'></big><dt id='czntk'></dt></noscript></li></tr><ol id='czntk'><table id='czntk'><blockquote id='czntk'><tbody id='czntk'></tbody></blockquote></table></ol><u id='czntk'></u><kbd id='czntk'><kbd id='czntk'></kbd></kbd>
        2. <acronym id='czntk'><em id='czntk'></em><td id='czntk'><div id='czntk'></div></td></acronym><address id='czntk'><big id='czntk'><big id='czntk'></big><legend id='czntk'></legend></big></address>
        3. <i id='czntk'><div id='czntk'><ins id='czntk'></ins></div></i>

            <i id='czntk'></i>

            <code id='czntk'><strong id='czntk'></strong></code>

            解析Linux系统启动的引导流程

            • 时间:
            • 浏览:11
            • 来源:124软件资讯网

                LINUX是自由开源软件,在LINUX里一切都是文件,不管是下令,操作等等都是以文件形式生存,这篇博客来记载LINUX启动时的指导流程是通过哪写文件来完成的.

                使用的LINUX版本是CentOS5,CentOS和Ubuntu都是自己联系使用时的较理想版本.

                下面以CentOS5.5版本为例,先容LINUX的指导流程,详细流程如下:

                下面详细先容每一步:

                1)第一步firmware固件自检  ,主要是举行CMOS/BIOS对硬件举行POST加电自检  ,在物理条理上对硬件举行检测是否正常  。例如检查硬盘是否插好等  。

                2)第二步读取硬盘中MBR的BootLoader  ,自启动法式  ,Linux下常用的自启动法式是GRUB 。这一步主要的功效是载入内核  。内核存放在/boot目录下

                3)第三步就是载入的内核Kernel的历程 ,

                主要功效是:1、驱动硬件 ,Kernel中含有大量驱动法式 。2、启动init历程  。

                4)init历程 ,主要是读取/etc/inittab文件 ,执行缺省运行级别 ,从而继续指导  。需要注重的是init京城的PID恒为1 ,是所有历程的父历程,而init历程的负景程是0,为内核调理器Kernel scheduler  。

                5)/etc/inittab 界说了初始化的操作  。

                下令主要花样是:id: runlevels : action : process

                其中  ,如上图红框中所示

                1、run-levels运行级别有7个  ,0—6划分如下:

                0 —— halt 关机

                1 —— Single user mode 单用户模式

                2 —— Multiuser  ,withoutNFS 多用户模式但不带网络(text模式)

                3 —— Full multiuser mode 完整功效的多用户模式(text模式)

                4 —— unused 预留

                5 —— X11 图形化多用户模式

                6 —— reboot 重启

                可以凭据这7个运行级别来举行切换

                下令为:检察当前运行级别 #runlevel、 切换运行级别 #init[0 |1 |2 |3 |4 |5 |6]

                2、而acion中也有几个比力主要的取值:

                1 initdefault:指定系统缺省启动的运行级别,如上图中标出,通常用于修复  ,好比我们要进入单用户模式  ,则可以将其设置为1,不行将默认设置为0或6,否则无法启动.

                2sysinit:系统启动执行process中指定的下令

                由inittab文件内容可以看出  ,没有设置运行级别,即为无论是哪个运行级别  ,都市执行/etc/rc.d/rc.sysinit

                6)initdefault,如第五步所说到的  ,主要是读取/etc/inittab中的信息  ,判断缺省的运行级别是什么 。

                7)/etc/rc.d/rc.sysinit

                在inittab文件中运行到第21行,变是启动这个剧本  。完成系统服务法式的启动  ,如系统情况变量的设置、设置系统时钟、加载字体、检查加载文件系统、天生系统启动信息日志文件等  。由于是基础服务  ,由于其run-level设置为空::即任何级别 ,action设置为sysinit  。即该剧本在任何运行级别下都要启动  ,以完成基础服务的启动

                8)基础服务启动后  ,会执行/etc/rc.d/rc这个剧本

                加载完基础服务后  ,就要凭据差别的运行级别去启动相对应的下的目录  ,它的事情原理是先去判断系统的默认运行级别即第6步中的工具  ,然后再执行响应的rcN.d目录下的服务启动剧本如图

                9)执行/etc/rc.d/rcN.d目录下的服务启动剧本

                看下该目录下的内容:

                其中S表现要启动的剧本,K表现要关闭的剧本

                数字表现启动顺序  ,数值小的优先.主要是对一些服务的治理

                在这一步里,需要说明一下/etc/rc.d/init.d这个目录,这个目录里放的剧本是真正的剧本,而rcN.d里放置的都是init.d目录里的软毗连,也就是说所有rcN.d里的文件最终都需要来init.d里找真正的剧本

                看一下详细细节:

                执行到这一步,界面就会提醒输入用户名和密码了,也就是说系统已经起来了,输入用户名和密码的历程后面再说,这次的指导流程就竣事了

                最后需要说明的是,LINUX的指导流程的头脑大致相同,但细节由于版本的问题,在设置文件的名字或者是位置都不尽相同,此次我用的是CentOS版本,而Ubuntu版本是没有inittab文件和grup.conf文件的,以是若是有兴趣,各人可以根据这种思绪去探索探索.

                PS:关于GRUB

                GNU GRUB(简称“GRUB”)是一个来自GNU项目的启动指导法式  。GRUB是多启动规范的实现 ,它允许用户可以在盘算机内同时拥有多个操作系统 ,并在盘算机启动时选择希望运行的操作系统  。GRUB可用于选择操作系统分区上的差别内核  ,也可用于向这些内核通报启动参数  。

                GNU GRUB的前身为Grand Unified Bootloader  。它主要用于类Unix系统;同大多Linux刊行版一样  ,GNU系统也接纳GNU GRUB作为它的启动器  。Solaris从10 1/06版最先在x86系统上也接纳GNU GRUB作为启动器 。

                GRUB可动态设置;它在启动时加载设置信息 ,并允许在启动时修改 ,如选择差别的内核和initrd  。为此目的  ,GRUB提供了一个简朴的类似Bash的下令行界面  ,它允许用户编写新的启动顺序  。

                GRUB很是轻巧  。它支持多种可执行花样;它除了可适用于支持多启动的操作系统外  ,还通过链式启动功效支持诸如Windows和OS/2之类的不支持多启动的操作系统  。GRUB支持所有的Unix文件系统  ,也支持Windows适用的FAT和NTFS文件系统  ,还支持LBA模式  。GRUB允许用户检察它支持的文件系统里文件的内容  。

                GRUB具有多种用户界面 。多数Linux刊行版使用GRUB对图形界面的支持  ,提供了定制的带有配景图案的启动菜单  ,有时也支持鼠标  。通过对GRUB的文字界面的设定  ,可以通过串口实现远程终端启动  。

                GRUB可以从网络上下载操作系统镜像  ,因此可以支持无盘系统 。GRUB支持在启动操作系统前解压它的镜像  。

                与其它启动器差别  ,GRUB可以通过GRUB提醒符直接与用户举行交互  。载入操作系统前  ,在GRUB文本模式屏幕下键入c键可以进入GRUB下令行  。在没有作业系统或者有作业系统而没有"menu.lst"文件的系统上  ,同样可以进入GRUB提醒符 。通过类似bash的下令  ,GRUB提醒符允许用户手工启动任何操作系统  。把合适的下令记载在"menu.lst"文件里  ,可以自动启动一个操作系统  。

                GRUB拥有富厚的终端下令 ,在下令行下使用这些下令  ,用户可以检察硬盘分区的细节  ,修改分区设置  ,暂时重新映射磁盘顺序 ,从任何用户界说的设置文件启动  ,以及检察GRUB所支持的文件系统上的其它启动器的设置  。因此  ,即便不知道一台电脑上安装了什么  ,也可以从外部装备启动一个操作系统 。

                GRUB接纳转动屏幕选择想要启动的操作系统  。通过向"menu.lst"文件中添加相关信息 ,GRUB可以控制150或者更多的启动选项  ,在启动时用偏向键举行选择  。

                通过链式启动  ,一个启动器可以启动另一个启动器 。GRUB通过2到3行的下令就可以从DOS、Windows、Linux、BSD和Solaris系统启动  。

                只管GRUB为类Unix系统举行了编译和打包  ,但也有供DOS和Windows使用的GRUB 。GRUB也可以不附带任何操作系统而作为伶仃系统安装  。从CD上启动时运用GRUB需要1个文件  ,而从软盘、硬盘和USB装备上启动时需要2个文件  。这些文件可以在任何支持GRUB的Linux CD上找到  ,用户可以很容易的找到它们  。