linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux入门与提高 > 安装与配置 >
栏目导栏
资料搜索
热门文章
·什么是ISO文件
·VMware下Linux的安装及简单设置
·为Canon PIXMA iP1000喷墨打印
·Linux必学60个命令文件处理
·实例解说Linux中fdisk分区使用
·Linux下软件安装详解(图)
·Windows下硬盘安装FC6
·用DVD镜像文件硬盘安装FC5详细
·linux下软件的基本安装和卸载
·Linux下硬盘分区的最佳方案
·Suse Linux最新版本 10.1的 IS
·Ubuntu Linux操作系统安装Luma
·Linux下的软件安装
·FC5,LINUX下ADSL上网设置与安装
·把你的Linux配置成Windows
最新文章
·Fedora 9下使用VirtualBox安装
·Ubuntu Linux 8.04 Vsftp 虚拟
·Weblogic 8.1 for Linux ES3.0
·Ubuntu Linux 8.04下本地安装L
·VMware安装Redhat不能输入密码
·双系统攻略:修复Windows XP引
·Windows Vista硬盘安装Fedora
·在一个硬盘上安装两个Linux操作
·从硬盘安装Fedora-9-i386-DVD
·Ubuntu 8.04下安装配置Tomcat5
·Linux系统下显示多核模式方法
·Ubuntu Linux 8.04下关于字体的
·Linux系统下Autodock 4.0安装与
·SUSE Linux系统BASH下配置JAVA
·Linux kernel2.6.25 CS8900网卡
Google
 
