GRUB

其他比较不错网址:http://www.sudu.cn/info/index.php?op=article&id=300753


1、GRUB简介:

    现在 GRand Unified Boot loader 已经取代LILO在引导加载程序方面的统治地位,GNU GRUB基于原来的GRUB程序,正在有自由软件基金会进行积极的开发;GRUB不仅可以对各种发行的版本Linux进行引导,也能够正常引导PC上其他常见的操作系统。启动引导器是计算机启动过程中运行的第一个真正的软件,计算机启动时在通过BISO自检后读取并运行硬盘主引导扇(MBR)中的启动引导器程序,启动引导器在负责加载启动硬盘分区中的操作系统。如果启动引导器不能正常工作,将导致操作系统不能正常启动,从而整个计算机瘫痪。通常,每个操作系统在安装过程中都要将自带的启动器写在硬盘(MBR),以便能过进行自身的引导。

2、GRUB引导系统

    两种方式:

   1,直接引导方式
  GRUB同时支持linux,openbsd,freebsd,netbsd等系统
  通常步骤如下:
  (1)通过'root'指令来设置GRUB的主设备指向操作系统映像文件所存储的地方
  (2)通过'kernel'命令来载入该操作系统的核心映像.如需参数,在后面添加
  (3)如果需要模块,通过'module'命令来加载模块
  (4)运行命令'boot'启动系统
 2,链式引导方式
  如果你要启动一个不被GRUB直接支持的操作系统(例如:xp),可以通过链式引导启动一个操作系统.将
  开机的指针直接指向装有该操作系统分区的bootsector(即该分区的第一扇区),使其激活.
  主要步骤如下:
  (1)通过'rootnoverify'命令设置GRUB的主设备指向一个扇区(同'root'区别是不挂入分区)
  (2)通过'makeactive'命令来设置在扇区上的'active’标志位
  (3)通过'chainloader' 命令来加载引导程序.'+1'表明GRUB需要从起始分区读一个扇区
  (4)运行命令'boot'启动系统  

3、GURB的界面

    启动菜单界面:当你正确安装Linux之后,就可以从硬盘引导系统进入GRUB;

    菜单编辑界面:“e”进入该界面;

    GURB的命令行方式:有两种方法进入命令行界面;

    一种是从GURB启动菜单进入命令行界面,

    另一种从shell状态下使用grub命令进入命令行界面(有限制);

4、GURB的配置文件gurb.conf

    默认的配置文件“boot/gurb/gurb.conf”,在GURB成功安装到硬盘主引导扇区(MBR)后,只要编辑该文件就可以实现对GRUB的配置,不需要重新写GRUB到MBR。为了保持与其他系统的兼容性和文件的一致性,系统分别在“boot/gurb”和“/etc“两个目录中建立了名为gurb.conf的符号链接文件,指向真正的配置文件”/boot/gurb/menu.lst“。

首先来看一下/boot/grub/menu.lst中的内容:

==========================================================

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You do not have a /boot partition. This means that

#          all kernel and initrd paths are relative to /, eg.

#          root (hd0,0)

#          kernel /boot/vmlinuz-version ro root=/dev/hda1

#          initrd /boot/initrd-version.img

#boot=/dev/hda

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title Fedora Core (2.6.18-1.2798.fc6)

       root (hd0,0)

       kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet

selinux=0

       initrd /boot/initrd-2.6.18-1.2798.fc6.img

title Windows XP

rootnoverify (hd0,3)

chainloader +1

===========================================================

default 0:grub的默认启动项

timeout 5: 指定一个超时值,单位为秒,若用户在grub等待的超时时间范围内没有任何操作,则启动默认项

hidemenu: 开机时是否显示多选项菜单,若被设置则启动的时候默认不显示选项菜单,否则grub启动时自动显示选项菜单

color white/blue: 指定grub菜单的默认颜色

password --md5 $1$etSG6$LlxT8irAfAv5vYQn6tZUw1: 指定一个密码,启用grub的密码保护,这个命令需要放置在title下第一行。为安全起见,一般使用md5值,这个值可以使用grub-md5-crypt或者在grub shell中使用md5crypt生成,也可以直接使用字母或者数字。当要修改加密的启动项时,需要按p键,然后输入密码。需要注意的是为了放置点击e,进入编辑模式,然后删除密码字段,再按下b启动系统,这时可以将密码设置设置在整体上,而不是放置在某一个title下,相对应的title下增加一行lock <==多了死锁的功能

产生MD5密码命令示例如

#grub-md5-crypt

Password: <==输入密码

Retype password: <==再输入一次

$1$kvlI0/$byrbNgkt/.REKPQdfg287. <==这就是产生的md5 密码!

root:根文件系统的位置。

ro:可读写,当启动分区是JFS等格式时需要使用此参数使得系统可以在启动是存放日志。

