免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: liyihongcug
打印 上一主题 下一主题

系统重新启动能否自动出现选择硬盘 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-05-27 13:31 |只看该作者
在设备命名中,圆括号和逗号是很重要的。指出是一个硬盘(hd)还是一个软盘(fd)被指定。
  是依照系统BIOS而确定的设备号,从0开始。基本IDE硬盘被标为0,第二IDE硬盘被标为1。这个排序大体上等同于linux内核用字母安排设备的顺序,只是在hda中的a变成了0,hdb中的b变为了1,依次类推。
  注意:GRUB用于设备的命名系统是从0开始,而不是1。这常常是GRUB新手们常犯的最普遍的错误。
  指在一块硬盘上一个分区的编号。类似于,分区的编号也是从0开始。虽然大多数的分区可以用数字指定,但是如果系统使用的是BSD分区,那么它们还是用字母来指定,如a或c。
 GRUB在命名设备和分区时,使用下面的规则:
  ·系统使用IDE硬盘或SCSI硬盘,都没有关系。所有的硬盘都是用hd开始。软盘用fd开头。
  ·当指定整个硬盘,不考虑它的分区时,简单地将逗号和分区编号取消即可。当告诉GRUB配置一个特定硬盘的主引导扇区时,这一点很重要。比如,(hd0)指定第一个设备,(hd3)指定第四个设备。
  ·如果一个系统有多个驱动设备,知道由BIOS确定的驱动器顺序就很重要了。如果系统只有IDE或SCSI驱动器,那是相当简单的。但是如果有多个驱动器混合时,这就变得令人混乱了。  
  文件名称
  当在GRUB中输入包括文件的命令时,比如在多操作系统中使用一个菜单列表,文件名必须直接在设备和分区后指定。一个绝对文件名的格式如下:
  (,)/path/to/file
  大多数的时候,用户可以通过在分区上的目录路径后加上文件名来指定文件。这种方法是直接了当的。

www.gzusb.com

  另外,我们也可以将不在文件系统中出现的文件指定给GRUB,比如在一个分区最初几块扇区中的链式引导装载程序。为了指定这些文件,需要提供一个块列表(blocklist),由它来一块一块地告诉GRUB文件在分区中的位置。当一个文件是由几个不同的块组合在一起时,需要有一个特殊的方式来写块列表。每个文件片断的位置由一个块的偏移量以及从偏移点起始的块数来描述,这些片断以一个逗号分界(comma-delimited)的顺序组织在一起。
  考虑下面的块列表:
  0+50,100+25,200+1
  上面这个块列表告诉GRUB使用一个文件,这个文件起始于分区的第一块,使用了第0块到第49块,第99块到124块,以及第199块。
  当使用GRUB装载诸如微软Windows这样采用链式装载方式的操作系统时,知道如何写块列表是相当有用的。如果从第0块开始,那么可以省略块的偏移量。作为一个例子,当链式装载文件在第一硬盘的第一个分区时,可以使用下面的命名:

www.gzusb.com


  (hd0,0)+1
 下面给出一个带类似块列表名称的chainloader命令。它是在设置正确的设备和分区作为根后,在GRUB命令行中给出的。
  chainloader +1
  GRUB的根文件系统
  一些用户常困惑于GRUB中根文件系统(root filesystem)这一术语的用法。GRUB的根文件系统与Linux的根文件系统是没有关系的,这一点需要记住。
  GRUB的根文件系统是用于一个特定设备的根分区。GRUB使用这个信息来挂入(mount)这个设备并从它上面载入文件。
  在Red Hat Linux中,一旦GRUB载入它自己的包含Linux内核的根分区,那么kernel命令就可以将内核文件的位置作为一个选项来执行。一旦Linux内核引导,它就设定自己的根文件系统,此时的根文件系统就是大多数人用来与Linux联系的了。最初的GRUB根文件系统以及它的挂入都被去掉,它们仅存在于用来引导内核文件。
  关于根和内核命令的更多信息,可以参考后面的命令部分。

