GNU GRUB是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
GNU GRUB(GRand Unified Bootloader 简称“GRUB”)是一个来自 GNU 项目的多操作系统启动程序。GRUB 是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB 可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
基本功能
GNU GRUB 和 GRUB 是 GRand Unified Bootloader 的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如 windows,linux。
在 X86 架构的机器中,Linux、BSD 或其它 Unix 类的操作系统中 GRUB、LILO 是大家最为常用,应该说是主流。
Windows 也有类似的工具 NTLOADER;比如我们在机器中安装了 Windows 98 后,我们再安装一个 Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入 Windows 98 还是进入 Windows XP。NTLOADER 就是一个多系统启动引导管理器,NTLOADER 同样也能引导 Linux,只是极为麻烦罢了。
在 PowerPC 架构的机器中,如果安装了 Linux 的 Powerpc 版本,大多是用 yaboot 多重引导管理器,比如 Apple 机用的是 IBM PowerPC 处理器,所以在如果想在 Apple 机上,安装 Macos 和 Linux Powerpc 版本,大多是用 yaboot 来引导多个操作系统。
因为 X86 架构的机器仍是主流, 所以 GRUB 和 LILO 仍然是我们最常用的多重操作系统引导管理器。
引导过程
由硬盘启动时,BIOS 通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。
装载 GRUB 和操作系统的过程,包括以下几个操作步骤:
文件系统
一些用户常困惑于 GRUB 中根文件系统(root filesystem)这一术语的用法。GRUB 的根文件系统与 Linux 的根文件系统是没有关系的!
接口
当 GRUB 环境开始载入第二步引导装载程序时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么 GRUB 将载入命令行接口。
菜单接口
在菜单接口上,按[e]键,对高亮菜单项中的命令进行编辑。按[c]键载入一个命令行接口。 添加(加在当前行后面(用[o]键),加在当前行前(用[0]键),编辑(用[e]键),删除(用[d]键)。
在所有的改变都完成后,用[Enter]键来执行这些命令,并引导操作系统。[Esc]键来放弃
命令行接口
命令
color – 设定在菜单中使用的颜色,
一种是作为前景色,一种作为背景色。可以简单地使用颜色名称,如 red/black。比如:
color red/black green/blue
default – 默认项目的标题名称。如果菜单接口超时,那它将被载入。
fallback – 当这个命令被使用时,如果第一次尝试失败,那么这个项目的标题名称将被使用。
hiddenmenu – 这个命令被使用时,它不显示 GRUB 菜单接口,在超时时间过期后载入默认项。用户通过按[Esc]键,可以看到标准的 GRUB 菜单。
timeout – 这个命令设定了在 GRUB 载入由 default 命令指定的项目的时间间隔,以秒为单位。
splashimage – 它指定在 GRUB 引导时所使用的屏幕图像的位置。
title – 设定用来装载一个操作系统的一组特定命令的标题。
字符#用来在菜单配置文件放置注释。
手动启动
有时候 grub 出现问题,不能通过启动选项启动目标操作系统,以启动一个 linux 为例
按 c 键切换到命令行模式
grub> root (hd0,0) 设置根目录为第一硬盘的第一个分区
grub> kernel /boot/vmlinuz 设置内核文件,有的 linux 发行版会有一个名为 wmlinuz 的软连接指 向真正的内核文件
grub> initrd /boot/initrd 设置 initrd 文件,也有可能用软连接代替真正的文件名
grub> boot (hd0,0) 从硬盘启动
以上命令可以用 tab 键补全 根据实际情况有所不同
例子
这是个非常基本的用于引导 Red Hat Linux 或 Microsoft Windows 2000 的 GRUB 菜单配置文件可能如下所示:
default=linux
timeout=10
color=green/blacklight-gray/blue
#sectiontoloadlinux
titlelinux
root(hd0,1)这里制定了 grub 的根。并且挂载。
kernel/vmlinuzroot=/dev/hda5 内核是 grub 根下的 vmlinuz。
并且内核载入后,内核的根是在/dev/hda5
boot
#sectiontoloadWindows2000
titlewindows
rootnoverify(hd0,0)rootnoverify 就是指定根,但是不要挂载。
chainloader+1 使用(hd0,0)的第一扇区来引导。
安装 wingrub
在安装软件到机器中时,就直接按它默认的安装,下一步、下一步就好了
在安装过程中会出现一个 Base Setup 的提示窗口,ChooseDrive 即是 grub 配置文件的存放位置,一定要选一个(一般选择第一个,提醒你注意软件的标题栏,不同的选择会显 示的不一样),如果你选择 cancel,则不会有 menu.lst 文件产生(这个文件很重要),Base Setup 提示窗口下面的 copy stage files 和 keep old directory 不点击也可以,它们的区别就是前者把 grub 文件夹中的文件和 menu.lst 一起放在新产生的 grub 文件夹下,而后者新产生的 grub 文件夹中只有 menu.lst ,如果不点击则只会产生只含 menu.lst 文件的 grub 文件夹,都点击则是 copy stage files 那种情况。