Grub配置杂谈
[ 作者:  加入时间:2007-11-14 17:19:50  来自:Linux联盟收集整理 ]
应樱家冢、Bluedata以及其他兄弟的要求,这里谈一谈自己在配置Grub当中积累的点滴,不存在什么高深的使用技巧——^_^,我自己也没有掌握,实际上就是我们常用的功能整理了一下。如有错误和疑问,请大家指教!因为时间不够用,所以才这么迟的出来,希望两位兄弟谅解,同事感谢网络上曾经为了linux的事业不停奋斗而无私贡献的人们——因为本文参考了他们的经验! rqrLinux联盟
rqrLinux联盟
1、一个GRUB配置文件 rqrLinux联盟
2、解读grub.conf文件 rqrLinux联盟
3、配置grub rqrLinux联盟
4、GRUB的交互性 rqrLinux联盟
5、常见grub除错方法的思路 rqrLinux联盟
rqrLinux联盟
1 一个GRUB配置文件 rqrLinux联盟
基于本例的分区如下: rqrLinux联盟
hda 15G rqrLinux联盟
hda1 8G / RED HAT LINUX8.0 rqrLinux联盟
hda5 7G /home rqrLinux联盟
hdc 20G rqrLinux联盟
hdc1 6.4G WinXP rqrLinux联盟
hdc5 6.4G rqrLinux联盟
hdc6 6.4G rqrLinux联盟
hdc7 6.4G rqrLinux联盟
#fdisk -l rqrLinux联盟
# Disk /dev/hdc: 255 heads, 63 sectors, 2434 cylinders rqrLinux联盟
Units = cylinders of 16065 * 512 bytes rqrLinux联盟
rqrLinux联盟
Device Boot Start End Blocks Id System rqrLinux联盟
/dev/hdc1 * 1 894 7181023+ b Win95 FAT32 rqrLinux联盟
/dev/hdc2 895 2434 12370050 f Win95 Ext'd (LBA) rqrLinux联盟
/dev/hdc5 895 1787 7172991 b Win95 FAT32 rqrLinux联盟
/dev/hdc6 1788 2434 5196996 b Win95 FAT32 rqrLinux联盟
rqrLinux联盟
Disk /dev/hda: 255 heads, 63 sectors, 1867 cylinders rqrLinux联盟
Units = cylinders of 16065 * 512 bytes rqrLinux联盟
rqrLinux联盟
Device Boot Start End Blocks Id System rqrLinux联盟
/dev/hda1 * 1 1020 8193118+ 83 Linux rqrLinux联盟
/dev/hda2 1021 1802 6281415 83 Linux rqrLinux联盟
/dev/hda3 1803 1867 522112+ 82 Linux swap rqrLinux联盟
rqrLinux联盟
grub.conf,这个文件位于;/boot/grub/grub.conf rqrLinux联盟
# grub.conf generated by anaconda rqrLinux联盟
# rqrLinux联盟
# Note that you do not have to rerun grub after making changes to this file rqrLinux联盟
# NOTICE: You do not have a /boot partition. This means that rqrLinux联盟
# all kernel and initrd paths are relative to /, eg. rqrLinux联盟
# root (hd0,0) rqrLinux联盟
# kernel /boot/vmlinuz-version ro root=/dev/hda1 rqrLinux联盟
# initrd /boot/initrd-version.img rqrLinux联盟
#boot=/dev/hda rqrLinux联盟
default=0 rqrLinux联盟
timeout=3 rqrLinux联盟
splashimage=(hd0,0)/boot/grub/splash.xpm.gz rqrLinux联盟
title Red Hat Linux (2.4.18-14) rqrLinux联盟
root (hd0,0) rqrLinux联盟
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ rqrLinux联盟
initrd /boot/initrd-2.4.18-14.img rqrLinux联盟
title Microsoft Windows XP rqrLinux联盟
map (hd0) (hd1) rqrLinux联盟
map (hd1) (hd0) rqrLinux联盟
root (hd1,0) rqrLinux联盟
chainloader (hd1,0)+1 rqrLinux联盟
makeactive rqrLinux联盟
boot rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
2 解读grub.conf文件 rqrLinux联盟
rqrLinux联盟
我们将来看看grub.conf文件内语句,(注:...)内的东西是我们的解读内容. rqrLinux联盟
# grub.conf generated by anaconda rqrLinux联盟
# rqrLinux联盟
# Note that you do not have to rerun grub after making changes to this file rqrLinux联盟
# NOTICE: You do not have a /boot partition. This means that rqrLinux联盟
# all kernel and initrd paths are relative to /, eg. rqrLinux联盟
# root (hd0,0) rqrLinux联盟
# kernel /boot/vmlinuz-version ro root=/dev/hda1 rqrLinux联盟
# initrd /boot/initrd-version.img rqrLinux联盟
#boot=/dev/hda (注:以上以符号井"#"开头的行表示被注释掉,没有任何意义) rqrLinux联盟
default=0 (注:默认的操作系统就是由default控制的。default后加一个数字n,表明是第 n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一 个软驱是fd0,等等。所以,default 0 表示默认的操作系统在这儿是 Red Hat Linux (2.4.18-14)如果你修改成1就是WinXP了) rqrLinux联盟
timeout=3 (注:timeout表示默认等待的时间,这儿是3秒钟。超过3秒,用户还没有作出选 择的话,系统将自动选择默认的操作系统;当然你可以改成任何你乐意的时间) rqrLinux联盟
splashimage=(hd0,0)/boot/grub/splash.xpm.gz (注:指定开机画面文件splash.xpm.gz的位置,也可以splash /boot/logo/800x600x8.img) rqrLinux联盟
title Red Hat Linux (2.4.18-14) (注:表示Red Hat Linux的菜单项) rqrLinux联盟
root (hd0,0) (注:表示第一个硬盘第一个分区,这里的root和系 统内的root不是一码事!详细如下说明) rqrLinux联盟
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ (注:指定内核的位置,详细说明如下 文) rqrLinux联盟
initrd /boot/initrd-2.4.18-14.img (注:初始化) rqrLinux联盟
title Microsoft Windows XP (注:表示Microsoft Windows XP的菜单项) rqrLinux联盟
map (hd0) (hd1) (注:map是命令,详细如下) rqrLinux联盟
map (hd1) (hd0) rqrLinux联盟
root (hd1,0) (注:这是指第二个硬盘(从硬盘)上第一个分区) rqrLinux联盟
chainloader (hd1,0)+1 (注:链式装入器,装入一个扇区的数据然后把引导 权交给它。详细说明如下) rqrLinux联盟
makeactive rqrLinux联盟
boot rqrLinux联盟
rqrLinux联盟
(注:在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区.到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。 rqrLinux联盟
知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。 rqrLinux联盟
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/说明/boot/vmlinuz-2.4.18-14就是要载入的内核。后面的都是传递给内核的参数。root=LABEL=/就是linux的硬盘分区表示法,ro是readonly的意思。initrd用来初始的linux image,并设置相应的参数。 rqrLinux联盟
命令map:当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如Windowsxp,就可以使用map命令.你能够将hd0映射为hd1,将hd1映射为hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统 。命令形式如下: rqrLinux联盟
grub> map (hd0) (hd1) rqrLinux联盟
grub> map (hd1) (hd0) rqrLinux联盟
GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd1,0) 的引导记录中装入winxp自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。 rqrLinux联盟
GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧! ) rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
3 配置grub rqrLinux联盟
grub启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件,如果找不到此文件则不进入菜单模式而直接进入命令行模式。 rqrLinux联盟
现在,我们来看一下如何在启动后进入各种操作系统,如何建立menu.conf文件。我们就从GRUB支持的启动过程开始。可以有两种方法来完成启动过程: rqrLinux联盟
·A.通过调用内核本地启动 rqrLinux联盟
·B.连续启动或者将控制转给另一个引导器 rqrLinux联盟
A模式启动过程 rqrLinux联盟
1.配置跟设备或者告诉GRUB你的根文件系统。 rqrLinux联盟
2.告诉GRUB你的内核影像的位置,然后将参数传送给内核。 rqrLinux联盟
3.重新启动,试一下。 rqrLinux联盟
为了启动Linux,将内核以bzImage的文件名放在/boot/目录中,跟文件系统是 rqrLinux联盟
/dev/hda1,或者GRUB中的(hd0,0)。启动过程如下: rqrLinux联盟
1.root (hd0,0) [This sets the root partition] rqrLinux联盟
2.kernel /boot/bzImage root=/dev/hda1 [This sets the kernel] rqrLinux联盟
B模式启动过程(这种模式假设当前的分区中安装了另一个启动管理器,例如LILO rqrLinux联盟
或者NTLDR): rqrLinux联盟
1.设置根分区但不要安装它 rqrLinux联盟
2.激活这个分区 rqrLinux联盟
3.配置需要启动的分区的第一个扇区 rqrLinux联盟
4.重新启动,看一下效果。 rqrLinux联盟
我们在试试启动安装在/dev/hdc1或者(hd1,0)的windows。启动windows的过程如下: rqrLinux联盟
1.rootnoverify (hd1,0) rqrLinux联盟
2.makeactive rqrLinux联盟
3.chainloader +1 [+1 sets the first sector of the current root rqrLinux联盟
partition] rqrLinux联盟
4.boot [transfers the control and quits GRUB] rqrLinux联盟
menu.conf文件:它用于建立启动多操作系统时的菜单。建立menu.conf并不难。它使用简单的英语,就象你在这一节看到的那样。 rqrLinux联盟
所有的菜单项目都以没有逗号分隔的“title TITLENAME”开头。你可以随意设置 rqrLinux联盟
TITLENAME。 rqrLinux联盟
设置Linux启动菜单步骤如下: rqrLinux联盟
1.设置标题 rqrLinux联盟
2.设置根分区 rqrLinux联盟
3.设置内核的相应参数 rqrLinux联盟
4.启动 rqrLinux联盟
一个菜单例子: rqrLinux联盟
title Red Hat Linux (2.4.18-14) rqrLinux联盟
root (hd0,0) rqrLinux联盟
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ rqrLinux联盟
initrd /boot/initrd-2.4.18-14.img rqrLinux联盟
前面有#的行是一个注释。 rqrLinux联盟
建立启动Windows 或者 DOS的菜单: rqrLinux联盟
title Windoze rqrLinux联盟
rootnoverify (hd0,0) rqrLinux联盟
makeactive rqrLinux联盟
chainloader +1 rqrLinux联盟
boot rqrLinux联盟
#---- rqrLinux联盟
又或者: rqrLinux联盟
title Microsoft Windows XP rqrLinux联盟
map (hd0) (hd1) rqrLinux联盟
map (hd1) (hd0) rqrLinux联盟
root (hd1,0) rqrLinux联盟
chainloader (hd1,0)+1 rqrLinux联盟
makeactive rqrLinux联盟
boot rqrLinux联盟
---- rqrLinux联盟
注意:root和rootnoverify都是一样的,把rootnoverify改成root也行。不过经过实践来看。有时引导win时,系统安装好后,是rootnoverify (hdX.Y)这样形式的,这样会出现windows起不来,出现什么windows什么文件损坏的情况。这时,我们就要把在grub中,引导windows的那段中的rootnoverify改为root rqrLinux联盟
root英文的意思就是根的意思,在这里是让linux知道自己所处的位置,也就是我们所安装linux的/根分区所在的位置 。 rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
4 GRUB的交互性 rqrLinux联盟
rqrLinux联盟
GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。 rqrLinux联盟
只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬! rqrLinux联盟
GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下: rqrLinux联盟
GRUB version 0.5.96.1 (640K lower / 3072K upper memory) rqrLinux联盟
[ Minimal BASH-like line editing is supported. For the first word, TAB rqrLinux联盟
lists possible command completions. Anywhere else TAB lists the possible rqrLinux联盟
completions of a device/filename. ] rqrLinux联盟
grub> rqrLinux联盟
欢迎使用 GRUB 控制台。现在,再研究命令: rqrLinux联盟
将通过GRUB 控制台绕过lilo来启动RedHat linux, rqrLinux联盟
grub> root (h rqrLinux联盟
现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下: rqrLinux联盟
grub> root (hd0, rqrLinux联盟
现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表: rqrLinux联盟
grub> root (hd0, (tab,按tab一下键) rqrLinux联盟
Possible partitions are: rqrLinux联盟
Partition num: 0, Filesystem type is fat, partition type 0x6 rqrLinux联盟
Partition num: 2, Filesystem type is ext2fs, partition type 0x83 rqrLinux联盟
Partition num: 4, Filesystem type unknown, partition type 0x7 rqrLinux联盟
Partition num: 5, Filesystem type is ext2fs, partition type 0x83 rqrLinux联盟
Partition num: 6, Filesystem type is fat, partition type 0xb rqrLinux联盟
Partition num: 7, Filesystem type is fat, partition type 0xb rqrLinux联盟
Partition num: 8, Filesystem type is ext2fs, partition type 0x83 rqrLinux联盟
Partition num: 9, Filesystem type unknown, partition type 0x82 rqrLinux联盟
如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了 rqrLinux联盟
grub> root (hd0,rqrLinux联盟
现在已安装了 root 文件系统,到装入内核的时候了 rqrLinux联盟
grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro rqrLinux联盟
[Linux-bzImage, setup=0x1200, size=0xe1a30] rqrLinux联盟
您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入 "boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。 rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
5 常见grub除错方法的思路 rqrLinux联盟
首先进去Linux的rescue模式! rqrLinux联盟
用软盘或光盘启动,然后在启动的提示符输入:linux rescue rqrLinux联盟
按照提示进入一个Shell状态,你可以到/mnt/下面看到一个sysimage这么目录,进去以后,就是你安装linux的/分区. rqrLinux联盟
使用命令将根分区变为当前目录的根分区:chroot /mnt/sysimage rqrLinux联盟
然后转到/sbin/这个目录中. rqrLinux联盟
使用fdisk -l 显示当前分区情况,然后使用#grub-install /dev/hdx(x为你使用的是那块硬盘安装的,一般情况下是hda) rqrLinux联盟
使用exit推出chroot,再使用exit退出linux rescue模式,系统将重新启动!取出光盘,应该可以看到grub安装好了. rqrLinux联盟
在具体的环境中,编辑/boot/grub/grub.conf文件和menu.lst文件 rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
简化: rqrLinux联盟
1.安装盘启动 rqrLinux联盟
2.进入linux rescue模式 rqrLinux联盟
3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比较简单。 rqrLinux联盟
4.然后会出现这样的字符 rqrLinux联盟
sh# rqrLinux联盟
5. sh#grub rqrLinux联盟
会出现这样的字符:grub>我们就可以在这样的字符后面,输入:grub>root (hdX,Y) rqrLinux联盟
grub>setup (hd0) rqrLinux联盟
如果成功会有一个successful...... rqrLinux联盟
这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。 rqrLinux联盟
rqrLinux联盟
其他: rqrLinux联盟
grub菜单项丢失,只有字符grub>时的处理方法: rqrLinux联盟
grub>cat (hd0,0) /root/grub/grub.conf(为了看参数。) rqrLinux联盟
grub>root (hd0,1) rqrLinux联盟
grub>kernel (hd0,0) /boot/vmlinuz-2.4.18-11 ro root=/dev/hda2 rqrLinux联盟
grub>initrd (hd0,0) /boot/initrd-2.4.18-11.img rqrLinux联盟
grub>boot rqrLinux联盟
如果看不明白,可以参考后面的命令慢慢看,这里不做注释,促使大家学习,哈哈rqrLinux联盟
rqrLinux联盟
98先装,用的是单独的硬盘,4.3G,那时候,LINUX8还没有到我手中 rqrLinux联盟
后来到了,在家中安装好了,选择GRUB,就会有DOS的一个菜单,我的是在主分区 rqrLinux联盟
到了公司,把LINUX挂在第一个盘的位置,那个盘挂在第四个盘的位置(这个无所谓) rqrLinux联盟
然后GRUB配置如下 rqrLinux联盟
default=0 rqrLinux联盟
timeout=10 rqrLinux联盟
splashimage=(hd0,0)/grub/splash.xpm.gz rqrLinux联盟
title Red Hat Linux (2.4.18-14) rqrLinux联盟
root (hd0,0) rqrLinux联盟
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/ rqrLinux联盟
initrd /initrd-2.4.18-14.img rqrLinux联盟
title DOS rqrLinux联盟
rootnoverify (hd1,0) rqrLinux联盟
makeactive rqrLinux联盟
chainloader (hd1,0)+1 rqrLinux联盟
map (hd0) (hd1) rqrLinux联盟
map (hd1) (hd0) rqrLinux联盟
boot rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
下面是GRUB的可用命令列表: rqrLinux联盟
#大部分命令我们不常用,而且我也没有每个都试验! rqrLinux联盟
rqrLinux联盟
关于下面将要用到的三种模式的解释: rqrLinux联盟
GRUB的用户界面有三种:命令行模式,菜单模式和菜单编辑模式 rqrLinux联盟
  (a) 命令行模式: rqrLinux联盟
  进入命令行模式后GRUB会给出一个命令提示符`grub>`,此时就可以键入命令,按回车执行。此模式下可执行的命令是在menu.lst中可执行的命令的一个子集。此模式下允许类似于Bash shell的命令行编辑功能: rqrLinux联盟
或 光标右移一个字符 rqrLinux联盟
rqrLinux联盟
或 光标左移一个字符 rqrLinux联盟
rqrLinux联盟
到这一行的开头 rqrLinux联盟
rqrLinux联盟
或 到行尾 rqrLinux联盟
rqrLinux联盟
或 删除光标处的字符 rqrLinux联盟
rqrLinux联盟
或 删除光标左边的字符 rqrLinux联盟
rqrLinux联盟
删除光标右边的所有字符(包括光标处的字符) rqrLinux联盟
rqrLinux联盟
删除光标左边的所有字符(包括光标处的字符) rqrLinux联盟
rqrLinux联盟
恢复上次删除的字符串到光标位置 rqrLinux联盟
rqrLinux联盟
或 历史记录中的上一条命令 rqrLinux联盟
rqrLinux联盟
或 历史记录中的下一条命令 rqrLinux联盟
rqrLinux联盟
  在命令行模式下键有补全命令的功能,如果你敲入了命令的前一部分,键入系统将列出所有可能以你给出的字符串开头的命令。如果你给出了命令,在命令参数的位置按下键,系统将给出这条命令的可能的参数列表,具体的可用命令集将在后面给出。 rqrLinux联盟
rqrLinux联盟
  (b) 菜单模式 rqrLinux联盟
  当存在文件/boot/grub/menu.lst文件时系统启动自动进入此模式。菜单模式下用户只需要用上下箭头来选择他所想启动的系统或者执行某个命令块,菜单的定义在menu.lst文件中,你也可以从菜单模式按键进入命令行模式,并且可以按键从命令行模式返回菜单模式。菜单模式下按键将进入菜单编辑模式。 rqrLinux联盟
rqrLinux联盟
  (c) 菜单编辑模式 rqrLinux联盟
  菜单编辑模式用来对菜单项进行编辑改变,其界面和菜单模式的界面十分类似,不同的是菜单中显示的是对应某个菜单项的命令列表。如果在编辑模式下按下,则取消所有当前对菜单的编辑并回到菜单模式下。在编辑模式下选中一个命令行,就可以对这条指令进行修改,修改完毕后按下,GRUB将提示你确认并完成修改。如果你想在当前命令列表中增加一条命令,按在当前命令的下面增加一条指令,按在当前命令前处增加一条指令。按删除一条指令。 rqrLinux联盟
rqrLinux联盟
仅用于菜单的命令(不包括菜单项内部的启动命令) rqrLinux联盟
rqrLinux联盟
default num rqrLinux联盟
设置菜单中的默认选项为num(默认为0,即第一个选项),超时将启动这个选项 rqrLinux联盟
rqrLinux联盟
fallback num rqrLinux联盟
如果默认菜单项启动失败,将启动这个num后援选项。 rqrLinux联盟
rqrLinux联盟
password passwd new-config-file rqrLinux联盟
关闭命令行模式和菜单编辑模式,要求输入口令,如果口令输入正确,将使用new-config-file rqrLinux联盟
作为新的配置文件代替menu.lst,并继续引导。 rqrLinux联盟
rqrLinux联盟
timeout sec rqrLinux联盟
设置超时,将在sec秒后自动启动默认选项。 rqrLinux联盟
rqrLinux联盟
title name ... rqrLinux联盟
开始一个新的菜单项,并以title后的字串作为显示的菜单名。 rqrLinux联盟
rqrLinux联盟
在菜单(不包括菜单项内部的命令)和命令行方式下都可用的命令 rqrLinux联盟
rqrLinux联盟
bootp rqrLinux联盟
以BOOTP协议初始化网络设备 rqrLinux联盟
rqrLinux联盟
color normal [highlight] rqrLinux联盟
  改变菜单的颜色,normal是用于指定菜单中非当前选项的行的颜色,highlight是用于指定当前菜单选项的颜色。如果不指定highlight,GRUB将使用normal的反色来作为highlight颜色。指定颜色的格式是“前景色/背景色”,前景色和背景色的可选列表如下: rqrLinux联盟
* black rqrLinux联盟
* blue rqrLinux联盟
* green rqrLinux联盟
* cyan rqrLinux联盟
* red rqrLinux联盟
* magenta rqrLinux联盟
* brown rqrLinux联盟
* light-gray rqrLinux联盟
下面的颜色只能用于背景色 rqrLinux联盟
* dark-gray rqrLinux联盟
* light-blue rqrLinux联盟
* light-green rqrLinux联盟
* light-cyan rqrLinux联盟
* light-red rqrLinux联盟
* light-magenta rqrLinux联盟
* yellow rqrLinux联盟
* white rqrLinux联盟
你可以在前景色前加上前缀"blink-",产生闪烁效果,你可以在menu.lst中加上下面这个选项来改变颜色效果: rqrLinux联盟
title OS-BS like rqrLinux联盟
color magenta/blue black/magenta rqrLinux联盟
rqrLinux联盟
device drive file rqrLinux联盟
在GRUB命令行中,把BIOS中的一个驱动器drive映射到一个文件file。你可以用这条命令创建一个磁盘映象或者当GRUB不能真确地判断驱动器时进行纠正。如下 rqrLinux联盟
grub> device (fd0) /floppy-image rqrLinux联盟
grub> device (hd0) /dev/sd0 rqrLinux联盟
这条命令只能在命令行方式下使用, 是个例外。 rqrLinux联盟
rqrLinux联盟
dhcp rqrLinux联盟
用DHCP协议初始化网络设备。目前而言,这条指令其实就是bootp的别名,效果和bootp一样。 rqrLinux联盟
rqrLinux联盟
hide partition rqrLinux联盟
这条指令仅仅对DOS和WINDOWS有用,当在一个硬盘上存在多个DOS/WIN的主分区时,有时需要这条指令隐藏其中的一个或几个分区,即在分区表中设置“隐藏”位。 rqrLinux联盟
rqrLinux联盟
rarp rqrLinux联盟
用RARP协议初始化网络设备。 rqrLinux联盟
rqrLinux联盟
setkey to_key from_key rqrLinux联盟
改变键盘的映射表,将from_key映射到to_key,注意这条指令并不是交换键映射,如果你要交换两个键的映射,需要用两次setkey指令,如下: rqrLinux联盟
grub> setkey capslock control rqrLinux联盟
grub> setkey control capslock rqrLinux联盟
rqrLinux联盟
其中的键必须是字母,数字或者下面的一些代表某一键的字符串: rqrLinux联盟
`escape', `exclam', `at', `numbersign', `dollar', `percent', rqrLinux联盟
`caret', `ampersand', `asterisk', `parenleft', `parenright', rqrLinux联盟
`minus', `underscore', `equal', `plus', `backspace', `tab', rqrLinux联盟
`bracketleft', `braceleft', `bracketright', `braceright', `enter', rqrLinux联盟
`control', `semicolon', `colon', `quote', `doublequote', rqrLinux联盟
`backquote', `tilde', `shift', `backslash', `bar', `comma', rqrLinux联盟
`less', `period', `greater', `slash', `question', `alt', `space', rqrLinux联盟
`capslock', `FX' (`X' is a digit), and `delete'. rqrLinux联盟
下面给出了它们和键盘上的键的对应关系: rqrLinux联盟
`exclam'=`!' rqrLinux联盟
`at'=`@' rqrLinux联盟
`numbersign'=`#' rqrLinux联盟
`dollar'=`$' rqrLinux联盟
`percent'=`%' rqrLinux联盟
`caret'=`^' rqrLinux联盟
`ampersand'=`&' rqrLinux联盟
`asterisk'=`*' rqrLinux联盟
`parenleft'=`(' rqrLinux联盟
`parenright'=`)' rqrLinux联盟
`minus'=`-' rqrLinux联盟
`underscore'=`_' rqrLinux联盟
`equal'=`=' rqrLinux联盟
`plus'=`+' rqrLinux联盟
`bracketleft'=`[' rqrLinux联盟
`braceleft'=`{' rqrLinux联盟
`bracketright'=`]' rqrLinux联盟
`braceright'=`}' rqrLinux联盟
`semicolon'=`;' rqrLinux联盟
`colon'=`:' rqrLinux联盟
`quote'=`'' rqrLinux联盟
`doublequote'=`"' rqrLinux联盟
`backquote'=``' rqrLinux联盟
`tilde'=`~' rqrLinux联盟
`backslash'=`' rqrLinux联盟
`bar'=`|' rqrLinux联盟
`comma'=`,' rqrLinux联盟
`less'=`' rqrLinux联盟
`slash'=`/' rqrLinux联盟
`question'=`?' rqrLinux联盟
`space'=` ' rqrLinux联盟
rqrLinux联盟
unhide partition rqrLinux联盟
仅仅对DOS/WIN分区有效,清除分区表中的“隐藏”位。 rqrLinux联盟
rqrLinux联盟
仅用于命令行方式或者菜单项内部的命令 rqrLinux联盟
rqrLinux联盟
blocklist file rqrLinux联盟
显示文件file在所占磁盘块的列表。 rqrLinux联盟
rqrLinux联盟
boot rqrLinux联盟
仅在命令行模式下需要,当参数都设定完成后,用这条指令启动操作系统 rqrLinux联盟
rqrLinux联盟
cat file rqrLinux联盟
显示文件file的内容,可以用来得到某个操作系统的根文件系统所在的分区,如下: rqrLinux联盟
grub> cat /etc/fstab rqrLinux联盟
rqrLinux联盟
chainloader [`--force'] file rqrLinux联盟
把file装入内存进行chainload,除了能够通过文件系统得到文件外,这条指令也可以用磁盘块列表的方式读入磁盘中的数据块,如'+1`指定从当前分区读出第一个扇区进行引导。如果指定了`--force`参数,则无论文件是否有合法的签名都强迫读入,当你在引导SCO UnixWare时需要用这个参数。 rqrLinux联盟
rqrLinux联盟
cmp file1 file2 rqrLinux联盟
比较文件的内容,如果文件大小不一致,则输出两个文件的大小,如下: rqrLinux联盟
Differ in size: 0x1234 [foo], 0x4321 [bar] rqrLinux联盟
如果两个文件的大小一致但是在某个位置上的字节不同,则打印出不同的字节和他们的位移: rqrLinux联盟
Differ at the offset 777: 0xbe [foo], 0xef [bar] rqrLinux联盟
如果两个文件完全一致,则什么都不输出。 rqrLinux联盟
rqrLinux联盟
configfile FILE rqrLinux联盟
将FILE作为配置文件替代menu.lst。 rqrLinux联盟
rqrLinux联盟
embed stage1_5 device rqrLinux联盟
如果device是一个磁盘设备的话,将Stage1_5装入紧靠MBR的扇区内。如果device是一个FFS文件系统分区的话,则将Stage1_5装入此分区的第一扇区。如果装入成功的话,输出写入的扇区数。 rqrLinux联盟
rqrLinux联盟
displaymem rqrLinux联盟
显示出系统所有内存的地址空间分布图。 rqrLinux联盟
rqrLinux联盟
find filename rqrLinux联盟
在所有的分区中寻找指定的文件filename,输出所有包含这个文件的分区名。参数filename应该给出绝对路径。 rqrLinux联盟
rqrLinux联盟
fstest rqrLinux联盟
启动文件系统测试模式。打开这个模式后,每当有读设备请求时,输出向底层例程读请求的参数和所有读出的数据。输出格式如下: rqrLinux联盟
先是由高层程序发出的分区内的读请求,输出:之后由底层程序发出的扇区读请求,输出:[磁盘绝对扇区偏移] 可以用install或者testload命令关闭文件系统测试模式。 rqrLinux联盟
rqrLinux联盟
geometry drive [cylinder head sector [total_sector]] rqrLinux联盟
输出驱动器drive的信息。 rqrLinux联盟
rqrLinux联盟
help [pattern ...] rqrLinux联盟
在线命令帮助,列出符合pattern的命令列表,如果不给出参数,则将显示所有的命令列表。 rqrLinux联盟
rqrLinux联盟
impsprobe rqrLinux联盟
检测Intel多处理器,启动并配置找到的所有CPU。 rqrLinux联盟
rqrLinux联盟
initrd file ... rqrLinux联盟
为Linux格式的启动映象装载初始化的ramdisk,并且在内存中的Linux setup area中设置适当的参数。 rqrLinux联盟
rqrLinux联盟
install stage1_file [`d'] dest_dev stage2_file [addr] [`p'] [config_file] [real_config_file] rqrLinux联盟
这是用来完全安装GRUB启动块的命令,一般很少用到。 rqrLinux联盟
rqrLinux联盟
ioprobe drive rqrLinux联盟
探测驱动器drive所使用的I/O口,这条命令将会列出所有dirve使用的I/O口。 rqrLinux联盟
rqrLinux联盟
kernel file ... rqrLinux联盟
装载内核映象文件(如符合Multiboot的a.out,ELF,Linux zImage或bzImage,FreeBSD a.out,NetBSD rqrLinux联盟
a.out等等)。文件名file后可跟内核启动时所需要的参数。如果使用了这条指令所有以前装载的模块都要重新装载。 rqrLinux联盟
rqrLinux联盟
makeactive rqrLinux联盟
使当前的分区成为活跃分区,这条指令的对象只能是PC上的主分区,不能是扩展分区。 rqrLinux联盟
rqrLinux联盟
map to_drive from_drive rqrLinux联盟
映射驱动器from_drive到to_drive。这条指令当你在chainload一些操作系统的时候可能是必须的,这些操作系统如果不是在第一个硬盘上可能不能正常启动,所以需要进行映射。如下: rqrLinux联盟
grub> map (hd0) (hd1) rqrLinux联盟
grub> map (hd1) (hd0) rqrLinux联盟
rqrLinux联盟
这个就用来对付双硬盘最过瘾!!!哈哈 rqrLinux联盟
rqrLinux联盟
module file ... rqrLinux联盟
对于符合Multiboot规范的操作系统可以用这条指令来装载模块文件file,file后可以跟这个module所需要的参数。注意,必须先装载内核,再装载模块,否则装载的模块无效。 rqrLinux联盟
rqrLinux联盟
modulenounzip file ... rqrLinux联盟
同module命令几乎一样,唯一的区别是不对module文件进行自动解压。 rqrLinux联盟
rqrLinux联盟
pause message ... rqrLinux联盟
输出字符串message,等待用户按任意键继续。你可以用(ASCII码007)使PC喇叭发声提醒用户注意。 rqrLinux联盟
rqrLinux联盟
quit rqrLinux联盟
退出GRUB shell,GRUB shell类似于启动时的命令行模式,只是它是在用户启动系统后执行/sbin/grub才 rqrLinux联盟
进入,两者差别不大。 rqrLinux联盟
rqrLinux联盟
read addr rqrLinux联盟
从内存的地址addr处读出32位的值并以十六进制显示出来。 rqrLinux联盟
rqrLinux联盟
root device [hdbias] rqrLinux联盟
将当前根设备设为device,并且试图mount这个根设备得到分区大小。hdbias参数是用来告诉BSD内核在当前分区所在磁盘的前面还有多少个BIOS磁盘编号。例如,系统有一个IDE硬盘和一个SCSI硬盘,而你的BSD安装在IDE硬盘上,此时,你就需要指定hdbias参数为1。 rqrLinux联盟
rqrLinux联盟
rootnoverify device [hdbias] rqrLinux联盟
和root类似,但是不mount该设备。这个命令用在当GRUB不能识别某个硬盘文件系统,但是仍然必须指定根设备。 rqrLinux联盟
rqrLinux联盟
setup install_device [image_device] rqrLinux联盟
安装GRUB引导在install_device上。这条指令实际上调用的是更加灵活但是复杂的install指令。如果 rqrLinux联盟
image_device也指定了的话,则将在image_device中寻找GRUB的文件映象,否则在当前根设备中查找。 rqrLinux联盟
rqrLinux联盟
testload file rqrLinux联盟
这条指令是用来测试文件系统代码的,它以不同的方式读取文件file的内容,并将得到的结果进行比较,如果正确的话,输出的`i=X,filepos=Y`中的X,Y的值应该相等,否则就说明有错误。通常这条指令正确执行的话,之后我们就可以正确无误地装载内核。 rqrLinux联盟
rqrLinux联盟
uppermem kbytes rqrLinux联盟
强迫GRBU认为高端内存只有kbytes千字节的内存,GRUB自动探测到的结果将变得无效。这条指令很少使用,可能只在一些古老的机器上才有必要。通常GRUB都能够正确地得到系统的内存数量。 rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
其中大部分命令我们不常用,建议在试验的时候,做好相应的准备和备份工作!rqrLinux联盟
rqrLinux联盟
rqrLinux联盟
--------------------------------------------------------------------------------rqrLinux联盟
返回 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Xen技术小讲 -引导XenLinux的GRUB配置  (2006-09-16 11:58:23)