www.gzusb.com


三、GRUB的接口
  GRUB主要有三个强大的接口,它们提供了不同级别的功能。每个接口都允许用户引导操作系统,甚至可以在处于GRUB环境下的接口之间移动。
  菜单接口
  如果GRUB是由Red Hat Linux的安装程序自动配置的,那么它默认的显示接口是菜单接口。在系统第一次启动后,一个操作系统或内核的菜单(事先已经用它们各自的引导命令配置好)将一个按名称排列的列表保存在这个接口中。使用箭头键选择一个非默认选项,然后按回车键来引导它。如果不是这样,一个记时器可能已经被设置,那么 GRUB将启动装载那个默认的选项。
  在菜单接口上,按[e]键,对高亮菜单项中的命令进行编辑。按[c]键载入一个命令行接口。
  菜单项目编辑器接口
  在引导装载菜单中按[e]键,就进入了菜单项目编辑器。用于项目的GRUB命令就显示在这里。在引导操作系统前,用户可以更改这些命令,添加(加在当前行后面,用[o]键;加在当前行前,用[0]),编辑(用[e]键),删除(用[d]键)。

www.gzusb.com

  在所有的改变都完成后,用键来执行这些命令,并引导操作系统。[Esc]键来放弃这些修改,将重新入标准的菜单接口。[c]键用来载入命令行接口。
  命令行接口
  命令行是GRUB最基本的接口,但它也是被授予了最大控制能力的接口。在命令行接口中,输入任何相关的GRUB命令,再回车就可以执行了。这个接口的功能有点类似于shell的功能,比如[Tab]键完成,前后文提示,输入命令时的[Ctrl]键组合,如[Ctrl]-[a]移到行的开头, [Ctrl]-[e]移到行的结尾。另外,箭头键,[Home],[End],[Delete]键与bash shell中一样用法。
  接口使用的顺序
  当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。
  如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口,以允许用户手工输入必要的命令来启动操作系统。

U盘之家


  如果配置文件不是正确的,那么GRUB将显示出错误,并请求输入。这点是很有帮助的,因为用户将能够看到问题发生在文件中的什么地方,并修复它。按下任意键,重新载入菜单接口,根据GRUB报告的错误,编辑菜单选项并纠正问题。如果这个修正失败了,那么错误将被报告,且GRUB将再次开始。
  四、GRUB的命令
  GRUB包含了许多不同的命令,它们可以在命令行接口中以交互的方式执行。其中的一些命令能接在命令名后面的选项,这些选项用空格隔开。
  下面的列表给出了最有用的一些命令:
  ·boot - 引导先前已经被指定并载入的操作系统或链式装载程序。
  ·chainloader - 将指定的文件作为一个链式装载程序载入。为了获取在一个指定分区第一扇区内的文件,使用+1作为文件名。
  ·displaymem - 显示当前内存的使用情况,这个信息是基于BIOS的。这个命令有助于确定系统在引导前有多少内存。 U盘之家
  ·initrd - 使用户能够指定一个在引导时可用的初始RAM盘。当内核为了完全引导而需要某些模块时,这是必需的。
  ·install p - 安装GRUB到系统的主引导记录。这个命令允许系统重启时出现GRUB接口。
  警告:install命令将覆盖主引导扇区中的其他信息。如果命令被执行,那么除了GRUB信息之外的其他用于引导其他操作系统的信息都将丢失。在执行这条命令前,确定你对它有正确的了解。
  这条命令可以用几种不同的方式进行配置。然而,它都要求指定。表示一个设备,分区和文件,在那里可以找到第一个引导装载程序的映象,比如(hd0,0)/grub/stage1。另外,也指定了第一步引导装载程序应该被安装的硬盘,如(hd0)。
