1.grub 简介
grub
是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载
到内存以后,内核会根据
grub
配置文件中的配置,找到根分区所使用的文件系统对应的驱
动,通过根分区文件系统对应的驱动,挂载根分区,从而达到启动操作系统的目的。
grub
的代码分三个阶段被加载:
grub stage 1 :存在启动硬盘的 0 柱面, 0 磁道,第一个扇区中,即 MBR 中, MBR 的前 446 个字节为 以引导代码,也就是 grub stage 1 ,所谓的 stage1 ,作用只有一个,就是找到 grubstage1.5 , 然后将其加载的到内存。
grub stage 1.5 :它的作用就是用来识别常见的不同类型的文件系统 , 从而找到 "/boot 目录所在的分区 "对应的文件系统的驱动,驱动多大、存在于哪些扇区中,这些都是在安装操作系统的时候根 据用户的设置自动生成的,我们有了"/boot 目录所在分区 " 的文件系统驱动,那么 /boot/grub/stage2 这样较大的文件可以直接操作了。
grub stage 2 :grub 真正的核心程序,能让用户以菜单方式将操作系统加载、新增参数、修改选项, 这些全都是 stage2 的功用,前面的 grub stage 1 和 grub stage 1.5 所做的事情就是为了运行 grub stage 2,然后由 stage 2 借助 grub.conf 再去引导系统启动。
2.grub 配置文件
把 grldr 及菜单配置文件 menu.lst 复制到系统盘/boot 即可。其中 grldr 会自动搜索菜单 配置文件并加载,但是 menu.lst 最好存放在 C 盘根目录,免得到时候搜索不到不能加载引 起错误)。把需要 grldr 引导的文件(如 DOS.IMG、GHOST83.IMG 等镜像文件)保存在硬盘。
下面是一个
menu.lst
的例子。
(
以
#
开始的行,表示注释,不执行
)
:
timeout 5
default 1
title SylixOS(UP)
kernel /bspx86.elf ncpus=1 hz=1000 hhz=1000 console=/dev/ttyS0 kdlog=no
kderror=yes kfpu=no heapchk=yes utc=no rfsmap=/boot:/media/hdd0,/:/media/hdd1
video=uvesafb:ywrap,mtrr:3,640x480-32@60
title SylixOS(NORMAL)
kernel /bspx86.elf hz=1000 hhz=1000 console=/dev/ttyS0 kdlog=no kderror=yes
kfpu=no heapchk=yes utc=no rfsmap=/boot:/media/hdd0,/:/media/hdd1
video=uvesafb:ywrap,mtrr:3,640x480-32@60
# 默认延迟时间timeout 5 # 第一项为默认值default 1 #title 单核启动( UP )title SylixOS(UP)kernel /bspx86.elf #title 多核启动( NORMAL )title SylixOS(NORMAL)kernel /bspx86.elf # 如果 ncpus 存在,得知 CPU 个数,系统不需要去探测ncpus=1 // 一个内核工作 # 系统 tick 频率,默认为 100( 推荐 100~10000 中间 ) ,此处使用 1000hz=1000 # 高速定时器频率,默认与 hz 相同(需 BSP 支持)hhz=1000 # 使用 ttyS0 串行端口终端console=/dev/ttyS0 # 内核 DEBUG LOG 信息打印kdlog=no # 内核 DEBUG ERROR 信息打印kderror=yes # 内核态对浮点支持(推荐为 no )kfpu=no # 内存堆越界检查heapchk=yes # 关闭 UTC 为本地时间utc=no # 这是根文件系统映射关系选项,用逗号隔开, /boot 等为可选映射, / 为必须映射rfsmap=/boot:/media/hdd0,/:/media/hdd1 # 设置视频参数video=uvesafb:ywrap, mtrr:3,640x480-32@60