<code id='2fo32'><strong id='2fo32'></strong></code>
      <i id='2fo32'><div id='2fo32'><ins id='2fo32'></ins></div></i><span id='2fo32'></span>

      <acronym id='2fo32'><em id='2fo32'></em><td id='2fo32'><div id='2fo32'></div></td></acronym><address id='2fo32'><big id='2fo32'><big id='2fo32'></big><legend id='2fo32'></legend></big></address>
      <fieldset id='2fo32'></fieldset>

        1. <tr id='2fo32'><strong id='2fo32'></strong><small id='2fo32'></small><button id='2fo32'></button><li id='2fo32'><noscript id='2fo32'><big id='2fo32'></big><dt id='2fo32'></dt></noscript></li></tr><ol id='2fo32'><table id='2fo32'><blockquote id='2fo32'><tbody id='2fo32'></tbody></blockquote></table></ol><u id='2fo32'></u><kbd id='2fo32'><kbd id='2fo32'></kbd></kbd>

          <dl id='2fo32'></dl>

          <i id='2fo32'></i>

          <ins id='2fo32'></ins>

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

          • 时间:
          • 浏览:5
          • 来源: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上找到  ,用户可以很容易的找到它们  。