grub启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件,如果找不到此文件则不进入菜单模式而直接进入命令行模式。menu.lst 是一个文本文件,你可以用任何一个文本编辑器来打开它。每一行代表一个配置命令,如果一行的第一个字符为井号”#”则这一行为注释,你可以简单地用增加或减少注释行来改变配置。
编辑menu.lst,一般会有以下各行
timeout second
设定在second秒之后引导默认的操作系统。如果设成-1,则grub会一直等待直到用户选择一个选项为止。
default num
默认启动第num+1行选项,也就说default=0则默认启动菜单第一行的操作系统,default=1则启动第2行的系统,如此类推。
splash pathname/filename
指出开机画面的文件所存放的路径和文件名,如splash /boot/logo/800x600x8.img,是指用在/boot/logo路径下的800x600.img文件作为开机画面
title OSname title
后面的字符就是你在菜单项上所看见的选项,你可以写上操作系统的名字和描述,如用title BluePoint Linux, Single Mode代表这一选项是引导蓝点Linux的单用户模式。
下面结合两个系统引导描述来解释几个引导选项的意义
title BluePoint Linux, Default Mode
root (hd0,1)
kernel /boot/vmlinuz vga=auto root=/dev/hda2
hd0是指第一个硬盘(主硬盘) (hd0,1)是指第一个硬盘的第二个分区。 kernel /boot/vmlinuz 是指出Linux核心的路径在/boot/vmlinuz中。vga=auto 是设定显示模式,root=/dev/hda2是指把第一个硬盘的第二个分区作为根挂载点(”/”)。
title Microsoft Windows
root (hd1,0)
chainloader (hd1,0)+1
root (hd1,0)这是指第二个硬盘(从硬盘)上第一个分区
chainloader (hd1,0)+1 装入一个扇区的数据然后把引导权交给它。
一、菜单命令
菜单命令只能用于grub配置文件的全局配置部分,不能用在grub命令行交互界面,菜单命令在配置文件中应放在其它命令之前。
1、default //设置默认启动的菜单项
2、fallback //设置启动某菜单项失败后反回的菜单项
3、hiddenmenu //隐藏菜单界面
4、timeout //设置菜单自动启动的延时时间
5、title //开始一个菜单项
二、常规命令
常规命令可以应该于配置文件和grub命令行交互界面,可使用的常规命令有
1、bootp //通过bootp初始化网络设备
2、color //设置菜单界面的颜色
3、device //指定设备文件作为驱动器
4、dhcp //通过DHCP初始化网络设备
5、hide //隐藏某分区
6、ifconfig //手工配置网络设备
7、pager //改变内部页程序的状态
8、partnew //新建一个主分区
9、parttype //改变分区的类型
10、password 为菜单界面设置口令
11、rarp //通过RARP初始化网络设置
12、serial //设置串口设备
13、setkey //设置键盘映射
14、splashimage //设置GRUB启动时的背景图片文件
15、termainal //选择终端类型
16、tftpserver //指定TFTP服务器
17、unhide //还原某隐藏分区
三、命令行和菜单项命令
命令行和菜单项命令可应该于GRUB配置文件的菜单项设置中,也可以用在GRUB命令交互界面。
1、bolcklist //显示某文件所在分区位置(block list notation)
2、boot //启动操作系统
3、cat //显示文件内容
4、chainloader //把启动控制权软交给另外的启动引导器
5、cmp //比较两个文件
6、configfile //加载已存在的GRUB配置文件
7、debug //设置为debug模式
8、displayapm //显示APM BIOS信息
9、displaymem //显示内存配置
10、embed //嵌入Stage 1.5文件
11、find //查找包括某文件的所有设备
12、fstest //测试文件系统
13、geometry //显示某驱动器的物理信息
14、halt //停止计算机运行(软件关机)
15、help //显示GRUB的命令帮助信息
16、impsprobe //查询对称多处理器(SMP)的信息
17、initrd //加载initrd文件
18、install //安装GRUB
19、ioprobe //查询某驱动器的输入输出(I/O)端口
20、kernel //引导操作系统内核
21、lock //锁定某GRUB导菜单项,使其输入密码后才可启动
22、makeactive //激活某主分区
23、map //虚拟映射某驱动器
24、md5crypt //使用MD5加密口令
25、module //加载模块
26、modulenounzip //加载模块不进行解压
27、pause //暂停并等待按键
28、quit //退出GRUB
29、reboot //重新启动计算机
30、read //读取内存中的内容
31、root //设置GRUB的root设备
32、rootnoverify //设备GRUB的root设备但不装载文件系统
33、savedefault //保存当前的启动菜单项为默认启动
34、setup //自动安装GRUB
35、testload //从文件系统中测试读取某文件
36、testvbe //测试VESA BIOS EXTENSION
37、uppermem //强制设置主机上位内存的大小
38、vbeprobe //查询VESA BIOS EXTENSION信息
GRUB 里的设备命名法则
它使用了UNIX对设备的命名方法.比如我们拥有两块硬盘,那么采用这种形式(hdx,y), 这里,x,y, 都是从0开始计数的.所以两块硬盘是 (hd0,y),(hd1,y). 他们位于第一个IDE接口上. 对 hd0 来说, 请看下图:
(注, C: 为第一主分区, 其他分区是扩展分区.由于主分区只能有四个,即 0,1,2,3, 所以第一个扩展分区的编号从 4 开始.)
这是硬盘,那么光驱哪? 对,采用 (cd) 就可以了. 网络设备使用 (nd). 我估计,以后支持usb以后,可以使用 (ud). ;-) 欢迎你的参与,我们的开发还在继续.
ROOT的使用格式是:ROOT(HDX,Y) 其中X从0—N,Y也是。第一个硬盘,第一个分区就是(HD0,0),第一个硬盘,第二个分区就是(HD0,1);
第二个硬盘,第一个分区就是(HD1,0),第二个硬盘,第二个分区就是(HD1,1);如此类推,可以知道ROOT的用法了。
ROOT是GRUB识别硬盘和文件格式的命令,告诉GRUB启动设备是什么和启动设备MOUNT的文件格式,以及下一步可以到那里找GRUB的配置文件,启动核心,或启动IMG文件等。
SETUP 和 INSTALL 是安装GRUB 到指定位置如:MBR等,具体可以看HELP文件,没有什么特殊之处。
STAGE1,STAGE2针对不同的的文件系统,都可以到GRUB的包里或/USR/SHARE/GRUB目录里找到,拷到GRUB目录下就可以了。
GRUB.CONF的格式如下:
default=0
timeout=10
splashimage=(hd1,2)/boot/grub/splash.xpm.gz
title WindowsXP
rootnoverify (hd0,0)
chainloader +1
title RedHat9
root (hd0,1)
kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /boot/initrd-2.4.20-8.img
title Mandrake9.1
kernel (hd1,4)/boot/vmlinuz root=/dev/hdb5 quiet devfs=mount acpi=off vga=788
initrd (hd1,4)/boot/initrd.img
default=X为默认启动的系统,0为排在第一个的系统,以此类推。
timeout=X为Grub菜单停留的时间,单位为秒
title XXX,XXX为标题,也就是你要引导的操作系统的名字,可以自己修改
rootnoverify (hd0,0) 告诉 GNU GRUB 您用的 Widnows C 盘在哪里,但同时不要试图将其挂载(‘noverify’,可选项)。
chainloader +1 告诉 GNU GRUB 不要试着自己载入 Windows (自身无法完成),而应该将启动进程交给 C 盘的首扇区,那里含有原始的 DOS/Windows 启动程序。
GRUB引导9个操作系统
title RedHat 73
root (hd0,8)
kernel /boot/vmlinuz-2.4.18-3 ro root=/dev/hda9
initrd /boot/initrd-2.4.18-3.img
title WinXP
rootnoverify (hd0,0)
chainloader +1
title SuSe80
rootnoverify (hd1,0)
chainloader (hd1,0)+1
title Mandrake82
rootnoverify (hd1,1)
kernel /boot/vmlinuz-2.4.18-6mdk root=/dev/hdb2
initrd /boot/initrd-2.4.18-6mdk.img
title TurbO-80
rootnoverify (hd1,2)
kernel /boot/vmlinuz root=/dev/hdb3
title Mandrake90
rootnoverify (hd1,4)
kernel /boot/vmlinuz root=/dev/hdb5
initrd /boot/initrd.img
title Red Hat Linux [limbo]
root (hd1,5)
kernel /boot/vmlinuz-2.4.18-5.58 root=/dev/hdb6
initrd /boot/initrd-2.4.18-5.58.img
title Slackware 81
rootnoverify (hd1,6)
kernel /boot/vmlinuz root=/dev/hdb7
title Debian
rootnoverify (hd1,7)
kernel /vmlinuz root=/dev/hdb8
恢复被windows破坏的grub.
如果你用grub来引导linux和windows,当windows出毛病重新安装后,会破坏MBR中的grub,这时需要恢复grub.
1.把linux安装光盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。
2.等安装界面出来后,按[F4]键,也就是linux rescue模式。
3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比较简单。
4.然后会出现这样的提示符:
sh#
5.我们就可以操作GRUB了.输入grub:
sh#grub
会出现这样的提示符:
grub>
我们就可以在这样的字符后面,输入:
grub>root (hdX,Y)
grub>setup (hd0)
如果成功会有一个successful……
这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。