选项告诉第一步引导装载程序第二步引导装载程序位于什么地方,例如(hd0,0)/grub/stage2。p选项告诉install命令菜单配置文件被指定在部分,比如说(hd0,0)/grub/grub.conf。 www.gzusb.com
  ·kernel - 当使用直接载入方式引导操作系统时,kernel命令指定内核从GRUB的根文件系统中载入。options选项是跟在kernel命令后面,在内核载入时传给内核。
  在Red Hat Linux中,一个kernel命令的例子看起来象下面的形式:
  kernel /vmlinuz root=/dev/hda5
  上面这行表明了vmlinuz文件是从GRUB的根文件系统载入的,如(hd0,0)。同时,一个选项也被传给了内核。它指出当Linux内核载入时,内核的根文件系统应该是位于hda5,第一个IDE硬盘的第五个分区。如果有必要的话,多个选项可以被放在这个选项后面。
  ·root - 将GRUB的根分区设置成特定的设备和分区,比如说(hd0,0)。并挂入这个分区,这样文件可以被读取。
  ·rootnoverify - 做root命令同样的事情,只是不挂入分区。
  除上面所述外,还有更多的命令可用。输入info grub,得到一个所有命令的完全列表。

瑞和数码


  五、GRUB的菜单配置文件
  配置文件在GRUB菜单接口中,创建用于引导操作系统的列表。配置文件可以允许用户选择执行事先设置好的一组命令。这些命令既包括前面给出的命令,也包括一些只用于配置文件的命令。
  配置文件的专用命令
  下面这些命令只用于GRUB的菜单配置文件:
  ·color - 设定在菜单中使用的颜色,一种是作为前景色,一种作为背景色。可以简单地使用颜色名称,如red/black。比如:
  color red/black green/blue
  ·default - 默认项目的标题名称。如果菜单接口超时,那它将被载入。
  ·fallback - 当这个命令被使用时,如果第一次尝试失败,那么这个项目的标题名称将被试用。
  ·hiddenmenu - 这个命令被使用时,它不显示GRUB菜单接口,在超时时间过期后载入默认项。用户通过按[Esc]键,可以看到标准的GRUB菜单。

www.gzusb.com


  ·password - 这个命令被使用时,它可以防止不知道口令的用户编辑菜单的项目。
  作为附加选项,可以在后面指定一个后备的菜单配置文件。因此,如果口令被知道,GRUB将重新启动第二步的引导装载程序,并使用这个后备的配置文件来建立菜单。如果这个后备文件不在命令中指出,那么知道口令的用户能够编辑当前的配置文件。
  ·timeout - 这个命令设定了在GRUB载入由default命令指定的项目前的时间间隔,以秒为单位。
 
  ·splashimage - 它指定在GRUB引导时所使用的屏幕图像的位置。
  ·title - 设定用来装载一个操作系统的一组特定命令的标题。
  字符#用来在菜单配置文件放置注释。
