文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>引导管理器Grub

引导管理器Grub

时间:2006-12-04  来源:lengyun5249

 
硬件基础 
======== 
   一块硬盘,它起始的一部分扇区为主引导扇区,包括MBR(主引导纪录)和DPT(分区表,您可以阅读分区概念章节中相关内容) 
   每个分区起始的一部分扇区,为分区引导扇区。 
   在分区引导扇区之后的部分,为文件系统的索引,文件系统通过它定位文件在硬盘上的位置。不同的文件系统采用不同的索引,例如FAT文件系统使用文件分配表和目录区。 
    
   绝大多数操作系统,对硬盘的读写操作,通过文件系统来完成,因此引导扇区中的内容,我们不能够在文件系统中进行操作,而需要专用软件,比如引导管理器。 
   我们对文件进行修改后,操作系统会将文件系统索引中的内容同步。    
 
 
系统引导流程 
------------ 
   1、系统启动时,首先引导至MBR,将控制权移交安装在MBR中的引导管理器 
      (Windows使用NTLDR,Linux通常用Grub) 
   2、引导管理器读取分区表 
   3、引导管理器读取分区中的配置文件,并按配置文件中预设的参数运行 
      例如,Grub读取“/boot/grub/menu.lst”文件中内容,将可引导系统通过菜单显示 
   4、引导管理器根据您的选择,可能会有如下活动 
      加载内核,启动Linux系统 
      检查活动分区,并引导它(单一Windows系统) 
      读取相应分区的引导扇区,将控制权移交该扇区中的引导管理器, 
 
   Ubuntu系统在安装Grub时,会提问您安装在MBR或者分区引导扇区中。如果将Grub安装在分区引导纪录中,您必须确保MBR中的引导管理器能够正确的引导至分区引导扇区。 
   如果您在MBR中使用的是Windows的引导管理器NTLDR,完成这件工作会非常困难,因而我们推荐您使用Grub。 
    
Grub介绍 
======== 
Grub主要有以下功能: 
 
   菜单式选择 
   命令行模式 
   支持开机画面 
   支持大硬盘    
 
   其它的功能还有很多,就不一一介绍了。 
 
 
    
   您可以运行命令“grub”启动它。会显示一些版本信息和使用提示,当然还有命令提示符,如下: 
 
   GNU GRUB  version 0.97  (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> 
 
   您可以使用TAB键补全命令和路径,这非常重要,因为Grub中路径表示方式与操作系统是不同的,您可能比较陌生,所以尽量用TAB补全它,既方便,也不容易出错。 
 
   您可以在“grub>”提示符后按TAB键,会将所有可用的命令显示出来。 
   呵呵,是不是有点晕,命令可真不少啊!!! 
 
   其实我们会用到的命令只有两个, 
   root 
   setup 
 
Grub术语 
-------- 
   在分区概念章节里,我们已经介绍了Linux系统中表示分区的方法“/dev/hda5” 
      /dev/hdMN   M为a起始的小写字母,表示硬盘序号;N为1起始的数字,表示分区序号 
   Grub中使用的表示方法为“hd0,1” 
      hdX,Y      X为0起始的数字,表示硬盘序号;Y为0起始的数字,表示分区序号 
 
   您得留意它们之间的区别: 
      N从1开始计数,X和Y从0开始计数 
      N为1~4,它是一个主分区;N为5或大于5,它是第(N-4)个逻辑分区。Y按分区在硬盘上排列的顺序排列,无论它表示的是主分区还是逻辑分区。 
      举例来说: 
                         主      主      逻       逻       主 
        /dev/hdMN       hda1    hda2    hda5    hda6    hda3 
        hdX,Y           hd0,0   hd0,1   hd0,2   hd0,3   hd0,4 
 
    
   现在我们来看“root”和“setup”命令的使用: 
      grub>root (hd0,1) 
      这个命令将Grub的根分区定位为 “(hd0,1)” 
      grub>setup (hd0) 
      这个命令表示将Grub安装在“(hd0)”,因为没有指定安装的分区,所以安装位置为MBR 
 
 
   Grub的根分区为Grub配置文件“/boot/grub/menu.lst”所在分区。假如您单独为“/boot”目录挂载了一个分区,那么Grub的根分区通常为您系统中“/boot”目录所在的分区。 
   搞错了根分区,Grub就不能正确读取配置文件,自然不能正确引导。 
 
   引导分区,Windows等系统的引导分区为它的安装分区,Linux系统的引导分区为它的“/boot”目录所在的分区 
 
   系统根目录所在分区,Linux根目录“/”的挂载分区。Linux系统的分区挂载信息保存在文件系统分配表“/etc/fstab”文件中 
 
   Grub首先读取根分区中的“/boot/grub/menu.lst”文件,并转到引导分区,如果是Windows等系统,则将控制权移动分区引导扇区中的启动管理器。如果是Linux系统,则加载内核和设备,并根据“/etc/fstab”文件的内容挂载文件系统。 
 
 
   看这个例子:(假设Grub安装在MBR中) 
      title       Ubuntu 
      root        (hd0,0) 
      kernel      (hd0,1)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda3 ro splash vga=0x31b 
      initrd      (hd0,1)/boot/initrd.img-2.6.15-25-686 
      boot 
    Grub的安装位置为“(hd0)” 
    “root (hd0,0)”,这一行表示Grub的根分区为第一块硬盘的第一个分区“(hd0,0)”,它读取该分区中的配置文件“grub/menu.lst” 
    “kernel”和“initrd”行中的“(hd0,1)”,表示当前系统的“/boot”目录挂载到第一块硬盘的第二个分区“(hd0,1)” 
    “kernel”行的“root=/dev/sda3”,表示当前系统的“/”目录挂载到第一块硬盘的第三个分区“(hd0,2)”,内核根据该分区中的“/etc/fstab”文件来挂载文件系统 
 
 
Grub配置文件 
------------ 
   “/boot/grub/menu.lst”文件,主要由一些下面这样的块构成的 
    
      title       Ubuntu 
      root        (hd0,2) 
      kernel      (hd0,2)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda3 ro splash vga=0x31b 
      initrd      (hd0,2)/boot/initrd.img-2.6.15-25-686 
      boot 
 
 
      title       Windows xp 
      root        (hd0,0) 
      makeactive 
      chainloader +1 
 
    
    每一块代表一个操作系统,包含下面里几个部分 
    title   xxx   标题,title和分隔符后的内容为Grub菜单中显示的条目 
    root   (hdX,Y)   引导分区,可以留空,默认为“grub/menu.lst”所在分区(根分区),可以使用“grub>root (hdX,Y)”命令设置,或者在您安装系统时自动设置 
    
    如果您计划引导至分区引导扇区,如Windows或者Unix系统(Unix和Linux系统,您需要选择将引导管理器安装到分区中),那么需要这样配置 
    makeactive   设置活动分区,系统默认设置,可以删除 
    chainloader +1   链式引导,不要动它。 
    如果以这种方式引导系统,上面“root (hdX,Y)”这一行通常需要配置,“(hdX,Y)”为您的系统所在的分区。假如您的Windows在第一块硬盘的第一个分区,则这样写“root (hd0,0)” 
 
    如果您引导的是Linux系统(没有在分区中安装引导管理器,而是安装到MBR),则需要这样配置 
    kernel      (hd0,2)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda2 ro splash vga=0x31b 
    initrd      (hd0,2)/boot/initrd.img-2.6.15-25-686  设备镜像文件,与上一行保持一致 
    boot      不要动它 
    “kernel”这一行最关键,它控制系统内核的加载。行末以“ro”起始的部分为参数(ro只读,splash显示启动画面,vga设定启动屏幕分辨率) 
    之前的部分可以写为这种形式: 
    kernel       (hdX,Y)/boot/vmlinuz   root=/dev/sdMN 
    “(hdX,Y)”通常不是必须的,如果您安装了多个Linux系统,或者“/boot”目录与根目录“/”不在一个分区,则应把它写为“/boot”目录所在分区。而后面的“root=/dev/sdMN”为系统根目录“/”所在的分区。 
    “initrd”这一行的“(hdX,Y)”与上一行保持一致。 
 
 
 
 
Grub安装 
-------- 
   上面已经向您介绍了Grub的安装,不过更多的侧重理论。现在我们来实践一下,假设您的系统不能引导,您可以尝试下面的方法:) 
    
   1、 
   a、找一张Ubuntu的LiveCD (Knoppix也是不错的选择) 
   b、也可以使用安装光盘,启动后在“boot”提示符后输入 “linux rescue”,回车进入救援模式。 
 
   2、 
   如果您拥有root权限,命令行提示符为“#”,如果是普通用户,则为“$”。 
   a、在救援模式下,通常你已经具有了root权限 
   b、如果是LiveCD且没有root权限,请在终端中输入 “su”命令切换到root,会提问你root的密码。 
   如果不知道root密码,可以使用这个命令“sudo su”,只要你知道自己的密码,并且你在ID在sudoer列表中就可以了。 
 
   3、 
   在终端中输入grub,会进入到Grub的提示符界面 
   a、 输入命令 “root (hd " 后按Tab键,屏幕上就会列出所有可用选项。 
   比如我的是这样的: 
      Possible disks are: hd0 hd1 
      这表示我装了两块硬盘,如果你只有一块硬盘的话,那么一定是hd0。 
 
   在“root(hd”后输入0,按Tab,会自动补上一个“,”,现在你输入的内容成为这样: 
      root(hd0, 
   再按Tab键,会列出所有可用选项,我的是这样的。 
      Possible partitions are: 
      Partition num: 0, Filesystem type unknown, partition type 0x7 
      Partition num: 1, Filesystem type is fat, partition type 0xc 
      Partition num: 2, Filesystem type is reiserfs, partition type 0x83 
      Partition num: 4, Filesystem type is reiserfs, partition type 0x83 
      Partition num: 5, Filesystem type unknown, partition type 0x82 
      Partition num: 6, Filesystem type unknown, partition type 0x7 
      Partition num: 7, Filesystem type is fat, partition type 0xc 
       
   输入你的选择,比如为“1”,Tab一次后,结果是这样的: 
      root (hd1,1) 
   现在回车 
 
   b、输入命令 
      setup (hd0) 
   将grub安装在mbr中 
 
   c、“quit”命令退出GRUB 
 
 
 
Grub使用 
-------- 
命令行 
   在Grub启动菜单中,您可以选择您要的选项,按下“e”键,进入到命令行模式 
   修改您的启动参数,完成后回车 
   按“b”键,Grub将以您修改后的参数引导系统。 
机子上装了XP和ubuntu两个系统。如果想重装XP,mbr主引导区会被覆盖,重启后直接进入XP登陆界面,原先的grub引导也不会出现了。想恢复grub引导,只要按以下步骤操作即可。
 
按照用 WinGrub 引导Linux安装详述安装设置wingrub。最好安装到c盘下的boot.ini中,以后清除也方便;前辈的话当然要听,但我们只要学到上面的帖子的一点,这个问题也就解决了,那帖子大概是完备教程吧。 
在ubuntu下安装grub。进入ubuntu下,执行sudo rm -rf /boot/grub然后再sudo grub-install /dev/hda注:如果是SATA硬盘就将hda改为sda,这一步将grub安装到mbr主引导区上。安装确实得费些时间,请耐心等待。此时安装的grub也没有menu.lst,需要自己建立并编写menu.lst文件。 
Compose your menu.lst!这是我的menu.lst(千万不敢照搬啊,不然后果......):
default 0 //表示默认启动为第一个title,从0开始计算,想从第二个title启动,则设为1,依此类推!(Other operating system之类的也算)
timeout 10 //grub等待时间
//没有装linux-686的从这里开始删除
title Ubuntu, kernel 2.6.15-26-686
root (hd0,2)
splashimage (hd0,2)/boot/grub/images/ubuntu.xpm.gz//加载grub背景
kernel /boot/vmlinuz-2.6.15-26-686 root=/dev/hda3 ro quiet splash vga=792//SATA硬盘的用户请将hda改为sda,vga=792将以1024*768启动!
initrd /boot/initrd.img-2.6.15-26-686
savedefault
boot
 
title Ubuntu, kernel 2.6.15-26-686 (recovery mode)
root (hd0,2)
kernel /boot/vmlinuz-2.6.15-26-686 root=/dev/hda3 ro single
initrd /boot/initrd.img-2.6.15-26-686
boot
//没有装linux-686的请删除以上两个title!
title Ubuntu, kernel 2.6.15-26-386
root (hd0,2)
kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda3 ro quiet splash vga=792
initrd /boot/initrd.img-2.6.15-26-386
savedefault
boot
 
title Ubuntu, kernel 2.6.15-26-386 (recovery mode)
root (hd0,2)
kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda3 ro single
initrd /boot/initrd.img-2.6.15-26-386
boot
 
title Other operating systems:
root
 
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1 
删除XP下的wingrub启动项。编辑c:\boot.ini,删除倒数两行。并将c:\下的文件GRLDR和文件夹Grub删除。 
How to display Splash Image for GRUB menu on boot-up? 
修改grub启动背景
 
由于wingrub没有linux下的grub好用,不能随linux下的系统更新而相应动作,所以建议使用linux下的grub去引导双系统,甚至多系统,因此大家自由发挥吧!
 
相关阅读 更多 +
排行榜 更多 +
风度

风度

游戏工具 下载
大姨妈月经提醒

大姨妈月经提醒

健康医疗 下载
海岸线小说网

海岸线小说网

浏览阅读 下载