标题：GRUB
概念
GNU GRUB 和GRUB是GRand Unified Bootloader的缩写，它是一个多重操作系统启动管理器。用来引导不同系统，如windows，linux。
在X86 架构的机器中，Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用，应该说是主流。
Windows也有类似的工具NTLOADER；比如我们在机器中安装了Windows 98后，我们再安装一个Windows XP ，在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器，NTLOADER 同样也能引导Linux，只是极为麻烦罢了。
在Powerpc 架构的机器中，如果安装了Linux的Powerpc 版本，大多是用yaboot 多重引导管理器，比如Apple机用的是IBM Powerpc处理器，所以在如果想在Apple机上，安装Macos 和Linux Powerpc 版本，大多是用yaboot来引导多个操作系统。
因为X86架构的机器仍是主流， 所以目前GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器。
  
引导过程
由硬盘启动时，BIOS通常是转向第一块硬盘的第一个扇区，即主引导记录(MBR)。　
装载GRUB和操作系统的过程，包括以下几个操作步骤：1、装载记录基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。2、装载Grub这第二引导装载程序实际上是引出更高级的功能，以允许用户装载一个特定的操作系统。3、装载系统如linux内核。GRUB把机器的控制权移交给操作系统。
不同的是，微软操作系统都是使用一种称为链式装载的引导方法来启动的，主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。4.设备名称IDE硬盘用hd开始，SCSI硬盘用sd开头。软盘用fd开头。命名和linux不大一样。是从0算起。
(hd0,0)。表示C盘。
(hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)
系统的第一个硬盘驱动器表示成(hd0)，其上的第一个分区表示为(hd0,0)，也就是说对于硬盘,采用(hdx,y)的形式来表示，x、y都是从0开始计数的，x表示硬盘号，y表示分区号。
由于主分区只能有四个，所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示；逻辑分区则从(hd0,4)开始算，即第一逻辑分区用(hd0,4)，第二逻辑分区用(hd0,5)来表示，依次类推。
一般机子的硬盘都是一个主分区，其余是逻辑分区。因此C盘用(hd0,0)，D盘用(hd0,4)来表示。 光盘用(cd)表示，第一软驱用(fd0)表示。
文件的表示：( , ) /path/to/file
在Linux系统中，如ubuntu，(hdx,y)中的y是从1开始计数的。第一逻辑分区用(hd0,5)，第二逻辑分区用(hd0,6)来表示
装置
Lilo
Grub
IDE1 master
hda, hda1, hda2
(hd0), (hd0,0), (hd0,1)
IDE1 slave
hdb, hdb1, hdb2
(hd1), (hd1,0), (hd1,1)
IDE2 master 
hdc, hdc1, hdc2
(hd2), (hd2,0), (hd2,1)
IDE2 slave 
hdd, hdd1, hdd2 
(hd3), (hd3,0), (hd3,1)

