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 文件系统
help: help命令
ls: ls命令
除了当前分区的文件系统的模块外,其它的都可以用insmod在进入grub2后才转载
5、把core.img, boot.img, diskboot.img, *.mod, fs.lst, command.lst
抄到某一分区的 /boot/grub目录下,然后编写配置文件grub.cfg
- 扩展阅读:
-
- 1
1、下载
- 2
- 3
2、用cvs取得源代码
- 4
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/grub co grub2
- 5
3、补丁
- 6
- 1