其他比较不错网址: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” 博客,谢绝转载!