⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 508.html

📁 著名的linux英雄站点的文档打包
💻 HTML
📖 第 1 页 / 共 4 页
字号:
              </form>
            </TD>
            <TD rowSpan=2><IMG src="images/header_r1_c7.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c7.gif" width=26 border=0 name=header_r1_c7></TD>
          <TD><IMG height=83 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1 border=0></TD></TR>
        <TR>
          <TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif"><IMG height=22 
            src="images/header_r2_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r2_c1.gif" width=296 border=0 
            name=header_r2_c1></TD>
          <TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colSpan=5>
              <DIV align=right><FONT class=normalfont>当前位置: 
              <A href="index.html" tppabs="http://www.linuxhero.com/docs/index.html">本站首页</A>
              <font color="#FF6699">&gt;&gt;</font>
<A href="type5.html" tppabs="http://www.linuxhero.com/docs/type5.html">安装启动</A>                 | <A href="copyright.html" tppabs="http://www.linuxhero.com/docs/copyright.html">版权说明</A></font></DIV>
            </TD>
          <TD><IMG height=22 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1 
        border=0></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=10 cellPadding=0 width="100%" bgColor=#ffffff 
        border=0>
         <TR>
          <TD>
            <TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
              
              <TR>
                <TD vAlign=top align=middle width="60%">
                  <TABLE cellSpacing=0 cellPadding=0 width="100%" 
                  background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
                    <TBODY>
                    <TR>
                        <TD vAlign=top width="80%"> 
                          <DIV align=center>
                        <FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
                            </FORM>
                        <TABLE cellSpacing=0 cellPadding=0 width="95%" 
                          border=0><TBODY>
                          <TR>
                            <TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif" 
                          height=30></TD></TR></TBODY></TABLE>
                        <TABLE cellSpacing=0 cellPadding=3 width="95%" 
                        align=center border=0>
                          <TBODY>
                          <TR>
                            <TD>
                              <TABLE cellSpacing=0 cellPadding=3 width="100%" 
                              border=0>
                                <TBODY>
                                <TR>
                                      <TD vAlign=top> 