quiet:安静模式,不显示核心检测的信息。

splash:显示徽标。

locale:指定locale

vga:指定终端的显示模式。

chainloader +1 :告诉GRUB使用一个链式加载程序来加载这个OS,加载Windows时需要这个选项。

5、GURB的初始引导过程:

   明确三个阶段:

    Stage1
     这是一个基本必须的用来启动GRUB的映像文件.通常,这个文件是被装载到MBR或者启动扇区所在
     的分区.由于PC的启动扇区的大小为512字节,所以这个映像文件编译以后也必须为512字节.Stage1
     的全部的工作是从本地磁盘把Stage 2或者Stage 1.5装载进来.由于对stage1大小的限制,它通
     过分程序表的形式来编码Stage 2或者Stage 1.5的位置,所以在stage1是不能识别任何文件系统
   Stage2
     这是GRUB的核心映像.它几乎做了除启动它本身以外的所有事情.通常,它被存放为某一种文件系统     下,但并非是必须的.
  Stage1.5
     做为stage1与stage2之间的桥梁,也就是说,stage1载入stage1.5,然后stage1.5载入stage2.
     stage1与stage1.5之间的区别是,前者是不识别任何文件系统的但后者识别文件系统(例如
     'e2fs_stage1_5'识别ext2fs).所以你可以安全的移动stage2位置,即使是GRUB安装完以后.


注: 在我的系统中.stage1被安装到了mbr,也就是硬盘第一扇区,而stage1.5被安装到了mbr以后的扇区,
    根据大小完全复制进去,并且stage1.5的类型为/boot分区的文件系统类型


GRUB引导操作系统的简要流程


  (1)BIOS 执行INT 0x19,载MBR至0x7c00并跳转执行如果你安装GRUB到MBR,GRUB的安装程序会
      把 Stage1(512B)拷贝到MBR.视Stage2的大小,安装程序会在Stage1中嵌入Stage1_5或者
      Stage2的磁盘位置信息.
  (2)Stage1开始执行,它在进行直接加载Stage1_5或者Stage2并跳转执行.不论是哪种情况,这一步
     的结果都是Stage2开始运行.
  (3)Stage2这个小型的操作系统终于开始正式运行了!它会把系统切入保护模式,设置好C运行环境
     (主要是BSS).他会先找config文件(就是我们的menulist),如果没有的话就执行一个Shell,
     等待我们输入命令.然后Grub的工作就是输入命令-解析命令-执行命令的循环,当然Stage2本身
     是为加载其他操作系统而存在的,所以如果情况允许,在他执行Boot命令以后就会把控制权转交出去.


    与LILO类似,GRUB在初始加载时,从MBR加载第一阶段程序,加载后。它进入第一阶段和第二阶段引导加载程序之间的中间阶段。之所以存在中间阶段是为了能够对/boot/gurb中的GRUB配置文件进行常规的文件系统访问,而不是访问磁盘块。然后进入引导加载程序的第二阶段,GRUB加载gurb.conf文件。现在应该能够看到GRUB的图形界面;

    在GRUB图形界面中,按下任何键都会停止超时的计时。然后按下"P"键,可以输入GRUB密码,并获得对GRUB交互引导选项的完全访问权限。按下以下任何一个键,应该能够使用三个选项之中的一个:

    * 要在引导之前编辑命令,请按下"E"键。这将让用户能够为当前选中的OS编辑具体的选项。GRUB会显示出与那个OS的引导相关的选项,然后可以恰当地进行编辑。当为root文件系统指定了错误的HDD时,这尤其有用。如果需要单用户模式访问机器(不需要指定密码就能够让用户获得root访问权限),那么在GRUB主屏幕上选择LINUX OS。然后与前面一样,按下"E"键 ,并移到内核那一行。然后在那一行最后添加single,并按下"B"键来使用修改过的gurb.conf进行引导。在编辑模式下所做的任何修改都不会保存到gurb.conf文件中。

  *  要修改内核参数,请按下"A"键。如果你是一位经验丰富的Linux用户,可以根据需要调整内核参数。

 *  要获得类似于BASH的命令行界面,请按下"C"键。这个小型的命令行界面允许你在系统中查找GRUB配置文件,加载另外的配置文件,编辑配置文件中的行,以及直接输入GRUB命令。如果配置的变化(比如删除了某个分区)让系统无法引导,那么可能会用到这个界面。如果需要将系统引导为但用户模式,或者要让运行级别为3而不是普通的运行级别,也可能会用到它。

6、GRUB命令参考

 分为三类:

 菜单命令: 只能用于配置文件的全局部分。

 常规命令:既能用于配置文件的全局部分,又能在命令行界面使用。

 命令行和菜单项命令:既能用于配置文件的菜单项定义部分,又能用于命令行界面。


   

本文出自 “SeaSky” 博客,谢绝转载!

你可能感兴趣的:(linux)