Linux开机流程分析[7]

[入库:2005年9月19日] [更新:2007年3月24日]

本文简介:

  Grub 的设定档也很简单,就是 /boot/grub/menu.lst 这个档案,请注意,那个 lst 是 L 的小写呢!如果有兴趣的话,可以使用 info grub 好好的去看一下他的所有功能,底下仅列出一些我们常用的功能与设定而已喔!
   
  o 关于硬盘的代号:
  在 grub 里面,有一点是比较让人觉得不适应的,那就是他的硬盘代号与 lilo 还有 Linux 传统的代号不一样~他的代号主要有点像这样:
   
  (hd0,0)
  
  hd 指的是 IDE 的硬盘,而里面的 0,0 代表什么呢?第一个 0 代表他是第一个 IDE 的 master ,而第二个 0 代表他是第一块 partition 的代号,所以呢,这个代号就是 hda1 啦!所以,我们可以得到底下这个对应表:
   
  装置 Lilo Grub
  IDE1 master hda, hda1, hda2 (hd0), (hd0,0), (hd0,1)
  IDE1 slave hdb, hdb1, hdb2 (hd1), (hd1,0), (hd1,1)
  IDE2 master hdc, hdc1, hdc2 (hd2), (hd2,0), (hd2,1)
  IDE2 slave hdd, hdd1, hdd2 (hd3), (hd3,0), (hd3,1)
  这里需要先记忆一下啰!
  ·
  好了,那么将我的 menu.lst 列出来一下吧先!
   
  [root @test root]# vi /boot/grub/menu.lst timeout 10    <==多久之后键盘没有动静,就直接以 default 的设定开机,这里是秒数! Color black/cyan yellow/cyan   <==设定颜色的参数 i18n (hd0,0)/boot/grub/messages <==设定 i18n 多国语系的讯息提示 keytable (hd0,0)/boot/us.klt  <==设定键盘形式,通常使用美规的键盘即可! Default 0            <==预设的开机选项,依照底下的排序,第一个为 0 ! title linux           <==这是第一个开机设定档,亦即排序为 0 号!   kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 devfs=mount   initrd (hd0,0)/boot/initrd.img                 <==上面两个则是开机设定档的基本内容,分别是核心档案所在地与 Ramdisk 的设定内容! title failsafe          <==这是第二个开机设定档,亦即排序为 1 号!   kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 devfs=nomount failsafe   initrd (hd0,0)/boot/initrd.img title windows   chainloader (hd1,0) +1
  ·  
  o default 与 title 的计算方式:
  基本的说明已经在上表当中了,这里需要在说明的是关于 default 开机档的计算。如果今天我有四个开机设定档,那么 default 算的是什么呢?就是『排序』啦!假如我底下依序出现的设定档 title 分别是 linux, linux-test, windows, failsafe 的话,那么开机的时候, grub 的选单就会显示:
    linux
    linux-test
    windows
    failsafe
  其中,linux 就是 0 ,而 failsafe 就是 3 ,如果您要调整开机时后的选单顺序,就在 /boot/grub/menu.lst 修改一下他们的顺序即可!但是记得 default 要跟着变,因为他也是依据排序而变的呦!这点请不要忘记了?
  o title 内容的设定方式:
  基本上,如果是一般的硬盘环境中,我们仅需要两行就可以设定好 title 的内容了,分别是:
   
  root  [开机根目录 / 所在的磁盘代号] kernel [开机档案的所在地完整档名] [root=/dev/硬盘代号] 范例: root  (hd0,0) kernel /boot/vmlinuz-2.4.19-16mdk root=/dev/hda1 设定上面就是这样而已!所以,开机完毕之后,请将您的 kernel 文件名称(完整檔名)与开机的根目录所在的磁盘代号记忆一下,那么下次就可以手动设定开机设定项目呢!但如果是 windows 方面的设定时,那就直接使用 chainloader 这个项目即可,有点像这样: chainloader [硬盘代号] +1 范例: chainloader (hd1,0) +1
  
  ·安装 grub 在系统
  要安装 grub 跟 /boot/grub/menu.lst 并没有相关性!因为刚刚我们就提过了, grub 为动态去搜寻设定文件的,所以写入 MBR 或 super block 时,并没有将 menu.lst 写入ㄋㄟ?好了,那我们就来安装看看吧!安装的方式主要也是分为安装在 MBR 与 super block 呢!底下我们就来谈谈这两种安装的方式:基本上的动作就是:
   
  1.使用 root [磁盘代号] 选择开机根目录 / 所在磁盘代号;
  2.使用 setup [磁盘代号] 选择 MBR 或 Super block 直接安装进去!
  3.使用 quit 就可以离开 grub 了!
    
  [root @test root]# grub # 先安装在 Super Block 底下试看看: grub> root (hd0,0)   <==这里输入我要的 root 硬盘扇区! Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0,0)   <==实际安装上来!使用 setup 指令! Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal) Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal) Running "install /boot/grub/stage1 (hd0,0) /boot/grub/stage2 p /boot/grub/menu .lst "... succeeded Done. # 再安装在 MBR 试看看: grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done. grub> quit       <==离开 grub 啰!
   
  这样就安装进去啰!很方便吧!并不难吧!
  
  ·开机手动设定选项
  事实上,每次动手修改完 /boot/grub/menu.lst 就已经完成了 grub 的设定啰!因为他相当的聪明!但是,如果我设定错误怎么办?没关系!有很多的方法可以使用呢!如果您可以顺利的以硬盘进入 grub 画面,那么恭喜您,可以继续下面的行动了!但是如果您的 Linux 竟然无法顺利的开机了,也就是说,使用硬盘开不了机!那么也没有关系,别担心,就直接给他使用 CD 开机,然后在进入 grub 画面之后,再继续下面的动作!
   
  o在 grub 画面下进行手动加入的动作:
  在 grub 画面中,通常画面的最下方都会显示一些基本的讯息,例如下方的 Mandrake 预设文字接口 grub 登入图标:
  
  在这个画面中,您可以输入 e 或 c 来选择『编辑』或『进入指令列模式』,无论如何,这两个选项将使您进入指令列模式当中啦!所以您就可以看到一个大大的 grub> 提示字符,然后就可以修改或者是自订一些项目啦!而这些修改或者设定的项目,并不会主动的去覆盖您的 /boot/grub/menu.lst ,而是这次登入所做的修改而已呢!通常我都是选择 e 进入编辑的画面,然后选择 kernel 与 root 那两项内容进行编辑即可!例如我们上面提过的,我的 root 与 kernel 已经知道了正确的讯息,所以我就可以按下 c 来输入底下的字样:
   
  grub> root (hd0,0)
  grub> kernel /boot/vmlinuz-2.4.19-16mdk root=/dev/hda1
  
  这样就可以进入我们的主机了呢!很厉害吧!
  
  

本文关键:Linux开机流程分析
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top