<p><FONT class=normalfont><B><font color=blue>比lilo更强劲的多操作系统引导程序grub</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:苏通<br>来自:Linux知识宝库<br>联系方式:无名<br><br>  多引导是目前大家讨论的比较热门的一个话题,随着LINUX和INTERNET的热潮席卷全世界,个人电脑已经不再是MS的天下,对于操作系统我们拥有了更多的选择机会,FREEBSD,LINUX....一个硬盘上安装两到三个操作系统已经非常普遍,但是由于各个操作系统的引导过程机制不同,使我们在安装多系统时遇到了不少问题。我们面临着选择什么样的多引导程序的问题。<br>
  LILO的确是一个选择,现在很多人也都是采用LILO解决多引导的问题。但是LILO并不易于使用,仍然不够灵活,而且从技术角度而言LILO仍然只是一个linux loader,它并不直接支持其他的操作系统,LILO对除LINUX外其他操作系统所做的只是将其引导块装入,而并不是将这些操作系统的内核装入,这样做的危险之处在于如果某个操作系统分区的引导块不小心被破坏了,那就可能导致这整个系统无法进入,甚至不得不重新安装,GRUB的推出就是企图改善这种一块硬盘上存在多个引导块的混乱局面。<br>
  GNU针对多引导的问题推出了一个更加灵活和强大的多引导程序GRUB,提出了将引导程序和操作系统分离的解决方法,当然这主要是针对自由操作系统,但是GRUB仍然能够通过chainloader引导其它非自由的操作系统。如果你仅仅安装LINUX和WINDOWS的话,的确,LILO已经足够使用,但是GRUB强于LILO之处在于还对GNU Mach,FreeBSD, NetBSD和OpenBSD的直接支持,而且更加灵活。GRUB能够直接引导上述的几个操作系统,装入内核,不需要那些各自为政的引导块, 这样我们只要拥有GRUB,在安装上述那些操作系统时就可以更加放心,不用再被什么引导块被覆盖的问题大伤脑筋。GRUB灵活之处还在于提供了一个引导时功能强大的命令行模式,我们可以举一个例子来说明这样做给我们带来的灵活性:你只需要做一张带GRUB的引导软盘,不需要任何配置,你就可以用这张软盘引导,然后可以通过几条简单指令启动任意一台计算机上的绝大部分操作系统。显然这种灵活信是任何其他引导软件无法比拟的。<br>
  首先,先大概了解一下计算机操作系统的引导过程:<br>
  众所周知,计算机的最初启动是由BIOS控制的,在对一些硬件(如:内存、键盘等)初始化之后,它会试图加载硬盘的主引导记录(MBR)或软盘的引导扇区。MBR可通过两种方式运行,其一是定位到活动分区并加载相应的引导扇区,然后将控制权移给此引导扇区,由引导扇区完成该分区内操作系统的基本组件的加载;其二是直接从一指定分区中加载信息,并通过它装入任一分区的操作系统,诸如LILO、OS/2 boot loader等引导加载程序都可以配置成这种方式。<br>
  和LILO一样,GRUB能够识别文件系统,GRBU能够理解内核的可执行文件格式,这样就可以不用关心内核文件的磁盘定位,而只需通过文件系统便可以找到内核文件,GRUB比LILO能够理解更多的文件系统类型,更多内核可执行文件格式,这样它就能够直接定位和引导不同操作系统的内核。<br>
  GRBU最早是在1995年由Erich Boleyn编写的,其最初目的是为了能够从Utah Mach4微内核系统(即是现在的GNU Mach)中启动引导GNU Hurd操作系统。现在GRUB的基本目的是用于引导符合Multiboot标准的操作系统,Multiboot是一个用于定义符合多引导标准的操作系统规范,这个标准十分全面,但是目前支持它的操作系统仍不多,主要是GNU Hurd,所以现在仍不能达到GRUB所设想的操作系统引导界面大一统的局面,虽然这一天似乎很遥远,但是我们现在仍然可以享受GRUB给我们带来的强大功能和高度的灵活性。<br>
<br>
  下面我们来看看GRUB的特点和安装使用方法:<br>
一. GRUB的技术特点:<br>
  1.  支持多可执行文件格式<br>
     GRUB支持各种a.out格式和ELF格式。<br>
  2.  支持不符合Multiboot标准的内核<br>
     GRUB能够直接支持多种并不符合Multiboot标准的自由操作系统内核(主要是FreeBSD,NetBSD,OpenBSD和linux)。也能通过chainloader间接引导非开放的其他操作系统。<br>
  3.  支持操作系统模块装载。<br>
  4.  提供文本格式可手工修改的配置文件。<br>
  5.  菜单界面<br>
  6.  灵活的命令行界面<br>
  7.  多文件系统识别<br>
      能够透明地识别多种文件系统,现在能够识别的文件系统有BSD FFS,DOS FAT16,FAT32,Minix fs和linux ext2fs。这个范围仍然在扩展。<br>
  8.  支持压缩文件的解压缩。<br>
     能够解压缩被gzip压缩的文件,并且这个识别和解压过程是自动的和对用户透明的,这个功能大大地减少了文件的大小,减少了load的时间,这个功能对于软盘上的系统尤其有用。<br>
     可能有些内核模块在装载时就要求是压缩状态,这时解压此模块可能会画蛇添足,所以GRUB提供了另一个不进行解压缩的模块装载命令。<br>
  9.  可以读取任何已安装的设备上的数据<br>
     支持读取软盘,硬盘上的数据,不依赖于根设备上任何的设置。<br>
  10. 和磁盘定位的表示方法无关。<br>
  11. 能够使用BIOS所检测到的所有RAM.<br>
     GRUB通常能够找到PC兼容机上的全部RAM, 它采用一种先进的BIOS查询技术来找到所有的内存空间。<br>
  12. 支持硬盘的LBA模式<br>
      GRUB通过支持LBA模式,突破1024柱面的限制,能够访问8GB以外的全部硬盘空间。<br>
  13. 支持网络<br>
     虽然GRUB是一个基于磁盘的引导程序,但是它也支持网络功能,你可以通过TFTP协议从网络上得到操作系统映象文件并引导。<br>