配置文件的结构
  设置GRUB菜单接口全局参数的命令被放在文件的顶部,接下来的是用于各个操作系统引导的不同项目。 瑞和数码
  一个非常基本的用于引导Red Hat Linux或Microsoft Windows 2000的GRUB菜单配置文件可能如下所示:
  default=linux
  timeout=10
  color=green/black light-gray/blue
  # section to load linux
  title linux
  root (hd0,1)
  kernel /vmlinuz root=/dev/hda5
  boot
  # section to load Windows 2000
  title windows
  rootnoverify (hd0,0)
  chainloader +1
  这个文件告诉GRUB建立一个以Red Hat Linux为默认操作系统的菜单,设定10秒后自动引导。这里给出了2个部分,每个部分对应于一个操作系统项目,每个部分都包含了指向操作系统硬盘分区表的命令。
  在下面的附加资料中,将列出如何使用GRUB引导多种操作系统的参考资料。
  六、GRUB的附加资料
  这个部分只是对GRUB以及它的许多选项作一个介绍。如果想要更多的了解GRUB是如何工作的、如何在其他任务中配置它来引导非Linux操作系统,可以参考下面列出的一些资料。 U盘之家
  安装文档
  ·/usr/share/doc/grub-0.90 - /usr/share/doc/grub-0.90是GRUB文档在系统上的目录。
  ·在一个shell提示下,输入man grub命令可以查看GRUB的手册,它包括一个装载GRUB shell时所使用的选项的列表。
  ·在一个shell提示下,使用info grub命令可以得到GRUB的info页,它包括一个指南,一个用户参考手册,一个程序员参考手册,以及一个关于GRUB和它自己用法的FAQ文档。
  有用的一些站点
  ·http://www.gnu.org/software/grub - GNU GRUB 项目的主页。这个站点包含了GRUB发展状态的信息以及一个FAQ。
  ·http://www.uruk.org/orig-grub - 在这个项目被脱管到自由软件基金会进一步发展前的最初的GRUB文档。
  ·http://www.redhat.com/mirrors/LD ... boot-with-GRUB.html - 研究GRUB各种不同的用法,包括引导非Linux操作系统。
  ·http://www.linuxgazette.com/issue64/kohli.html - 一篇介绍性的文章,讨论在一个系统上GRUB配置,包括GRUB命令行选项的概述。 瑞和数码
