• <i id='tjchu'><div id='tjchu'><ins id='tjchu'></ins></div></i>
    <fieldset id='tjchu'></fieldset>

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

            <i id='tjchu'></i>

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

            GRUB启动全程细节窥探

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

              明白Linux的启动历程  ,对于解决Linux系统启动问题照旧很是有资助的  ,知道Linux系统在每个阶段做了哪些事  ,将会资助你更快的找到问题出处 ,并解决这些问题  。

              提醒:在举行主要文件编辑之前  ,最好是先对文件举行备份 。

              首先  ,我们来看机械启动的第一步–自检(Power-On Self Test)

              GRUB启动全程细节窥探(图一)

              点击检察大图

              在启动历程中的第一步  ,就是自检  ,自检是由电脑的BIOS(基本输入输出系统)完成的,是对机械系统组件举行检查  ,差别的盘算机架构可能有差别的检查方式  ,但它们是最终目的都是相同的  。在自检历程中 ,若是发生错误 ,警报就会发生  ,机械就会发生一系列有规则的“滴”的声音  ,来标识特定的错误;若是自检通过  ,则BIOS就会读取硬盘上的主指导记载 ,然后载入在内存中找到的指导法式  。

              主指导记载(MBR):

              GRUB启动全程细节窥探(图二)

              点击检察大图

              主指导记载(MBR)是通过BIOS读取启动驱动器的第一个512字节到内存(这里假设我们使用x86架构)在这512字节中  ,前面446字节一样平常包罗一个底层启动代码  ,由它指向硬盘中的指导法式  ,后面64个字节包罗了这个硬盘的分区表(由4个16字节组成) ,最后剩下的2个字节是Magic Number,它是用来举行错误检测 。

              指导法式(Boot Loader)

              指导法式的目的是用来载入操作系统 ,在Linux系统中 ,有许多指导法式可以使用  ,但在Linux中最主要的指导法式是LILO和GRUB;Windows也有自己的指导法式  ,叫NTLDR(New Technology Loader),你可能曾经也在windows启动的时间看到  ,这样子的信息”NTLDR is missing”;这就是windows指导法式堕落后显示的提醒信息  。

              GRUB

              GRUB启动全程细节窥探(图三)

              点击检察大图

              在当今Linux刊行版本中最为盛行的指导法式就是GRUB(GRand Unified Bootloader ),GRUB是一个写入到主指导记载和硬盘上的启动分区(/boot)中 ,而且用于加载操作系统的法式 。GRUB是基于模块化设计  ,由差别的事情阶段组成  。其中GRUB的启动阶段分为 Stage1和Stage1_5和Stage2这三部门组成  。

              Stage1

              stage1代码被写入到主指导记载的512字节中去  ,但由于MBR巨细方面的限制;GRUB stage1 通常指向GRUB的下一阶段stage1_5或stage2,GRUB是否需要载入stage1_5这取决于当前文件系统的类型  。可以检察GRUB stage1,只要在系统的/boot/grub目录下运行以下下令:

              [root@localhost grub]# file stage1
              stage1: x86 boot sector, code offset 0×48

              Stage1_5

              Stage1_5是位于Stage1和Stage2之间的中心阶段
              若是你检察过/boot/grub目录 ,你应该会看到种种差别文件系统类型名称的stage1_5文件  ,这些文件会让stage1_5阶段准确的识别文件系统类型
              以下是生存在/boot/grub目录下的stage1_5文件:

              e2fs_stage1_5
              fat_stage1_5
              ffs_stage1_5
              iso9660_stage1_5
              jfs_stage1_5
              minix_stage1_5
              reiserfs_stage1_5
              ufs2_stage1_5
              vstafs_stage1_5
              xfs_stage1_5

              Stage2

              这是grub的主要阶段  ,它通常在/boot分区中的/boot/grub/stage2位置  ,它读取/boot/grub/grub.conf文件中的设置信息来确认怎样加载内核,它拥有交互界面  ,允许你通过它来解决启动问题  ,重新或修改GRUB  ,怎样让系统事情  ,stage2给用户显示出一个图形启动菜单  ,若是没有使用相关的按键举行操作  ,如e,i键等  ,那么在划定时间内  ,没有举行选择 ,GRUB就会从默认菜单项启动  。

              /boot/grub/grub.conf

              该文件指定特定内核和initrd文件所有模块,并载入到你的Linux系统中去  。

              以下是RedHat中典型的grub.conf文件

              # grub.conf generated by anaconda
              #
              # Note that you do not have to rerun grub after making changes to this file
              # NOTICE: You have a /boot partition. This means that
              # all kernel and initrd paths are relative to /boot/, eg.
              # root (hd0,0)
              # kernel /vmlinuz-version ro root=/dev/hdb9
              # initrd /initrd-version.img
              #boot=/dev/hdb
              default=0
              timeout=5
              splashimage=(hd0,0)/grub/splash.xpm.gz
              hiddenmenu
              title Red Hat Enterprise Linux Server (2.6.18-53.el5)
              root (hd0,0)
              kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet
              initrd /initrd-2.6.18-53.el5.img

              以下是经常泛起的启动错误界面:

              GNU GRUB version 0.97 (640K lower / 3072K upper memory)

              [Minimal BASH-like line editing is supported. For the first word, TAB
              lists possible command completions. Anywhere else, TAB lists the possible
              completions of a device/filename.]

              grub>

              什么都没有  ,只有GRUB的提醒符  ,我们该怎么办 ?通过GRUB中的TAB键来手动启动,以下是操作步骤:

              grub> root (hd0,0)
              Filesystem type is ext2fs, partition type 0×83

              grub> kernel /
              Possible files are: lost+found grub initrd-2.6.18-8.el5.img System.map-2.6.18-
              8.el5 config-2.6.18-8.el5 symvers-2.6.18-8.el5.gz vmlinuz-2.6.18-8.el5

              grub> kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
              [Linux-bzImage, setup=0x1e00, size=0x1ad054]

              grub> initrd /
              Possible files are: lost+found grub initrd-2.6.18-8.el5.img System.map-2.6.18-
              8.el5 config-2.6.18-8.el5 symvers-2.6.18-8.el5.gz vmlinuz-2.6.18-8.el5

              grub> initrd /initrd-2.6.18-8.el5.img
              [Linux-initrd @ 0xfe8a000, 0x15547c bytes]

              grub> boot

              其中  ,root (hd0,0)专指第一块硬盘中的第一个分区;在kernel行中  ,你可以输入”/”,就可以检察显示内核列表  ,在输入所要启动内核名称的几个要害字符之后  ,按键让GRUB自动帮你补全;另外”ro root=LABEL=/”选项 ,来自我对RedHat系统使用的履历,你可能会有所差别;以是你需要在你的grub.conf文件中检查这些内容 。

              在initrd行  ,也可以使用同样的操作  ,显示相关内容列表  。最后  ,输入boot  ,回车  ,Linux系统就可以启动 。

              谢谢来自OwnLinux:GRUB 启动窥探的稿件