<br>
  GRUB的后继版本可能会包括一个内置的可编程语言来支持各种内核的引导参数,这还只是一个操作系统引导器吗?;),并且计划加入对非PC体系结构的支持。<br>
<br>
二. 如何在LINUX下安装和使用GRUB<br>
<br>
1. 下载并安装GRUB包:<br>
  你可以到&lt;ftp://alpha.gnu.org/gnu/grub/grub-0.5.94.tar.gz&gt;得到GRUB,然后:<br>
  # zcat grub-0.5.94.tar.gz | tar xvf -<br>
  会生成一个目录grub-0.5.94,再:<br>
  # cd grub-0.5.94<br>
  # ./configure<br>
  # make install<br>
  这样GRUB就安装好了,下面你需要在你的硬盘或者软盘引导区上安装GRUB引导代码。<br>
  a. 制作GRUB引导软盘:<br>
  # cd /boot/grub<br>
  # dd if=stage1 of=/dev/fd0 bs=512 count=1<br>
  # dd if=stage2 of=/dev/fd0 bs=512 seek=1<br>
  b. 制作GRUB硬盘引导:<br>
  重启动用GRUB引导软盘引导,或者你不想重启动也可以执行/usr/sbin/grub。两种情况都会进入命令行界面。 然后,我们首先要设置GRUB的“根设备”,也就是告诉GRUB安装所在的分区:<br>
  grub&gt; root (hd0,0)<br>
  这里牵涉到GRUB的设备命名规则,将在下面介绍,此处(hd0,0)是指第一块硬盘的第一个分区。<br>
  如果你不能够确定安装GRUB所在的分区号的话,可以通过find指令查找:<br>
  grub&gt; find /boot/grub/stage1<br>
  GRUB将会查找文件/boot/grub/stage1并显示包含这个文件的设备名,当然就是我们安装GRUB所在的分区。下面就可以写引导记录了:<br>
  grub&gt; setup (hd0)<br>
  这条命令将会在第一块硬盘的MBR安装GRUB引导,如果你不想在MBR安装GRUB,而是希望将GRUB安装在分区的引导扇区的话,你可以用下面指令指定安装设备:<br>
  grub&gt; setup (hd0,0)<br>
  这将会在第一块硬盘的第一个分区的引导扇区安装GRUB。<br>
  OK,现在你就可以重新启动由GRUB引导你的系统。<br>
<br>
2. GRUB的设备命名规则:<br>
  首先GRUB对设备的命名必须包含在小括号内,GRUB不区分IDE硬盘和SCSI硬盘,统一使用hdx,其中x指定BIOS中硬盘的编号,从零开始计数,而且通常计算机内的IDE硬盘编号在SCSI硬盘前。GRUB用fdx指定软盘设备,x是软盘驱动器号。具体命名规则如下:<br>
  (fd0):第一软驱,GRUB还可以引导软盘上的操作系统:)<br>
  (hd0,1): 第一块硬盘的第二个分区。<br>
  (hd1,4): 第二块硬盘的第一个扩展分区,扩展的分区是从4开始编号的。<br>
  (hd0,2,a): 专用于FreeBSD,FreeBSD有一个slice概念,把一个分区进一步分为几个slice,此处指明是第一块硬盘的第三个分区中的slice a。你也可以用(hd0,a),这样GRUB就会在第一块硬盘上找到第一个FreeBSD分区的slice a。<br>
  让我们再来看看GRUB对于磁盘文件的命名方法:<br>
  (hd0,1)/vmlinuz,很简单只要指定分区号和文件的绝对路径名就可以了。<br>
<br>
3. 现在来看看如何用GRUB引导我们的多操作系统,用GRUB引导后可以进入命令行模式或者菜单模式,你可以通过灵活的命令行模式选择引导各个分区的操作系统,指定引导参数。<br>
  GRUB支持三种引导方法,第一种是直接引导操作系统内核,第二种是通过chainload进行间接引导。<br>
  对于GRUB能够支持的LINUX,FreeBSD,OpenBSD,NetBSD,GUN Mach可以通过直接引导完成,不需要其他的引导扇区了,但是对于GRUB不直接支持的操作系统,需要用第二种方法chainload来完成。另外GRUB还支持网络引导,我们分别来看看这几种引导方法:<br>
  (a)直接引导:<br>
  通常步骤如下:<br>
  1.用root命令设置包含操作系统内核的根设备<br>
  2.用kernel命令装载内核映象文件,如果这个内核引导的时候有参数的话,可以直接将参数加在内核文件名的后面。<br>
  3.用module或modulenounzip装载内核模块。<br>
  4.boot开始引导。<br>
<br>
  (b)chainload引导:<br>
  1.首先设置GRUB的根设备,用:<br>
   grub&gt; rootnoverify (hdx,y)<br>
  2.开始引导<br>
   grub&gt; chainloader +1<br>
   此处'+1'是指示GRUB读入分区的第一个扇区的引导记录。<br>
  3.执行boot开始引导<br>
  以上是一般的chainloader方式,对于DOS和WINDOWS,可以简单地用两条指令进行引导:<br>
  chainloader (hdx,y)+1,然后boot,其中x,y用来指明所在分区号。<br>
<br>
  (c) 从网络引导:<br>
  为了使GRUB能够支持从网络引导,你需要在编译时打开网络支持选项,关于这个你可以参考源文件目录里的`netboot/README.netboot为了从网络引导,你首先要在网络设置两个服务,首先是动态IP配置服务,可以是BOOTP,DHCP或RARP服务器,另一个是TFTP服务。<br>
  然后分别针对不同的服务器BOOTP,DHCP或RARP(三个选一个)运行bootp,dhcp,rarp。如果一切设置无误的话GRUB就会给出IP,IP netmask和TFTP服务器的IP和网关的IP地址。最后,从网上得到操作系统的映象文件,网络的设备名称是(nd)。如下例:<br>
  grub&gt; bootp<br>
  Probing... [NE*000]<br>
  NE2000 base ...<br>
  Address: 192.168.110.23 Netmask: 255.255.255.0<br>
  Server: 192.168.110.14 Gateway: 192.168.110.1<br><br>
  grub&gt; root (nd)<br>
  grub&gt; kernel /tftproot/gnumach.gz root=sd0s1<br>
  grub&gt; module /tftproot/serverboot.gz<br>
  grub&gt; boot<br><br>
4. 多操作系统引导实例:<br>
GNU/Hurd<br>
--------<br>
因为GNU/Hurd是符合Multiboot规范的操作系统,所以非常容易引导:<br>
grub&gt; root (hd0,2)<br>
如果你不记得Hurd所在的分区号的话,可以用find /boot/gnumach查找。<br>
grub&gt; kernel /boot/gnumach root=hd0s1<br>
grub&gt; module /boot/serverboot<br>
grub&gt; boot<br>
<br>
GNU/linux<br>
---------<br>
grub&gt; root (hd1,3)<br>
grub&gt; kernel /vmlinuz root=/dev/hda1<br>
如果你需要指定内核启动参数的话,可以直接加到命令的最后面如:<br>
grub&gt; kernel /vmlinuz root=/dev/hda1 vga=ext<br>
如果你使用initrd的话,在kernel命令之后执行:<br>
grub&gt; initrd /initrd<br>
grub&gt; boot<br>
<br>
FreeBSD<br>
-------<br>
    GRUB能够直接装载.ELF和a.out两种格式的内核,但是由于FreeBSD的内核引导接口有时有较大的变动,<br>
    所以,对FreeBSD最安全的引导方法是引导/boot/loader<br>
    grub&gt; root (hd0,a)<br>
    grub&gt; kernel /boot/loader<br>
    grub&gt; boot<br>
<br>
NetBSD,OpenBSD,NetBSD<br>
-------------------------------------<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -