当前位置:首页文章首页 IT学院 IT技术

高配置grub的方法与其说明

作者:  来源:  发布时间:2011-5-18 18:17:27  点击:

  grub的说明与配置方法menu.lst grub.conf

  menu.lst位于/boot/grub/menu.lst,munu.lst相当于是/boot/grub/grub.conf在windows下 的快捷方式

  (重装系统有时破坏GRUB后,menu.lst丢失而无法启动GRUB菜单时就需要在/boot/grub下建立menu.lst后再和 grub.conf建立链接来修复,建立链接是:ln -s menu.lst grub.conf (注意两文件的前后关系)),我们来学习如何编写GRUB的配置文件menu.lst.

  首先来看一下/boot/grub/menu.lst中的内容:

  ==========================================================

  # grub.conf generated by anaconda

  #

  # Note that you do not have to rerun grub after making changes to this file

  # NOTICE: You do not have a /boot partition. This means that

  # all kernel and initrd paths are relative to /, eg.

  # root (hd0,0)

  # kernel /boot/vmlinuz-version ro root=/dev/hda1

  # initrd /boot/initrd-version.img

  #boot=/dev/hda

  default=0

  timeout=5

  splashimage=(hd0,0)/boot/grub/splash.xpm.gz

  hiddenmenu

  title Fedora Core (2.6.18-1.2798.fc6)

   root (hd0,0)

   kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet selinux=0

   initrd /boot/initrd-2.6.18-1.2798.fc6.img

  title Windows XP

  rootnoverify (hd0,3)

  chainloader +1

  ===========================================================

  其中:

  1,default=0

  表示默认启动的第0号的操作系统,在GRUB中,title定义了启动的操作系统,从第1个开始,GRUB中是0,而第2个是1,依次类推...

  2,timeout=5

  表示的是出现GRUB界面后,无操作情况下进入default设定的操作系统的时间,如果上下移动选择,则该选项无效

  3,splashimage=(hd0,6)/boot/grub/splah.xpm.gz

  表示的是允许出现的GRUB背景的path,显然(hd0,6)指定了分区(不知能否这么解释,呵呵),而后边的则是正常的path(在例子中,用#把它注释,为一可选项)

  4,hiddenmenu

  表示隐藏GRUB的启动菜单,直接进入由default庙宇的操作系统中去,为一可选项.

  linux类

  其格式一般为:

  title (......)

  root (hd[0-n],x)

  kernel (......)

  initrd (......)

  其中:

  title行,是定义一个启动操作系统,而后边可以自己随便写上喜欢的名字,呵,当然最起码你得写得要自己能认出来,没必要把linux写成windows吧?!

  root行,指定相应的linux所有的/boot,如果在写分区和挂载时没有单独挂载,那么就和/在同一个分区中,hd[0-n]表示的是第几个硬盘,而x则表示的是[第几个分区-1],即x比分区号小1,特别要注意.

  kernel行,在这里以kernel 起始,指定Linux的内核的文件所处的绝对路径(通过在终端输入命令:ls /boot/vmlinuz*来看内核的全名);因为内核是处在/boot目录中的,而如果/boot是独立的一个分区,则需要把boot省略,因为 /boot所在的分区在root (hd[0-n],x)中指定了,所以就无需要再指明内核处在哪个分区了;ro 表示只读;root=LABEL=/ 来表示Linux的根所处的分区。LABEL=/ 这是硬盘分区格式化为相应文件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了。比如我的是在/dev/hda3, 那这里就可以写成root=/dev/hda3;

  initrd行,如果是/boot独立一个分区,initrd 一行要把/boot中省略;如果/boot不是处于一个分区,而是和Linux的/分区处于同一分区,不应该省略;我们通过查看/boot中的 initrd的文件名到底是什么来写这一行代码,在终端输入:ls /boot/initrd*

  很容易能得到initrd文件名,然后写入.

  在了解了以上情况之后,我们就很容易地理解另一种写法了:

  title (......)

  kernel (hd[0-n],y)(/boot)...... ro root=......

  initrd (hd[0-n],y)(/boot)......

  其实只是省略的root很实在地写在了kernel和initrd行中去了而已

  附:

  其 实在GRUB启动菜单不能工作的时候,进入GRUB命令行(可按CTRL+C键)后,我们同样可以一步一步地把系统启动起来,其实在menu.lst中, 除title不是指令外,其余的都是GRUB指令,我们只要一步步地输入它们(错了要从新开始),中间输入关于kernel和 initrd要利用

  TAB键补齐写好,最后只要boot一下就行了.

  用GRUB指令引导windows:

  GRUB> rootnoverify (hd0,0)

  GRUB> chainloader +1

  GRUB> boot

  对于GRUB来说,如果没有配置menu.lst,无论是Linux版本的GRUB,还是WINGRUB,都会有命令行可用,通过命令行是一样能把操作系统引导起来的;有些弟兄总以为menu.lst 配置错了, 或者在机器启动后出现grub>命令行模式就要重新安装系统,其实根本没有这个必要;只要学会GRUB的命令行的用法,根本没有必要重装系统;

  menu.lst 位于/boot/grub目录中,也就是/boot/grub/menu.lst 文件;您可以用vi或您喜欢的编辑器来编辑他;如果您不会用vi,还是去学习一下吧;简单的用法怎么也得会,对不对?毕竟这个文档不是讲vi的用法的;

  有的弟兄会说,我没有menu.lst怎么办?那就创建一个;用下面的命令;

  然后我们再做一个/boot/grub/menu.lst 的链接 /boot/grub/grub.conf

  [root@localhost ~]# ln -s menu.lst grub.conf

  现在我们来写GRUB的menu.lst了,因为/boot/grub/grub.conf是 /boot/grub/menu.lst的链接文件,改哪个都行。链接文件相当于Windows的快捷方式,这样可能能更好的理解;

  1、menu.lst的写法之一;

  首先我们看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的内容;

   root (hd0,6)

   kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/

   initrd /boot/initrd-2.6.11-1.1369_FC4.img

  title WinXp

   rootnoverify (hd0,0)

   chainloader +1

  注解:隐藏GRUB的启动菜单,这项也是可选的,也可以用#号注掉;

  一般的情况下对Linux操作系统的启动,一般要包括四行;title 行;root行;kernel 行;initrd 行;

  1)在menu.lst中 ,通过 root (hd[0-n],y)来指定/boot 所在的分区;

  title XXXXX 注:title 后面加一个空格,title 是小写的,后面可以自己定义;比如FC4,自己定义一个名字就行;

  root (hd[0-n],y) ,在本例中,我们看到的是root (hd0,6) ,root (hd[0-n],y)表示的是/boot所在的分区;有时我们安装Linux的时候,大多是不设置/boot的,这时/boot和/所在的同一个分区; 这个root (hd[0-n],y)很重要,因为/boot目录中虽然有grub目录,最为重要的是还有kernel 和initrd文件,这是Linux能启动起来最为重要东西;

  有的弟兄会问,root (hd[0-n],y)是怎么来的?

  请参考:《在Linux系统中存储设备的两种表示方法》

  2)在menu.lst中,kernel 命令行的写法;

  kernel 一行,是通指定内核及Linux的/分区所在位置;

  比如例子中是;

  在这里以kernel 起始,指定Linux的内核的文件所处的绝对路径;因为内核是处在/boot目录中的, 如果/boot是独立的一个分区,则需要把boot省略;如果/boot不是独立的分区,这行要写成:

  因为/boot所处的分区已经在title 下一行root (hd[0-n],y)中指定了,所以就无需要再指明内核处在哪个分区了;另外Linux系统的硬盘分区的挂载配置文件在/etc/fstab ,原理是通过 mount /dev/hd[a-z]X /boot 来进行的;您可以对照着来理解;

  ro 表示只读; root=LABEL=/ 来表示Linux的根所处的分区。LABEL=/ 这是硬盘分区格式化为相应文件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了。比如我的是在/dev/hda7 , 那这里就可以写成root=/dev/hda7;

文章评论

软件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z