用安装盘来修复GRUB
一、本解决方案所要解决的问题:
我们可能在安装WIN时,把GRUB或者LILO从MBR上清除。如果在没有系统引导软盘只有安装盘的情况下,所采取的解决解决办法。
常用恢复MBR的办法还有一种是用升级系统的办法,这种办法经过验证,是极不可靠的。我们经过近二三十次的实践,证明效果几乎很少,这个办法用于没有安装 GRUB的还是可行的。如果已经把GRUB安装上,后来就重装WINDOW或者别的操作系统而带的LILO,而导致系统不能正常引导,这种办法就失效了。所以说,本方案最适合GRUB的恢复。
二、解决过程[以RedHat 7.3为例]
1.把安装盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。
2.等安装界面出来后,按[F4]键,也就是linux rescue模式。
3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比较简单。 www.gzusb.com
4.然后会出现这样的字符
sh#
5.我们就可以操作GRUB了。。。哈。。。只要能出现这样的,以后都是小KISS了,我就是不说 ,谁也能明白,地球人都知道了。。。。
sh#grub
会出现这样的字符
grub>
我们就可以在这样的字符后面,输入
grub>root (hdX,Y)
grub>setup (hd0)
如果成功会有一个successful......
这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。
我来举个例子吧,如果以我的硬盘为例。我在第一个硬盘上装了XP,在第一个硬盘的hda9个装了RH73.我总共有两个硬盘。如果我把GRUB丢了,就用这种办法找回来。 如果你不知道你的linux安装到哪个分区上,也就是说,不知道这个Y是多少,这也不要紧,先输入root (hdX,然后用[TAB]来查看,一下就明白了... 瑞和数码
操作如下:[前面开机启动的上面有说明]
sh# grub
会出现下面的字样的
grub>
然后再这样操作,如果我知道我的linux装在第一个硬盘上,但我不知道装在哪个分区上,就可以先输入root (hd0,然后用[TAB]键来补齐,然后就明白了。
代码:
grub>root (hd0,
grub>setup (hd0)

请弟兄们结合文章及这个例子,仔细想一想。
我的第一个硬盘的分区情况是这样的。。
/dev/hda1 主分区 NTFS
/dev/hda2 扩展分区
/dev/hda5 NTFS
/dev/hda6 FAT
/dev/hda7 FAT
/dev/hda8 /boot ext3
/dev/hda9 / ext3
/dev/hda10 /swap ext3

最后就是按一下[RESET]键,重新启动,就OK了。。。。这步应该是最简单的吧。。。哈。。。。
 
比LILO更强劲的多操作系统引导程序GNU GRUB
多引导是目前大家讨论的比较热门的一个话题,随着LINUX和INTERNET的热潮席卷全世界,个人电脑已经不再是M$的天下,对于操作系统我们拥有了更多的选择机会,FREEBSD,LINUX....一个硬盘上安装两到三个操作系统已经非常普遍,但是由于各个操作系统的引导过程机制不同,使我们在安装多系统时遇到了不少问题。我们面临着选择什么样的多引导程序的问题。 www.gzusb.com
  LILO的确是一个选择,现在很多人也都是采用LILO解决多引导的问题。但是LILO并不易于使用,仍然不够灵活,而且从技术角度而言LILO仍然只是一个linux loader,它并不直接支持其他的操作系统,LILO对除LINUX外其他操作系统所做的只是将其引导块装入,而并不是将这些操作系统的内核装入,这样做的危险之处在于如果某个操作系统分区的引导块不小心被破坏了,那就可能导致这整个系统无法进入,甚至不得不重新安装,GRUB的推出就是企图改善这种一块硬盘上存在多个引导块的混乱局面。
  GNU针对多引导的问题推出了一个更加灵活和强大的多引导程序GRUB,提出了将引导程序和操作系统分离的解决方法,当然这主要是针对自由操作系统,但是GRUB仍然能够通过chainload引导其它非自由的操作系统。如果你仅仅安装LINUX和 WINDOWS的话,的确,LILO已经足够使用,但是GRUB强于LILO之处在于还对GNU Mach,FreeBSD, NetBSD和OpenBSD的直接支持,而且更加灵活。GRUB能够直接引导上述的几个操作系统,装入内核,不需要那些各自为政的引导块, 这样我们只要拥有GRUB,在安装上述那些操作系统时就可以更加放心,不用再被什么引导块被覆盖的问题大伤脑筋。GRUB灵活之处还在于提供了一个引导时功能强大的命令行模式,我们可以举一个例子来说明这样做给我们带来的灵活性:你只需要做一张带GRUB的引导软盘,不需要任何配置,你就可以用这张软盘引导,然后可以通过几条简单指令启动任意一台计算机上的绝大部分操作系统。显然这种灵活信是任何其他引导软件无法比拟的。

U盘之家

  首先,先大概了解一下计算机操作系统的引导过程:
  众所周知,计算机的最初启动是由BIOS控制的,在对一些硬件(如:内存、键盘等)初始化之后,它会试图加载硬盘的主引导记录(MBR)或软盘的引导扇区。MBR可通过两种方式运行,其一是定位到活动分区并加载相应的引导扇区,然后将控制权移给此引导扇区,由引导扇区完成该分区内操作系统的基本组件的加载;其二是直接从一指定分区中加载信息,并通过它装入任一分区的操作系统,诸如LILO、OS/2 boot loader等引导加载程序都可以配置成这种方式。
  和LILO一样,GRUB能够识别文件系统,GRBU能够理解内核的可执行文件格式,这样就可以不用关心内核文件的磁盘定位,而只需通过文件系统便可以找到内核文件,GRUB比LILO能够理解更多的文件系统类型,更多内核可执行文件格式,这样它就能够直接定位和引导不同操作系统的内核。

瑞和数码

论坛徽章:
0
12 [报告]
发表于 2011-05-27 13:32 |只看该作者
  GRBU最早是在1995年由Erich Boleyn编写的,其最初目的是为了能够从Utah Mach4微内核系统(即是现在的GNU Mach)中启动引导GNU Hurd操作系统。现在GRUB的基本目的是用于引导符合Multiboot标准的操作系统,Multiboot是一个用于定义符合多引导标准的操作系统规范,这个标准十分全面,但是目前支持它的操作系统仍不多,主要是GNU Hurd,所以现在仍不能达到GRUB所设想的操作系统引导界面大一统的局面,虽然这一天似乎很遥远,但是我们现在仍然可以享受GRUB给我们带来的强大功能和高度的灵活性。
  下面我们来看看GRUB的特点和安装使用方法:
一. GRUB的技术特点:
  1. 支持多可执行文件格式
   GRUB支持各种a.out格式和ELF格式。
  2. 支持不符合Multiboot标准的内核
   GRUB能够直接支持多种并不符合Multiboot标准的自由操作系统内核(主要是FreeBSD,NetBSD,OpenBSD和 linux)。也能通过chainload间接引导非开放的其他操作系统。 瑞和数码
  3. 支持操作系统模块装载。
  4. 提供文本格式可手工修改的配置文件。
  5. 菜单界面
  6. 灵活的命令行界面
  7. 多文件系统识别
  能够透明地识别多种文件系统,现在能够识别的文件系统有BSD FFS,DOS FAT16,FAT32,Minix fs和Linux ext2fs.这个范围仍然在扩展。
  8. 支持压缩文件的解压缩。
   能够解压缩被gzip压缩的文件,并且这个识别和解压过程是自动的和对用户透明的,这个功能大大地减少了文件的大小,减少了load的时间,这个功能对于软盘上的系统尤其有用。
   可能有些内核模块在装载时就要求是压缩状态,这时解压此模块可能会画蛇添足,所以GRUB提供了另一个不进行解压缩的模块装载命令。
  9. 可以读取任何已安装的设备上的数据
   支持读取软盘,硬盘上的数据,不依赖于根设备上任何的设置。

瑞和数码

  10. 和磁盘定位的表示方法无关。
  11. 能够使用BIOS所检测到的所有RAM.
   GRUB通常能够找到PC兼容机上的全部RAM,它采用一种先进的BIOS查询技术来找到所有的内存空间。
  12. 支持硬盘的LBA模式
   GRUB通过支持LBA模式,突破1024柱面的限制,能够访问8GB以外的全部硬盘空间。
  13. 支持网络
   虽然GRUB是一个基于磁盘的引导程序,但是它也支持网络功能,你可以通过TFTP协议从网络上得到操作系统映象文件并引导。
  GRUB的后继版本可能会包括一个内置的可编程语言来支持各种内核的引导参数,这还只是一个操作系统引导器吗?;),并且计划加入对非PC体系结构的支持。
二. 如何在LINUX下安装和使用GRUB
1. 下载并安装GRUB包:
  你可以到<ftp://alpha.gnu.org/gnu/grub/grub-0.5.94.tar.gz>得到GRUB,然后: U盘之家

  # zcat grub-0.5.94.tar.gz | tar xvf -
  会生成一个目录grub-0.5.94,再:
  # cd grub-0.5.94
  # ./configure
  # make install
  这样GRUB就安装好了,下面你需要在你的硬盘或者软盘引导区上安装GRUB引导代码。
  a. 制作GRUB引导软盘:
  # cd /boot/grub
  # dd if=stage1 of=/dev/fd0 bs=512 count=1
  # dd if=stage2 of=/dev/fd0 bs=512 seek=1
  b. 制作GRUB硬盘引导:
  重启动用GRUB引导软盘引导,或者你不想重启动也可以执行/usr/sbin/grub。两种情况都会进入命令行界面。 然后,我们首先要设置GRUB的“根设备”,也就是告诉GRUB安装所在的分区:
  grub> root (hd0,0)
  这里牵涉到GRUB的设备命名规则,将在下面介绍,此处(hd0,0)是指第一块硬盘的第一个分区。
  如果你不能够确定安装GRUB所在的分区号的话,可以通过find指令查找: www.gzusb.com
  grub> find /boot/grub/stage1
  GRUB将会查找文件/boot/grub/stage1并显示包含这个文件的设备名,当然就是我们安装GRUB所在的分区。下面就可以写引导记录了:
  grub> setup (hd0)
  这条命令将会在第一块硬盘的MBR安装GRUB引导,如果你不想在MBR安装GRUB,而是希望将GRUB安装在分区的引导扇区的话,你可以用下面指令指定安装设备:
  grub> setup (hd0,0)
  这将会在第一块硬盘的第一个分区的引导扇区安装GRUB。
  OK,现在你就可以重新启动由GRUB引导你的系统。




2. GRUB的设备命名规则:
  首先GRUB对设备的命名必须包含在小括号内,GRUB不区分IDE硬盘和SCSI硬盘,统一使用hdx,其中x指定BIOS中硬盘的编号,从零开始计数,而且通常计算机内的IDE 硬盘编号在SCSI硬盘前。GRUB用fdx指定软盘设备,x是软盘驱动器号。具体命名规则如下:
  (fd0):第一软驱,GRUB还可以引导软盘上的操作系统
  (hd0,1): 第一块硬盘的第二个分区。
  (hd1,4): 第二块硬盘的第一个扩展分区,扩展的分区是从4开始编号的。
  (hd0,2,a): 专用于FreeBSD,FreeBSD有一个slice概念,把一个分区进一步分为几个slice,此处指明是第一块硬盘的第三个分区中的slice a。你也可以用(hd0,a),这样GRUB就会在第一块硬盘上找到第一个FreeBSD分区的slice a。
  让我们再来看看GRUB对于磁盘文件的命名方法:
  (hd0,1)/vmlinuz,很简单只要指定分区号和文件的绝对路径名就可以了。 U盘之家
3. 现在来看看如何用GRUB引导我们的多操作系统,用GRUB引导后可以进入命令行模式或者菜单模式,你可以通过灵活的命令行模式选择引导各个分区的操作系统,指定引导参数。
  GRUB支持三种引导方法,第一种是直接引导操作系统内核,第二种是通过chainload进行间接引导。
  对于GRUB能够支持的LINUX,FreeBSD,OpenBSD,NetBSD,GUN Mach可以通过直接引导完成,不需要其他的引导扇区了,但是对于GRUB不直接支持的操作系统,需要用第二种方法chainload来完成。另外 GRUB还支持网络引导,我们分别来看看这几种引导方法:
  (a) 直接引导:
  通常步骤如下:
  1.用root命令设置包含操作系统内核的根设备
  2.用kernel命令装载内核映象文件,如果这个内核引导的时候有参数的话,可以直接将参数加在内核文件名的后面。
  3.用module或modulenounzip装载内核模块。 U盘之家
  4.boot开始引导。
  (b) chainload引导:
  1.首先设置GRUB的根设备,用:
   grub> rootnoverify (hdx,y)
  2.开始引导
   grub> chainloader +1
   此处';+1';是指示GRUB读入分区的第一个扇区的引导记录。
  3.执行boot开始引导
  以上是一般的chainloader方式,对于DOS和WINDOWS,可以简单地用两条指令进行引导:
  chainloader (hdx,y)+1,然后boot,其中x,y用来指明所在分区号。
  (c) 从网络引导:
  为了使GRUB能够支持从网络引导,你需要在编译时打开网络支持选项,关于这个你可以参考源文件目录里的 `netboot/README.netboot为了从网络引导,你首先要在网络设置两个服务,首先是动态IP配置服务,可以是BOOTP,DHCP或 RARP服务器,另一个是TFTP服务。
  然后分别针对不同的服务器BOOTP,DHCP或RARP(三个选一个)运行 bootp,dhcp,rarp。如果一切设置无误的话GRUB就会给出IP,IP netmask和TFTP服务器的IP和网关的IP地址。最后,从网上得到操作系统的映象文件,网络的设备名称是(nd).如下例:

www.gzusb.com


  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)
  grub> kernel /tftproot/gnumach.gz root=sd0s1
  grub> module /tftproot/serverboot.gz
  grub> boot
4. 多操作系统引导实例:
GNU/Hurd
--------
因为GNU/Hurd是符合Multiboot规范的操作系统,所以非常容易引导:
grub> root (hd0,2)
如果你不记得Hurd所在的分区号的话,可以用find /boot/gnumach查找。
grub> kernel /boot/gnumach root=hd0s1
grub> module /boot/serverboot
grub> boot
GNU/Linux
---------
grub> root (hd1,3)
grub> kernel /vmlinuz root=/dev/hda1
如果你需要指定内核启动参数的话,可以直接加到命令的最后面如:
grub> kernel /vmlinuz root=/dev/hda1 vga=ext 瑞和数码
如果你使用initrd的话,在kernel命令之后执行:
grub> initrd /initrd
grub> boot
FreeBSD
-------
GRUB能够直接装载.ELF和a.out两种格式的内核,但是由于FreeBSD的内核引导接口有时有较大的变动,
所以,对FreeBSD最安全的引导方法是引导/boot/loader
grub> root (hd0,a)
grub> kernel /boot/loader
grub> boot
NetBSD,OpenBSD,NetBSD
-------------------------------------
这三种系统的引导指令序列一样,如下:
  1. ';root';设置根设备.
  2. `kernel';装载内核.
  3. `boot';引导.
DOS/Windows
-----------
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> boot
SCO UnixWare
------------
grub> rootnoverify (hd1,0)
grub> chainloader --force +1
grub> makeactive //注意这条指令将设置UnixWare分区为活动分区,这样要求你的GRUB安装在MBR,否则下次启动时将直接进入UnixWare而不会进入GRUB grub> boot

www.gzusb.com

  当然,如果每次引导都需要敲入命令的话实在是太麻烦了,因此,类似于 LILO,GRUB提供了一个菜单方式,你需要一个配置文件将这些命令放入配置文件中就可以实现菜单方式的多引导,当然在菜单方式下你可以切换到命令模式下。GRUB引导时查找/boot/grub/menu.lst,如果存在这个文件的话,就根据这个文件生成一个引导菜单,menu.lst文件格式很简单,如下示例:
5. 菜单设置文件格式
# 等待用户选择菜单项的时间(以秒计),超时则引导默认的选项
timeout 30
# 默认选项,第一项
default 0
# 如果第一项出错,则启动下面的后备选项
fallback 1
# 引导 GNU Hurd,其中title就是菜单中显示的提示字符串
title GNU/Hurd
root (hd0,0)
kernel /boot/gnumach.gz root=hd0s1
module /boot/serverboot.gz
# 引导 Linux
title GNU/Linux

U盘之家


root (hd1,0)
kernel /vmlinuz root=/dev/hdb1
# 引导Mach (kernel映象文件放在软盘)
title Utah Mach4 multiboot
root (hd0,2)
pause Insert the diskette now!!
kernel (fd0)/boot/kernel root=hd0s3
module (fd0)/boot/bootstrap
# 引导 FreeBSD
title FreeBSD 3.4
root (hd0,2,a)
kernel /boot/loader
# 引导 OS/2
title OS/2
root (hd0,1)
makeactive
chainloader +1
# 引导 Windows NT 或者 Windows95,98
title Windows NT / Windows 95,98 boot menu
rootnoverify (hd0,0)
chainloader +1
# 安装 GRUB 到硬盘MBR
title Install GRUB into the hard disk
root (hd0,0)
setup (hd0)
# 改变显示菜单的颜色
title Change the colors
color light-green/brown blink-red/blue
6. GRUB的用户界面介绍
  GRUB的用户界面有三种:命令行模式,菜单模式和菜单编辑模式 www.gzusb.com
  (a) 命令行模式:
  进入命令行模式后GRUB会给出一个命令提示符`grub>`,此时就可以键入命令,按回车执行。此模式下可执行的命令是在menu.lst中可执行的命令的一个子集。此模式下允许类似于Bash shell的命令行编辑功能:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP