系统启动管理器与GRUB(4)

http://www.itjxue.com  2015-08-03 23:38  来源:未知  点击次数: 

  四、 配置grub
  grub启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件,如果找不到此文件则不进入菜单模式而直接进入命令行模式。
  现在,我们来看一下如何在启动后进入各种操作系统,如何建立menu.conf文件。我们就从GRUB支持的启动过程开始。可以有两种方法来完成启动过程:
  ·A.通过调用内核本地启动
  ·B.连续启动或者将控制转给另一个引导器
  A模式启动过程
  1.配置跟设备或者告诉GRUB你的根文件系统。
  2.告诉GRUB你的内核影像的位置,然后将参数传送给内核。
  3.重新启动,试一下。
  为了启动Linux,将内核以bzImage的文件名放在/boot/目录中,跟文件系统是
  /dev/hda1,或者GRUB中的(hd0,0)。启动过程如下:
  1.root (hd0,0) [This sets the root partition]
  2.kernel /boot/bzImage root=/dev/hda1 [This sets the kernel]
  B模式启动过程(这种模式假设当前的分区中安装了另一个启动管理器,例如LILO
  或者NTLDR):
  1.设置根分区但不要安装它
  2.激活这个分区
  3.配置需要启动的分区的第一个扇区
  4.重新启动,看一下效果。
  我们在试试启动安装在/dev/hdc1或者(hd1,0)的widows。启动windows的过程如下:
  1.rootnoverify (hd1,0)
  2.makeactive
  3.chainloader +1 [+1 sets the first sector of the current root
  partition]
  4.boot [transfers the control and quits GRUB]
  menu.conf文件:它用于建立启动多操作系统时的菜单。建立menu.conf并不难。它使用简单的英语,就象你在这一节看到的那样。
  所有的菜单项目都以没有逗号分隔的“title TITLENAME”开头。你可以随意设置
  TITLENAME。
  设置Linux启动菜单步骤如下:
  1.设置标题
  2.设置根分区
  3.设置内核的相应参数
  4.启动
  一个菜单例子:
  title Red Hat Linux (2.4.18-14)
  root (hd0,0)
  kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
  initrd /boot/initrd-2.4.18-14.img
  前面有#的行是一个注释。
  建立启动Windows 或者 DOS的菜单:
  title Windoze
  rootnoverify (hd0,0)
  makeactive
  chainloader +1
  boot
  #----
  又或者:
  title Microsoft Windows XP
  map (hd0) (hd1)
  map (hd1) (hd0)
  root (hd1,0)
  chainloader (hd1,0)+1
  makeactive
  boot
  ----
  注意:root和rootnoverify都是一样的,把rootnoverify改成root也行。不过经过实践来看。有时引导win时,系统安装好后,是rootnoverify (hdX.Y)这样形式的,这样会出现windows起不来,出现什么windows什么文件损坏的情况。这时,我们就要把在grub中,引导 windows的那段中的rootnoverify改为root
  root英文的意思就是根的意思,在这里是让linux知道自己所处的位置,也就是我们所安装linux的/根分区所在的位置 。
  ----
  如果你安装了两个版本的Windows—一个是你自己用的,另一个给你的家人用的—这样第二个就无法安装,因为有提示说Windows已经安装了。
  有一种简单的方法可以安装两个版本的Windows,即在启动时隐藏一个分区而使用另一个。你甚至可以为你的分区设置密码保护,这样可以避免别人错误的加载你的分区。下面介绍如何完成两个Windows的安装,hda1和hda2 或者 (hd0,0) 和(hd0,1),用到的命令有lock, password, hide 和 unhide。
  建立windows 项目"My Entry":
  title My Entry
  lock
  unhide (hd0,0)
  hide (hd0,1)
  rootnoverify (hd0,0)
  makeactive
  chainloader +1
  boot
  #----
  为了更好的使用lock命令,你需要在配置文件开头使用password命令。Password命令的语法如下:password secret(“secret”就是密码)。任何时候你都可以通过按p键儿输入密码。
  建立Windows 项目"Family Entry"
  title Family Entry
  unhide (hd0,1)
  hide (hd0,0)
  rootnoverify (hd0,1)
  makeactive
  chainloader +1
  boot
  任何人都可以启动这个项目,而无须输入密码。
  这有一个使用password命令的有趣的窍门。为了在缺省菜单列表或配置文件中隐藏某些项目,你可以使用下面的命令加载一个定制的列表:
  password secret
  在这个命令中,“secret”是密码,而/boot/grub/secret-list.conf是密码文件。这样做之前,你要先进入到根目录或者给出全路径名。例如:
  password secret (hd0,4)/boot/grub/secret-list.conf
  还有一个更重要的命令是“map”。当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如Windows,就可以使用map命令。例如,你能够将 hd0映射为hd1,将hd1映射为hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统 。命令形式如下:
  grub> map (hd0) (hd1)
  grub> map (hd1) (hd0)
  启动FreeBSD:
  title FreeBSD 4.0
  root (hd0,4,a)
  kernel /boot/loader
  boot
  #----
  这里我们调用了FreeBSD的启动管理器。Root (hd0,4,a)由四个参数,是因为
  FreeBSD对一个单独分区进行了虚拟分割。我们称根分区为“a”。如果FreeBSD占
  据了整个第二块硬盘,这里就应该是root (hd0,a)。这样,就不是调用内核而是调用FreeBSD的启动管理器,它要比调用内核更易使用。
  (注意:推荐在使用OpenBSD和GNU/Hurd之前,要先试一下链式加载。)
  现在你已经完成了基本的GRUB编译、安装和配置。你对GRUB了解的越多,就越会发现GRUB是一种控制启动的易用和高效的方法。
  各种GRUB命令:
  default xx
  表明xx是缺省的启动项目
  timeout yy
  表明在yy秒后缺省启动项目将启动
  fallback zz
  在第一个启动项目失败后,过了timeout时间后,就将启动zz项目。
  color
  这个命令将生成彩色菜单。它的语法是:color normal current_selection。这两个域都可以有两个值,形如foreground/background。例如:
  color green/black or light-gray/blue
  你也可以使用相关的数字。
  记住:所有的值都是从0开始,所以0是第一个

(责任编辑:IT教学网)

更多

推荐linux文章