文件系统
一些用户常困惑于GRUB中根文件系统(root filesystem)这一术语的用法。GRUB的根文件系统与Linux的根文件系统是没有关系的！
接口
当GRUB环境开始载入第二步引导装载程序时，它寻找自己的配置文件（menu.lst）。当找到配置文件后，它使用这个配置文件建立一个要载入的操作系统的菜单列表， 然后显示引导菜单接口。 如果配置文件没有被找到，或者如果配置文件不能读取，那么GRUB将载入命令行接口。（一）菜单接口在菜单接口上，按[e]键，对高亮菜单项中的命令进行编辑。按[c]键载入一个命令行接口。 添加(加在当前行后面(用[o]键)，加在当前行前(用[0]键)，编辑(用[e]键)，删除(用[d]键)。
在所有的改变都完成后，用[Enter]键来执行这些命令，并引导操作系统。[Esc]键来放弃
命令行接口（二）命令接口以下是几个常用命令：
boot - 引导先前已经被指定并载入的操作系统或链式装载程序。 
chainloader - 将指定的文件作为一个链式装载程序载入。为了获取在一个指定分区第一 扇区内的文件，使用+1作为文件名。 
displaymem - 显示当前内存的使用情况，这个信息是基于BIOS的。这个命令有助于确定系统在引导前有多少内存。 
initrd - 使用户能够指定一个在引导时可用的初始RAM盘。当内核为了完全引导而需要某些模块时，这是必需的。 
install p - 安装GRUB到系统的主引导记录。这个命令允许系统重启时出现GRUB接口。 
（警告：install命令将覆盖主引导扇区中的其他信息。如果命令被执行，那么除了GRUB信息之外的其他用于引导其他操作系统的信息都将丢失。在执行这条命令前，确定你对它有正确的了解。）
kernel - 当使用直接载入方式引导操作系统时，kernel命令指定内核从GRUB的根文件系统中载入 。
比如 kernel /vmlinuz root=/dev/hda5
Vmlinuz是内核。。它从GRUB的根文件系统载入的，如(hd0,0)。同时，后面一个选项被传给内核。它指出当Linux内核载入时，内核的根文件系统应该是位于hda5，第一个IDE硬盘的第五个分区。
命令
color - 设定在菜单中使用的颜色，一种是作为前景色，一种作为背景色。可以简单地使用颜色名称，如red/black。比如： 
color red/black green/blue 
default - 默认项目的标题名称。如果菜单接口超时，那它将被载入。 
fallback - 当这个命令被使用时，如果第一次尝试失败，那么这个项目的标题名称将被使用。 
hiddenmenu - 这个命令被使用时，它不显示GRUB菜单接口，在超时时间过期后载入默认项。用户通过按[Esc]键，可以看到标准的GRUB菜单。 
timeout - 这个命令设定了在GRUB载入由default命令指定的项目的时间间隔，以秒为单位。 
splashimage - 它指定在GRUB引导时所使用的屏幕图像的位置。  grub[1]
title - 设定用来装载一个操作系统的一组特定命令的标题。 
字符#用来在菜单配置文件放置注释。
例子
这是个非常基本的用于引导Red Hat Linux或Microsoft Windows 2000的GRUB菜单配置文件可能如下所示： 
default=linux 
timeout=10 
color=green/black light-gray/blue 
# section to load linux 
title linux 
root (hd0,1) 这里制定了 grub的根。并且挂载。
kernel /vmlinuz root=/dev/hda5 内核是grub根下的vmlinuz。
并且内核载入后，内核的根是在/dev/hda5
boot 
# section to load Windows 2000 
title windows 
rootnoverify (hd0,0) rootnoverify就是指定根，但是不要挂载。
chainloader +1 使用(hd0,0)的第一扇区来引导。
Linux
1.安装wingrub在安装软件到机器中时，就直接按它默认的安装，下一步、下一步就好了
在安装过程中会出现一个Base Setup的提示窗口，ChooseDrive即是grub配置文件的存放位置，一定要选一个（一般选择第一个，提醒你注意软件的标题栏，不同的选择会显 示的不一样），如果你选择cancel，则不会有menu.lst 文件产生（这个文件很重要），Base Setup提示窗口下面的copy stage files和keep old directory不点击也可以，它们的区别就是前者把grub文件夹中的文件和menu.lst一起放在新产生的grub文件夹下，而后者新产生的 grub文件夹中只有menu.lst ，如果不点击则只会产生只含menu.lst文件的grub文件夹，都点击则是copy stage files那种情况。2.安装grubGRUB的一个重要的特性是安装它不需依附一个操作系统；但是，这种安装需要一个Linux副本。由于单独工作，GRUB实质上是一个微型系统，通过链式启动的方式，它可以启动所有安装的主流操作系统。
与LILO不同，修改GRUB的配置文件后，不必把GRUB重新安装到MBR或者某个分区中。
在Linux中，“grub-install”命令是用来把GRUB的步骤1安装到MBR或者分区中的。GRUB的配置文件、步骤2以及其它文件必须安装到某个可用的分区中。如果这些文件或者分区不可用，步骤1将把用户留在命令行界面。
GRUB配置文件的文件名和位置随系统的不同而不同；如在Debian和OpenSUSE中，这个文件为/boot/grub/menu.lst， 而在Fedora和Gentoo中为/boot/grub/grub.conf。Fedora提供了一个从/etc/grub.conf到/boot/grub/grub.conf的符号链接。
除了硬盘外，GRUB也可安装到光盘、软盘和闪存盘等移动介质中，这样就可以带起一台无法从硬盘启动的系统。3.软件使用打开wingrub程序，选择 tools菜单，然后点击Install grub ，弹出一个对话框；如下图所示：
  这里面有两个方法供选择； 
A) 直接单击Boot From MBR Partion ，然后单击右边的下拉菜单；选择要把Linux系统安装在哪个分区中，再单击最下边install按钮。
在下拉列表框中，如果看到(hd0,0)或者(hd0,1)等，则选(hd0,0)；如果只看到(hd0,1)，说明计算机硬盘的第一个分区是NTFS的文件格式，如果看不到什么下拉列表框，就使用下面的办法，
B)选择Systerm Device ，在右边的下拉列表框中，选C：然后再选中BOOT FROM 下的BOOT.INI 单选按钮，在Title 中输入mygrub ；最后在 Time OUT 中输入30；
单击Install按钮，这样grub就安装好了。
grub的配置文件在c:\grub\中（如果你的不是，则可以从wingrub的标题栏看出），配置文件名为menu.lst ，这个配置文件起到决定性作用；所以一定要编辑好。
A和B还是有一些区别，A的方法是开机就能看到所有在menul.lst中的系统；而B，则必须按一下刚才所填写的mygrub ，然后才能看到在menu.lst所提到的系统。
【个人首选B项，因为A安装的grub会覆盖掉原有的启动引导程序，即重写了MBR，而B则是把原有的引导程序修改了，加了一个启动项。如果你想安 装两个系统,Windows为主，Linux为副，那么B就可以更好的实现。当然，在安装Linux时也要注意安装程序中有一个“配置高级引导装载程序选 项”就是对grub的安装位置进行设置。　
▲▲▲配置启动文件▲▲▲ 
运行wingrub，单击菜单中的tools菜单选择Partition　List（分区列表），在这里能了解到硬盘的分区情况，比如可能看到 FAT32的分区是（hd0，1）等，要把Linux的光盘映像文件保存在fat32分区中；通过这个能知道把光盘ISO存放到（hdX，Y）了，也能知 道（hdX，Y）所对应的Windows分区是C，是D，还是E。    配置启动文件的过程如下：
1]先找一个FAT 32的分区，把下载下来的ISO直接放到分区的下面，不要放在任何目录中，这个分区里也不要存放其他文件。 
2]在这个分区中，再新建一个文件夹，命名为linux，从下载的第一张Linux系统安装ISO文件isolinux中抽取 vmlinuz 和 initrd.img 两个文件，放到linux目录中： 注意只放这两个文件，不要再存放其他内容，如果放进其他的内容，有可能出现安装程序中途退出的情况。
注意：抽取文件可以使用WinRAR软件，另外，输入文件夹时文件夹名是小写；在输入menu.lst 文件名时，要用半角英文，标点之类的全是半角；title root kernel initrd 全是小写的英文；如果文件夹或文件名输入出错，在安装时安装程序会提示找不到文件。4.编辑menu.lst  Menu说明
[2]当打开menul.lst 时，可能里面已经有内容了，比如有个 timeout 10 ，如果没有则可以自己写上（这是开机等待进入系统的时间，为时10秒）。
root [开机根目录 / 所在的磁盘代号]
kernel [开机档案的所在地完整档名] [root=/dev/硬盘代号]
范例：
root (hd0,0)
kernel /boot/vmlinuz-2.4.19-16mdk root=/dev/hda1
设定上面就是这样而已！所以，开机完毕之后，请将您的 kernel 文件名称(完整档名)与开机的根目录所在的磁盘代号记忆一下，那么下次就可以手动设定开机设定项目呢！但如果是 windows 方面的设定时，那就直接使用 chainloader 这个项目即可，有点像这样：
chainloader [硬盘代号] +1
范例：
chainloader (hd1,0) +1
title WindowsXP # 计算机中已经安装了windows系统 ，用来启动windows的，这四行代码如下所示。
title WindowsXP
root (hd0,0)
makeactive
chainloader +1
menu.lst 文件的配置引导说明，通过menu.lst ，可以配置 Linux的启动和引导：也可以引导已经安装好的Linux系统。语法结构有以下的四条，举例如下：总共有两个书写格式，任选其一；
格式一：最简单：
title fc4install
root (hd0,1)
kernel (hd0,1)/linux/vmlinuz
initrd (hd0,1)/linux/initrd.img
title 行是在在开机时所看到的菜单，显示的就是 fc4install ，它要加在 title 的后面。title是必须保留的，它是grub的语法的标签，可以在title 后面写入想要添加的东西，这是可以自己定义的，比如 title fc4setup也是可以的。
root (hd0,1) 行使用　root开头，然后加一个空格，至于用户把vmlinuz和initrd.img 放在哪个分区了，可以打开 wingrub，单击tools菜单选择partioinlist （分区列表），在打开的对话框中查到。
kernel 命令行以kernel 开头，然后加一个空格，并在其后给定vmlinuz文件存放路径，这个命令行的作用是告诉计算机将使用(hd0,1)分区下的linux目录中的kernel 内核来启动；
initrd 行和 kernel 行类似；主要用于指明安装的文件放在哪个分区和哪个目录中，即在该命令后指定文件的安装目录。
基本的说明已经在上表当中了，这里需要在说明的是关于 default 开机档的计算。如果今天我有四个开机设定档，那么 default 算的是什么呢？就是『排序』啦！假如我底下依序出现的设定档 title 分别是 linux, linux-test, windows, failsafe 的话，那么开机的时候， grub 的选单就会显示：
linux
linux-test
windows
failsafe
其中，linux 就是 0 ，而 failsafe 就是 3 ，如果您要调整开机时后的选单顺序，就在 /boot/grub/menu.lst 修改一下他们的顺序即可！
格式二：比较麻烦一点：理解着看吧；
title fc4install
root (hd0,1)
kernel /linux/vmlinuz ro root=/dev/hda2
initrd /linux/initrd.img
title 这行就是我们在开机时，所看到的菜单 ，显示的就是 FC4install ，要加在 title 的后面，title是必须保留的，是grub的语法的标签 ，我们可以在title 后面写我们想要加的东西，这是自己可以定义的，比如 title fc4setup也是可以的；
root 这行，在本例中是 root (hd0,1)，这行就是我们打开 wingrub，点tools =》partioinlist （分区列表） 中查到的；我们通过这个知道我们把解压出来的 vmlinuz和initrd.img 所处的分区和路径；比如我的机器，我查到的是 (hd0,1)，对应的Windows FAT 32分区是D，事实上，我的确把四个光盘映象都放在了 (hd0,1)，也就是win中所看到的D盘； 并且我同样也把提取出来
vmlinuz 和initrd.img 放在了(hd0,1)中的linux目录中； 不知道自己存放提取出来的内容放在哪个分区了，就用 打开 wingrub，点tools =》partioinlist （分区列表） 中查看；
kernel 这行；注意在 kernel后面有个空格，接着写 vmlinuz所处的位置 ，在哪里呢？在 /dev/hda2，这个/dev/hda2是怎么来的？是由(hd0,1)而来的，如果您的显示的是 (hd0,2)，那root=/dev/hda3，明白了吧，就是(hdX,Y)中的Y+1=Z，就是/dev/hdaZ ，再举一例：比如我们把提出来的vmlinuz 和initrd.img 放在了 (hd0,5)的linux 目录中，这时应该写 root=/dev/hda6 ；
有可能有的弟兄说，我放在了 (hd1,6)的分区，这怎么办？这个也不难，我们这里面的所提到的 (hdX,Y)，中的X可能是0 、1、2等 ，所以对应的是 hdaZ ，hdbZ，hdcZ ，如果您看到的是(hd1,6) ，所以对应的是/dev/hdb7 。
initrd 这行，原样搬上就好；
完整menul.lst 应该如下：在这之中，引导Linux的，有两种写法，都在里面，哪种都是可以启动引导安装的；
这是第一种写法
timeout 10 
title WindowsXP
root (hd0,0)
makeactive
chainloader +1
title fc4install
root (hd0,1)
kernel (hd0,1)/linux/vmlinuz
initrd (hd0,1)/linux/initrd.img
这是第二种格式的写法
timeout 10
title WindowsXP
root (hd0,0)
makeactive
chainloader +1
title fc4install
root (hd0,1)
kernel /linux/vmlinuz ro root=/dev/hda2
initrd /linux/initrd.img
编辑好后，就可以进入引导安装，此时，如果系统仍然产生错误，例如出现找不到文件之类的提示。就需要查看文件存放路径是否正确，如果能够引导进入安装，则 需要选择ISO映像所存放的FAT32磁盘的分区，然后按Enter键执行安装。
在安装过程中，以下的几个情况是要注意的：
1、在FC4的安装过程，安装分区时要自定义，不要让系统自动分区；要自己指定Linux 安装到哪个分区。我们可以在用windows分区工具，分出两个空白区，一个要大一点，最好是10G 以上，另外一个是内存的两倍（对于小内存的机器来说，大内存的机器分上512M 就行了；在安装时，我们要把大的分区用来装系统，点一下那个分区，出现挂载点，选择/ ，然后格式化成 ext3或者 reiserfs 等文件系统；把小一点的分区格式化成swap ，这是Linux的交换区；
当然如果您有未用过的空白区，不用windows分区工具来分也行，在安装过程中，可以用linux的分区工具来划分，点几下鼠标就行了；这是对RH 和/FC 或者 的安装来说的，Madrake 也一样；
2、对于有些系统版本要把ISO抽取出来都放在一个目录中才能进行，比如Slackware 发行版；
3、看到大家反馈的情况，有的弟兄说中途退出与放ISO的分区的下有中文目录或者中文文件有关；如果找不出问题所在，就把ISO放在一个FAT32的空白分区上。
【安装成功后，只用保留文件名为GRLDR的文件，即可实现用Windows引导程序引导Linux。】
▲▲▲安装Fedora▲▲▲
重新启动电脑，就可以启动菜单，选择Fedora的安装启动选项进行安装。