Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:

grub2 特征  

        1、模块化设计

 

  不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。

 

  2、支持多体系结构

 

  Grub 2可支持PC(i386), MAC(powerpc)等不同的体系机构,而且支持最新的EFI架构。

 

  3、国际化的支持

 

  Grub 2 可以支持非英语的语言。

 

  4、内存管理

 

  Grub 2 有真正的内存管理系统。

 

  5、脚本语言

 

  Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。

 

  当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善

 

        /boot/grub/grub.cfg

 

  这是Grub 2的配置文件,它的格式不同于menu.lst,以下是一个例子:

 

  set timeout=20

 

  set default=0

 

  menuentry "Chainload First Part" {

 

  set root=(hd0,1)

 

  chainloader +1

 

  }

 

  menuentry "Load Linux at Second Part" {

 

  set root=(hd0,2)

 

  linux /vmlinuz root=/dev/hda2

 

  initrd /initrd

 

  }

 

  如果你熟悉Grub,应该可以看明白里面的内容。要注意的是:

 

  a、timeout, default等参数用变量来储存

 

  d、菜单项由menuentry定义

 

  c、第1个分区是(hd0,1)而不是(hd0,0)

 

  d、当前支持的启动方式是chainload,linux和multiboot

 

  3、在Grub中使用以下的命令进入Grub2

 

  root (hd0,0)

 

  kernel /boot/grub/core.img

 

  boot

 

  (hd0,0)请用存放Grub2的分区的名字来代替

 

  4、进入Grub 2后,在菜单界面下输入 c 便可进入控制界面

基本命令

 lsmod

 

  列表当前装载的模块

 

  insmod mod_name

 

  装载模块

 

  rmmod mod_name

 

  卸除模块

 

  help [command]

 

  显示帮助

 

  ls [options] [dir]

 

  列表目录。当不带参数时,显示的是所有的硬盘设备,带参数时,显示的是目录里的子目录和文件。

 

  还有很多其它的命令,全部命令的列表在/boot/grub/command.lst里:

 

  boot cat chainloader cmp . configfile export font halt hello help initrd

 

  lsmod linux loopback ls lsmod module multiboot play reboot rescue rmmod

 

  search set source terminal terminfo [ unset vbeinfo vbetest videotest

 

  可以用help来看具体的用法

 

  注意:

 

  a、很大一部分命令都在模块里,如果输入时显示找不到命令,只需要用insmod 装载相应的模块就可以了。

 

  b、你可以定制内核,使所需的命令包在其中。

 

  从代码中编译:

 

  1、用cvs取得源代码

 

  2、当前的Grub2代码中有一个bug,使得启动后不会显示grub.cfg中的菜单,有一个补丁,在:

 

  扩展阅读里

 

  要使用该补丁,请进入grub2的目录,然后:

 

  patch -p1 < grub2-menu.diff

 

  这里假设grub2-menu.diff放在grub2目录下

 

  3、./configure

 

  然后

 

  ./make

 

  4、定制内核

 

  ./grub-mkp_w_picpath -d . -v -o core.img fat pc

 

  core.img是内核的名字,fat和pc是加入内核的模块。常用模块有:

 

  fat: 支持 fat 文件系统

 

  ext2: 支持 ext2 文件系统

 

  pc: 支持主分区扩展分区

 

  help: help命令

 

  ls: ls命令

 

  除了当前分区的文件系统的模块外,其它的都可以用insmod在进入grub2后才转载

 

  5、把core.img, boot.img, diskboot.img, *.mod, fs.lst, command.lst

 

  抄到某一分区的 /boot/grub目录下,然后编写配置文件grub.cfg

 
 
 
扩展阅读: