欢迎 gujingyu 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2008年12月02日 星期二  您现在位于: 首页 → 技术文章 → GRUB 三步通
   GRUB 三步通
作者:  出处:Unix爱好者家园unix-cd.com  更新时间: 2006年02月27日 
GRUB的优点
  GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导Linux 系统。GRUB 还可以引导其它操作系统,如FreeBSD、NetBSD、OpenBSD、GNU HURD 和DOS,以及Windows 95、98、NT 和2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。

  GRUB 是一个很棒的boot loader。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从FAT、minix、FFS、ext2 或ReiserFS 分区读取Linux 内核。这就意味着无论怎样它总能找到内核。另外,GRUB 有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设GRUB 菜单配置不正确,但仍可以引导系统。哦,对了-- GRUB 还有一个彩色引导菜单。

  更令人惊讶的是,这是一个自由软件!!!

 

GRUB菜单
  先来看一个例子,这是位于 /boot/grub/ 目录下的 menu.lst 文件。此文件将在开机是产生一个菜单,包含有 Debian linux,Windows2000,RedHat linux 和 Mandrake linux,共四个选择项。我一共分了8个区,一个fat16(0x6),一个ntfs(0x7),三个ext2fs分区(0x83),一个 swap 分区(0x82)。ntfs 用来装win2000,三个 ext2fs 装了三个linux,c盘fat16分区没有装任何东西。

 

一个GRUB configure 的例子
  timeout 10
  default 2

  # --> Debian linux <--

  title Debian linux
  root (hd0,2)
  kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro
  initrd /boot/initrd-2.2.18.gz
  # --> Debian END <--
  # --> Windows 菜单选项<--
  title Windows2000
  root (hd0,0)
  chainloader +1
  # --> Winddows 结束<--
  # --> RedHat linux 菜单选项<--
  title RedHat linux
  root (hd0,8)
  chainloader +1 # 在硬盘主引导分区装了lilo,所以也用了chainloader。
  # --> RedHat linux 结束<--
  # --> Mandrake linux 菜单选项<--
  title Mandrake linux
  root (hd0,5)
  kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro
  initrd /boot/initrd-2.4.3-20mdk.img
  # --> Mandrake linux 结束<--
  

  例子到此结束。以符号井"#"开头的行表示被注释掉,没有任何意义。

  timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。

  默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default 2 表示默认的操作系统在这儿是 Redhat linux。

  接下来,正如你所想象的,title表示的是“Debian linux”菜单项。root (hd0,2)表示第一个硬盘,第三个分区。这儿的root 于linux的root分区及其不同,此root非彼root也!

  在 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)"

  知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro 说明 /boot/vmlinuz-2.2.18 就是要载入的内核。后面的都是传递给内核的参数。root=/dev/hda3 就是 linux 的硬盘分区表示法,ro 是以readonly 的意思。initrd 用来初始的 linux image,并设置相应的参数。

  是不是感觉很简单啊!再来看一看windows的定义段吧。这里,我添加了一项来引导Windows2000。要完成此操作,GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区(hd0,0) 的引导记录中装入win2000 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因-- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。

   我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。

  GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗?有趣吧!

 

GRUB的交互性
  GRUB 最好的优点之一就是其强健的设计-- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装GRUB。事实上,如有必要,只要更新menu.lst 文件即可,一切将保持正常。

  只有少数情况下,才需要将GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

  GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下: 
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

  [ Minimal BASH-like line editing is supported. For the first word, TAB
  lists possible command completions. Anywhere else TAB lists the possible
  completions of a device/filename. ]

  grub> 

  欢迎使用GRUB 控制台。现在,再研究命令:我将通过GRUB 控制台绕过lilo来启动RedHat linux,

  grub> root (h

  现在,按一次Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从"hd0" 开始。如果只有一个硬盘,GRUB 将插入"hd0,"。如果有多个硬盘,继续进行,在("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按Enter 键。部分完成的root 命令看起来如下:

  grub> root (hd0,

  现在,继续操作,再按一次Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:

  grub> root (hd0, (tab,按tab一下键)
  Possible partitions are:
  Partition num: 0, Filesystem type is fat, partition type 0x6
  Partition num: 2, Filesystem type is ext2fs, partition type 0x83
  Partition num: 4, Filesystem type unknown, partition type 0x7
  Partition num: 5, Filesystem type is ext2fs, partition type 0x83
  Partition num: 6, Filesystem type is fat, partition type 0xb
  Partition num: 7, Filesystem type is fat, partition type 0xb
  Partition num: 8, Filesystem type is ext2fs, partition type 0x83
  Partition num: 9, Filesystem type unknown, partition type 0x82

  如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了

  grub> root (hd0,8)

  现在已安装了 root 文件系统,到装入内核的时候了

  grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro
  [Linux-bzImage, setup=0x1200, size=0xe1a30]

  您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入"boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。

  

GRUB启动盘
  要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建ext2 文件系统。然后,将其安装,并将一些GRUB 文件复制到该文件系统,最后运行"grub" 程序,它将负责设置软盘的引导扇区。准备好了吗?

  将一张空盘插入 1.44MB 软驱,输入:

  # mke2fs /dev/fd0

  创建了 ext2 文件系统后,需要安装该文件系统:

  # mount /dev/fd0 /mnt/floppy

  现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:

  # mkdir /mnt/floppy/boot
  # mkdir /mnt/floppy/boot/grub
  # cp /boot/grub/stage1 /mnt/floppy/boot/grub
  # cp /boot/grub/stage2 /mnt/floppy/boot/grub

  再有一个步骤,就能得到可用的引导盘。

  在linux bash中,从root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是GRUB 引导装入器的半功能性版本。尽管Linux 已经启动并正在运行,您仍可以运行GRUB 并执行某些任务,而且其界面与使用GRUB 引导盘或将GRUB 安装到硬盘MBR 时看到的界面(即GRUB控制台)完全相同。
在grub> 提示符处,输入:

  grub> root (fd0)
  grub> setup (fd0)
  grub> quit

  现在,引导盘完成了。

  如果要把GRUB装到硬盘上,也很容易。这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为 root GRUB 分区。在这个分区上,创建 /boot/grub 目录,并将stage1 和stage2 文件复制到该目录中,可以通过重新引导系统并使用引导盘,或者使用驻留版本的GRUB 来执行后一步操作。在这两种情况下,启动 GRUB,并用 root 命令指定 root 分区。例如,如果将 stage1 和 stage2 文件复制到 hda5 的 /boot/grub 目录中,应输入 "root (hd0,4)"。接着,决定在哪里安装 GRUB -- 在硬盘的 MBR,或者如果与 GRUB 一起使用另一个“主”引导装入器,则安装在特定分区的引导记录中。如果安装到 MBR,则可以指定整个磁盘而不必指定分区,如下(对于 hda):

  grub> setup (hd0)

  如果要将 GRUB 安装到 /dev/hda5 的引导记录中,应输入:

  grub> setup (hd0,4)

  现在,已安装 GRUB。引导系统时,应该立即以GRUB 的控制台方式结束(如果安装到MBR)。现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令。

  小结:在这里只是介绍了GRUB 的一部分。例如,可以使用GRUB 来执行网络引导,引导BSD 文件系统,或更多操作。另外,GRUB 有许多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,请阅读 GRUB 出色的 GNU 文档。只要在 bash 提示中输入 "info grub" 就可以阅读该文档。

   有用的一些信息:xosl 是一个支持鼠标的图形界面 boot loader,可以于 system command 和 boot manager相比,网址是www.xosl.org。

  GRUB的下载:ftp://alpha.gnu.org/gnu/grub/ 

 (本文已被浏览 5809 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:SCO OpenServer 5下编译apache2...
下篇文章:GRUB菜单隐藏的解除
 相关文章:
SCO OpenServer 5.0.7制作紧急启动光盘的方法 HP ProLiant服务器安装SCO默认引导字符串
Windows和Linux系统共存 完美解决方案 硬盘安装Linux和从Grub命令行启动操作系统
GRUB故障 --- 满屏显示GRUB字符 修改OpenSuse 10.2 grub背景图
SUSE 10.2 GRUB 修复手记 Linux启动流程与Grub的配置
ubuntu7.04硬盘安装简明步骤 Ubuntu6.06中GRUB的修复
grub详解 Red Flag 桌面 5.0 如何制作启动软盘
通过GRUB引导硬盘安装Fedora Core 6 Linux的方法 用chkconfig轻松管理启动程序
使用grub引导第二块硬盘上的Windows Fedora Core 6硬盘安装手记
制作在软盘上跑的Linux引导器详细过程 勿需额外安装引导程序实现多Linux共存
删除Linux引导界面的方法及注意事项 在Linux和Windows两系统间自由切换

相关搜索
查看百度中关于GRUB 三步通的更多内容
查看google中关于GRUB 三步通的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Linux.Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.