GNU GRUB(简称"GRUB")是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
GNU GRUB的前身为Grand Unified Bootloader。它主要用于类Unix系统;同大多Linux发行版一样,GNU系统也采用GNU GRUB作为它的启动器。Solaris从10 1/06版开始在x86系统上也采用GNU GRUB作为启动器。
注意:目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本号是 0.9x 以及之前的版本都称为 GRUB Legacy ,从 1.x 开始的就称为 GRUB 2。
中文名称 | GRUB2 | 简称 | GRUB |
---|---|---|---|
来源 | 来自GNU项目的启动引导程序 | 应用 | x86系统 |
Grub 2的内核是符合multiboot标准的,因此可以在Grub中引导。
1、下载
解压到某个FAT分区的根目录,会生成/boot/grub目录,Grub 2的文件便在该目录下。
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-mkimage -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
Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:
1、模块化设计
不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。
2、支持多体系结构
Grub 2可支持PC(i386), MAC(powerpc)等不同的体系机构,而且支持最新的EFI架构。
3、国际化的支持
Grub 2 可以支持非英语的语言。
4、内存管理
Grub 2 有真正的内存管理系统。
5、脚本语言
Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。
老师我这个算立方2*2+2*1+2*1还是(2*2+2*1+2*1)*2
2*2*1=4立方的
4根筋,分两排,每排2根。
根据平面图和节点图的位置布置,调整标高就可以了
有时候grub出现问题,不能通过启动选项启动目标操作系统,以启动一个linux为例
按c键切换到命令行模式
grub> set root=(hd0,msdos1) 设置根目录为第一硬盘的第一个分区
grub> linux /boot/vmlinuz 设置内核文件,有的linux发行版会有一个名为wmlinuz的软连 接指向真正的内核文件
grub> initrd /boot/initrd 设置initrd文件,也有可能用软连接
grub> boot 从硬盘启动
以上命令可以用tab键补全 根据实际情况有所不同
建设表 2-1 编号: 竣工工程质量验收证明书 单位工程名称: 建设花郡家园二期 建 筑 面 积: 31631.09m2 结构类型、层数: 地下 1 层 框架剪力墙 地上 15层 施工单位名称: 中联世纪建设集团有限公司 天津市建设工程质量监督管理总站监制 建设表 2-2 质 量 验 收 意 见 勘察单位: 项目负责人: 技术负责人: 年 月 日 勘察单位部门章 设计单位: 设计项目负责人: 年 月 日 设计单位部门章 施工单位: 项目经理: 总工程师: 年 月 日 施工单位部门章 监理单位: 总监理工程师: 年 月 日 监理单位部门章 验收单位 (建设单位 ) 意见: 该工程(地基 基础 主体)部位验收程序和内容严格按有关法律、法规和验收标准进行,验收结果: 项目负责人: 年 月 日 建设单位部门章