为了方便用户交互使用GRUB,GRUB提供了交互模式,下面分别作一介绍:
(1) 命令行模式
登陆Linux系统后,在命令行中输入grub,便可以进入到命令行模式。如图4-3所示。进入命令行模式后GRUB会给出一个命令提示符“grub>”,此时就可以键入命令,按回车执行。此模式下允许类似于Bash shell的命令行编辑功能:
q 或<右箭头键> 光标右移一个字符
q 或<左箭头键> 光标左移一个字符
q 到这一行的开头
q 或 到行尾
q 或 删除光标处的字符
q 或 删除光标左边的字符
q 删除光标右边的所有字符(包括光标处的字符)
q 删除光标左边的所有字符(包括光标处的字符)
q 恢复上次删除的字符串到光标位置
q 或<向上键> 历史记录中的上一条命令
q 或<向下键> 历史记录中的下一条命令
图4-2 启动时GRUB命令行模式在命令行模式下键有补全命令的功能,如果你敲入了命令的前一部分,键入系统将列出所有可能以你给出的字符串开头的命令。如果你给出了命令,在命令参数的位置按下键,系统将给出这条命令的可能的参数列表。
在计算机启动的时候,GRUB首先显示启动菜单,这是如果用户按键盘的“c”键,便进入如图4-4所示的命令行模式,它的操作和在Linux的命令行模式是一样的。
(2) 菜单模式
系统在启动时,如果找到/boot/grub/menu.lst,则grub显示grub并进入菜单模式,如图4-4所示。菜单模式下用户可以选择要启动的操作系统,或者修改配置。菜单的定义在menu.lst文件中,也可以从菜单模式按键进入命令行模式,并且可以按键从命令行模式返回菜单模式。菜单模式下按键将进入菜单编辑模式。
(3) 菜单编辑模式
菜单编辑模式用来对菜单项进行编辑改变,其界面和菜单模式的界面十分类似,不同的是菜单中显示的是对应某个菜单项的命令列表。如果在编辑模式下按下,则取消所有当前对菜单的编辑并回到菜单模式下。在编辑模式下选中一个命令行,就可以对这条指令进行修改,修改完毕后按下回车,GRUB将提示你确认并完成修改。如果你想在当前命令列表中增加一条命令,按在当前命令的下面增加一条指令,按在当前命令前处增加一条指令,按删除一条指令。
在实际中,菜单模式用于选择要启动的操作系统,菜单编辑模式用于临时修改编辑启动菜单,这样的修改可疑通过命令写入MBR活指定的分区,但并不影响grub.conf。命令行模式也是一样,可以通过命令方式动态启动一个操作系统,同时也不影响grub.conf。所以,菜单编辑模式和命令行模式常常用来安装GRUB到MBR或动态引导一个操作系统。而GRUB的配置文件,则是系统启动时GRUB程序必须加载的配置文件,这个文件中有关于GRUB的各种配置。不需要用户每次启动都执行繁琐的命令了。
4. GRUB配置文件
grub.conf是GRUB的配置文件,其结构比较简单,可以分为两部分,第一步分是全局配置,另外一部分就是每个操作系统的启动配置。其中可以有多个操作系统的菜单配置。下面就是一个具体的例子。
#=================/boot/grub/grub.conf文件范例==================
timeout 30 # 等待用户选择菜单项的时间(以秒计),超时则引导默认的选项
default 0 # 默认选项,第一项
fallback 1 # 如果第一项出错,则启动下面的后备选项
splashimage=(hd0,0)/grub/splash.xpm.gz #GRUB启动画面
#以下是启动Linux的配置
titleRed Hat Linux Enterprise AS3 for syd168 #启动项的菜单标题
root (hd0,0) #指定根文件系统,第1块硬盘第1个扇区中的/boot。
kernel /vmlinuz-2.4.18 ro root=LABEL=/ #内核在/boot中
initrd /initrd-2.4.18-14.img #启动RAM盘在/boot下
#以下是启动Windows的配置,如果只有Linux就不需要
title Windows2003 Enterprise for syd168 #Windows启动菜单标题
root noverify(hd0,1) #该操作系统在hd0的第二分区,不mount
chainloader +1 #从第一个硬盘的第二个分区引导Windows
#=================/boot/grub/grub.conf文件范例==================
上面的例子,只是简单说明了GRUB中启动Linux和Windows的配置方法。更多的启动配置请参考下面内容。
5. 引导多系统配置
GRUB支持多操作系统引导。用GRUB引导后可以进入命令行模式或者菜单模式,可以通过灵活的命令行模式选择引导各个分区的操作系统,指定引导参数。GRUB支持三种引导方法,一种是直接引导操作系统内核,另一种是通过chainload进行间接引导,第三种就是通过网络引导操作系统。
对于GRUB能够支持的Linux,FreeBSD,OpenBSD,NetBSD,GUN Mach等可以通过直接引导完成,但是对于GRUB不支持的操作系统(如Windows),需要用第二种方法chainload来完成。下面就分别来看看这几种引导方法:
(1) 直接引导
配置过程通常如下:
a) 用root命令设置包含操作系统内核的根设备
b) 用kernel命令装载内核映象文件,如果这个内核引导的时有参数的话,可以直接将参数加在内核文件名的后面
c) 用module或modulenounzip装载内核模块
d) boot开始引导
(2) chainload引导
a) 设置GRUB的根设备,用rootnoverify (hdx,y)指定
b) 开始引导,用chainloader +1指定,此处“+1”是指示GRUB读入分区的第一个扇区的引导记录。
c) 执行boot开始引导
以上是一般的chainloader方式,对于DOS和WINDOWS,可以简单地用两条指令进行引导:chainloader (hdx,y)+1,然后boot,其中x,y用来指明所在分区号。
(3) 从网络引导:
为了使GRUB能够支持从网络引导,需要在编译时打开网络支持选项(请参考源文件中的netboot/README.netboot)。另外,要在网络中设置两个服务:动态IP服务(BOOTP、DHCP或RARP)和FTP服务。然后,分别针对不同的服务器BOOTP,DHCP或RARP运行bootp,dhcp或rarp。如果一切设置无误的话GRUB就会给出IP,IP netmask和TFTP服务器的IP和网关的IP地址。最后,从网上得到操作系统的映象文件。下面是一个例子:
grub> bootp
Probing...[NE*000]
NE2000 base ...
Address: 192.168.110.23 Netmask: 255.255.255.0
Server: 192.168.110.14 Gateway: 192.168.110.1
grub> root (nd)