Chinaunix首页 | 论坛 | 博客
  • 博客访问: 197388
  • 博文数量: 62
  • 博客积分: 725
  • 博客等级: 上士
  • 技术积分: 746
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-09 17:07
个人简介

exyz

文章分类

全部博文(62)

分类: LINUX

2013-03-18 10:20:45


配置 GRUB 引导加载器


  1. GRUB 是一个强大的引导加载器用来引导 Linux, Windows, DOS,和其它的操作系统如 Xen虚拟系统.掌握了它的配置文件和命令行,你能够配置你想要的GRUB来准确引导系统。
  2. 1. 我要怎么做?
  3. GRUB 是通过配置 /boot/grub/grub.conf; 文件,它的大致内容如下:
  4. # grub.conf generated by anaconda
  5. #
  6. # Note that you do not have to rerun grub after making changes to this file
  7. # NOTICE: You have a /boot partition. This means that
  8. # all kernel and initrd paths are relative to /boot/, eg.
  9. # root (hd0,0)
  10. # kernel /vmlinuz-version ro root=/dev/main/root
  11. # initrd /initrd-version.img
  12. #boot=/dev/hda
  13. default=0
  14. timeout=5
  15. splashimage=(hd0,1)/grub/splash.xpm.gz
  16. hiddenmenu
  17. title Fedora Core (2.6.31-1.3420_fc6)
  18.   root (hd0,1)
  19.   kernel /vmlinuz-2.6.31-1.3420_fc6 ro root=/dev/main/root rhgb quiet
  20.   initrd /initrd-2.6.31-1.3420_fc6.img
  21. title Other
  22.   rootnoverify (hd0,0)
  23.   chainloader +1
  24.             

  25. 这个配置文件包含2部分,由title关键字标识: Fedora Core and Windows (which Anaconda labels Other by default).由括号开始的是注释。在开始的注释后的第一行设置了开始的出现时间:
  26. default= 0
  27. 配置了第一个标题为默认的进入项,它们由()开始,在这里是 Fedora Core.


  28. timeout= 5
  29. 设置了默认进入项会延迟的时间。

  30. splashimage=( hd0,1)/grub/splash.xpm.gz
  31. 为引导显示导入一张背景图。

  32. hiddenmenu
  33. 在暂停时间内不会显示引导菜单除非用户按了一个键,如果按了键的话所以可以选择的操作系统条目会显现出来。

  34. 在 splashimage 行给出的文件名是一个特殊,GRUB-特殊格式:(hd0,1) 指明了是第一个硬盘,第二个分区(/dev/hda2在Linux中是术语),然后 /grub/splash.xpm.gz 指明了在那块硬盘上的路径名。因为/dev/hda1 正常是被挂载在 /boot, 在fedora系统中的全名是 /boot/grub/splash.xpm.gz.
  35.  
  36. GRUB 分区号从0开始,而Linux的确是从1开始。


  37. 文件的剩下内容是两个配置选项。第一个由4行组成:

  38. title Fedora Core (2.6.31-1.3420_fc6 )
  39.   root (hd0,1)
  40.   kernel /vmlinuz-2.6.31-1.3420_fc6 ro root=/dev/main/root rhgb quiet
  41.   initrd /initrd-2.6.31-1.3420_fc6.img
  42.             

  43. 每一行提供了具体的信息:

  44. title Fedora Core (2.6.31-1.3420_fc6)

  45. 菜单上显示了title。在圆括号中显示的数字是内核版本号;它的一般惯例是当内核更新的时候把第二个最近的内核安装上,这样是以防新的内核不会被正确的引导,这些信息能让你鉴别哪一个内核是最新的。

  46. root (hd0,1)
  47. 引导过程的根文件系统,书面上使用GRUB标记。记住,这可能不是Fedora Core安装的目录;当系统运行的时候它通常被挂载在/boot 上。

  48. kernel /vmlinuz-2.6.31-1.3420_fc6 ro root=/dev/main/root rhgb quiet
  49. 这个内核落在根文件系统上,加上了引导选项。这些引导选项指明了Linux的根文件系统是 /dev/main/root (在主组卷上的根逻辑卷)。这个跟文件系统只会以只读(ro)的形式被挂载,同时 Red Hat 图形引导(rhgb)显示会启用,有争议的内核引导信息不会显示(quiet)。
  50. initrd /initrd-2.6.31-1.3420_fc6.img
  51. initrd ramdisk文件的位置. 这个文件含一个压缩的系统镜像,该镜像包含了所有文件除了Fedora系统启动的初始化阶段的文件,包括设备驱动,程序和脚本。
  52. other 标题选项是简单的:
  53. title Other
  54.         rootnoverify (hd0,0)
  55.         chainloader +1
  56.             

  57. 这个选项行调用了Windows 阶段 2的引导加载,可以在Windows分区开始处找到:

  58. rootnoverify (hd0,0)
  59. 和在Fedora Core 进入选项的根选项一样,除了这个分区不会被挂载,隐藏文件不能由GRUB 进入该分区。



  60. chainloader +1
  61. 指定了这个引导过程应该移交给引导加载器在分区中找到的第一区域。
  62.  
  63. 1.定制GRUB菜单
  64. 你可以直接编辑GRUB配置文件来改变引导过程的外观。为了排除引导菜单完全直接的引导默认的进入选项,设置超时值为0:
  65. timeout=0

  66. 这对于拥有一个稳定的内核的单用户,单引导系统来说是有用的。另一方面来说,如果你有一些已经安装了的操作系统,移除hiddenmenu 行和使用一个长的超时是非常方便的:
  67. timeout=20

  68. 关闭超时选项然后不明确等待的用户选择操作系统,可从文件中移除该行。
  69. .2. 使用你自己的splash 图片
  70. 你也能自定义和替换引导图片来包含你公司的logo或者一个个人信息。
  71. 用GIMP图片编辑器来创建一个640x480的图片.用GIMP菜单选项Image Mode Indexed来减少颜色的数量然后选择14颜色。
  72.  
  73. 当转换一张图片为14颜色,如果你选择No Dithering选项可能看起来更好,特别是原图包含大面积的固有的颜色。如果你要创建新的图像,在你开始绘画时选中Indexed mode 。


  74. 将图片保存在 /boot/grub 目录, 使用 .xpm.gz 的后缀.
  75. 另外一个创建图片的方式是将一张已有的数码风景照片或者一个墙纸用ImageMagick进行程序转换:
  76. # convert -resize 640x480 -colors 14 photo.jpg /boot/grub/new_splash.xpm.gz


  77. 最后编辑 splashimage 行指向你的新创意:
  78. splashimage=(hd0,1)/grub/new_splash.xpm.gz




  79. .3. 创建新增的引起选项
  80. 创建额外的引导项就是你想要在选项中新增进入项。
  81. 例如,你可以分别为为Fedora创建 运行级别5(GUI)和运行级别3(文本模式)2个运行级别选项:
  82. title Fedora Core
  83.                      - Graphical Login (2.6.31-1.3420_fc6 )
  84.   root (hd0,1)
  85.   kernel /vmlinuz-2.6.31-1.3420_fc6 ro root=/dev/main/root rhgb quiet
  86.   initrd /initrd-2.6.31-1.3420_fc6 .img
  87. title Fedora Core - Text Login (2.6.31-1.3420_fc6 )
  88.   root (hd0,1)
  89.   kernel /vmlinuz- 2.6.31-1.3420_fc6 ro root=/dev/main/root rhgb quiet 3
  90.   initrd /initrd-2.6.31-1.3420_fc6 .img

  91. 这两个选项是相同的除了title行中的描述和为文本选项的内核行新增的数字3。

  92.  
  93. 安装一个新的RPM内核会增加新的引导选项同时使得它为默认选项。如果你使用yum 执行更新,两个内核版本中较大的一个会立即被安装。(这可以在 /etc/yum/pluginconf.d/installonlyn.conf 中配置),因此较老的内核版本和它们的GRUB选项会由于yum更新被从菜单中移除。



  94. 4. 为Fedora安装GRUB引导记录
  95. Anaconda(Fedora安装管理程式)正常会自动的将GRUB安装在第一块磁盘驱动器上。
  96. 有两种情况需要手动安装GRUB在已有的系统上:

  97. ?    当你使用 RAID 1 /boot 分区,Ananconda 只会在第一块磁盘驱动器上安装Grub引导记录。如果第一块磁盘驱动坏了,拥有 /boot 的镜像备份也没有什么作用。同时你也不能够轻易的将GRUB引导安装到第二块磁盘驱动上来从第二块驱动器上引导系统。
  98. ?    当你的引导记录破坏了或者被其它的程序重写了,例如另外一个系统的安装器,你需要再手动的安装GRUB引导记录。
  99. 最简单的安装GRUB是使用grub-install 脚本:
  100. # grub-install --root-directory=/boot /dev/hda
  101. 安装完成。没有报错。这是 /boot/boot/grub/device.map 设备目录图.
  102. 检查这个是正确还是错误的。如果任何一行是错误的,修改它然后重新运行这个脚本 \Qgrub-install'.

  103. (fd0) /dev/fd0
  104. (hd0) /dev/hda
  105. (hd1) /dev/hdb
  106. (hd2) /dev/hdc
  107. (hd3) /dev/sdb

  108. 这个 --root-directory 选项指定了引导文件的根目录,且/boot 挂载点必须是单独的引导分区。这最后一行的设备参数(/dev/hda) 指定了GRUB会安装在这个磁盘驱动上。
  109.  
  110. grub-install 使用Linux磁盘名称,如 /dev/hdc , 而不是 Grub 磁盘名称如 (hd2).



  111. 5. 从 GRUB DVD 或者软驱安装GRUB引导记录
  112. 有时候GRUB引导记录会受损,要确保它能正常的引导系统。可以用 GRUB DVD 或者软驱修补这种问题。
  113. 在一个Fedora系统上创建 GRUB DVD (显然不是它无法启动), 输入这些命令:
  114. # cd /usr/share/grub/
  115. # growisofs -Z /dev/cdrom -R -b stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table i386-redhat
  116.                

  117.  
  118. 在连续的一行输入整个 growisofs 命令。


  119. 创建一个可引导的软驱而不是 DVD:
  120. # cd /usr/share/grub/i386-redhat
  121. # cat stage1 stage2 >/dev/fd0
  122.                

  123.  
  124. It's worthwhile keeping a GRUB DVD or floppy with your system manuals just in case you ever find that you can't boot your system due to bootloader problems.
  125. 保持一个的GRUB DVD或软盘与您的系统手册是值得的,以防万一你没有发现其中一个,你却不能解决系统引导加载程序的问题。


  126. 用磁盘或者软驱引导你的系统. GRUB 命令行提示会出现 .

  127. 在这个提示, 搜索你的stage1 文件:
  128. grub> find /boot/grub/stage1

  129. Error 15: File not found

  130. grub> find /grub/stage1
  131.  (hd0,0)

  132. 如果你的引导文件在根文件系统中, GRUB 会找到 /boot/grub/stage1, 但是如果你有一个分离的 /boot分区, GRUB 会找到 /grub/stage1.在前面的例子中, (hd0,0) 分区会包含stage1 文件.
  133. 设置该分区为你的root分区:
  134. grub> root (hd0,0)
  135.  文件系统类型是 ext2fs, 分区类型是 0x83

  136. 现在指导GRUB在那块磁盘上设置引导记录:
  137. grub> setup (hd0)
  138.  Checking if "/boot/grub/stage1" exists... no
  139.  Checking if "/grub/stage1" exists... yes
  140.  Checking if "/grub/stage2" exists... yes
  141.  Checking if "/grub/e2fs_stage1_5" exists... yes
  142.  Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded.
  143. succeeded
  144.  Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub
  145. .conf"... succeeded.
  146. 完成

  147.  
  148. 注意设置命令是给磁盘 (hd0) 而不是 分区 (hd0,0) 的,安装引导记录在磁盘的开始而不是引导分区的开始。


  149. 你可以移走GRUB 磁盘/软驱 然后直接从硬盘引导。


阅读(1347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~