源码:--------------------------------------------------------------------------------一. GRUB的技术特点:
  1. 支持多可执行文档格式
   GRUB支持各种a.out格式和ELF格式。
  2. 支持不符合Multiboot标准的内核
   GRUB能够直接支持多种并不符合Multiboot标准的自由操作系统内核(主要是FreeBSD,NetBSD,OpenBSD和 linux)。也能通过chainload间接引导非开放的其他操作系统。

  3. 支持操作系统模块装载。

  4. 提供文本格式可手工修改的配置文档。

  5. 菜单界面

  6. 灵活的命令行界面

  7. 多文档系统识别
  能够透明地识别多种文档系统,现在能够识别的文档系统有BSD FFS,DOS FAT16,FAT32和Linux ext2fs.这个范围仍然在扩展。

  8. 支持压缩文档的解压缩。
   能够解压缩被gzip压缩的文档,并且这个识别和解压过程是自动的和对用户透明的,这个功能大大地减少了文档的大小,减少了load的时间,这个功能对于软盘上的系统尤其有用。
  可能有些内核模块在装载时需要是压缩状态,这时解压此模块可能会画蛇添足,所以GRUB提供了另一不进行解压缩的模块装载命令。

  9. 能够读取任何已安装的设备上的数据
   支持读取软盘,硬盘上的数据,不依赖于根设备上任何的配置。

  10. 和磁盘定位的表示方法无关。

  11. 能够使用BIOS所检测到的任何RAM.
   GRUB通常能够找到PC兼容机上的全部RAM,他采用一种先进的BIOS查询技术来找到任何的内存空间。

  12. 支持硬盘的LBA模式
   GRUB通过支持LBA模式,突破1024柱面的限制,能够访问8GB以外的全部硬盘空间。

  13. 支持网络
   虽然GRUB是个基于磁盘的引导程式,但是他也支持网络功能,您能够通过TFTP协议从网络上得到操作系统映象文档并引导。

  GRUB的后继版本可能会包括一个内置的可编程语言来支持各种内核的引导参数,这还只是个操作系统引导器吗?;),并且计划加入对非PC体系结构的支持。




下载并安装GRUB

下载GRUB包
您能够到<ftp://alpha.gnu.org/gnu/grub/grub-0.5.94.tar.gz>得到GRUB,然后:

 zcat grub-0.5.94.tar.gz | tar xvf -
  会生成一个目录grub-0.5.94,再:
 cd grub-0.5.94
 ./configure
 make install
  这样GRUB就安装好了,下面您需要在您的硬盘或软盘引导区上安装GRUB引导代码。
  制作GRUB引导软盘:

cd /boot/grub
 dd if=stage1 of=/dev/fd0 bs=512 count=1
 dd if=stage2 of=/dev/fd0 bs=512 seek=1

制作GRUB硬盘引导:

  重启动用GRUB引导软盘引导,或您不想重启动也能够执行/usr/sbin/grub。两种情况都会进入命令行界面。 然后,我们首先要配置GRUB的“根设备”,也就是告诉GRUB安装所在的分区:
  grub> root (hd0,0)
  这里牵涉到GRUB的设备命名规则,将在下面介绍,此处(hd0,0)是指第一块硬盘的第一个分区。
  假如您不能够确定安装GRUB所在的分区号的话,能够通过find指令查找:
  grub> find /boot/grub/stage1
  GRUB将会查找文档/boot/grub/stage1并显示包含这个文档的设备名,当然就是我们安装GRUB所在的分区。下面就能够写引导记录了:
  grub> setup (hd0)
  这条命令将会在第一块硬盘的MBR安装GRUB引导,假如您不想在MBR安装GRUB,而是希望将GRUB安装在分区的引导扇区的话,您能够用下面指令指定安装设备:
  grub> setup (hd0,0)
  这将会在第一块硬盘的第一个分区的引导扇区安装GRUB。
  OK,现在您就能够重新启动由GRUB引导您的系统。


设备命名规则

  首先GRUB对设备的命名必须包含在小括号内,GRUB不区分IDE硬盘和SCSI硬盘,统一使用hdx,其中x指定BIOS中硬盘的编号,从零开始计数,而且通常电脑内的IDE硬盘编号在SCSI硬盘前。GRUB用fdx指定软盘设备,x是软盘驱动器号。具体命名规则如下:
  (fd0):第一软驱,GRUB还能够引导软盘上的操作系统
  (hd0,1): 第一块硬盘的第二个分区。
  (hd1,4): 第二块硬盘的第一个扩展分区,扩展的分区是从4开始编号的。
  (hd0,2,a): 专用于FreeBSD,FreeBSD有一个slice概念,把一个分区进一步分为几个slice,此处指明是第一块硬盘的第三个分区中的slice a。您也能够用(hd0,a),这样GRUB就会在第一块硬盘上找到第一个FreeBSD分区的slice a。

  让我们再来看看GRUB对于磁盘文档的命名方法:

  (hd0,1)/vmlinuz,很简单只要指定分区号和文档的绝对路径名就能够了。





引导多系统

现在来看看如何用GRUB引导我们的多操作系统,用GRUB引导后能够进入命令行模式或菜单模式,您能够通过灵活的命令行模式选择引导各个分区的操作系统,指定引导参数。
  GRUB支持三种引导方法,第一种是直接引导操作系统内核,第二种是通过chainload进行间接引导。
  对于GRUB能够支持的LINUX,FreeBSD,OpenBSD,NetBSD,GUN Mach能够通过直接引导完成,无需其他的引导扇区了,但是对于GRUB不直接支持的操作系统,需要用第二种方法chainload来完成。另外GRUB还支持网络引导,我们分别来看看这几种引导方法:
  (a) 直接引导:
  通常步骤如下:
  1.用root命令配置包含操作系统内核的根设备
  2.用kernel命令装载内核映象文档,假如这个内核引导的时候有参数的话,能够直接将参数加在内核文档名的后面。
  3.用module或modulenounzip装载内核模块。
  4.boot开始引导。
  (b) chainload引导:
  1.首先配置GRUB的根设备,用:
   grub> rootnoverify (hdx,y)
  2.开始引导
   grub> chainloader 1
   此处' 1'是指示GRUB读入分区的第一个扇区的引导记录。
  3.执行boot开始引导
  以上是一般的chainloader方式,对于DOS和WINDOWS,能够简单地用两条指令进行引导:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!