赞
踩
form http://linux-wiki.cn/wiki/zh-hans/Grub2%E9%85%8D%E7%BD%AE
GRUB,全称the GRand Unified Bootloader,是常用的引导程序,一般负责在开机时装载操作系统内核。GRUB 2是最近流行起来的GRUB新版本。
Grub 2虽在名称上是Grub的升级版,但其代码实际上被完全重写了。[1],对于最终用户来讲,Grub 2带来了若干改进,如:
多数系统已经预装了Grub 2。相比于为系统安装Grub 2软件而言,更常见的任务是将在Grub 2安装到硬盘引导区。(如安装Windows后Grub 2会被Windows清出硬盘MBR。。。)
Grub 2的工具多是grub-开头的一系列命令,而将其安装到硬盘上的命令则是grub-install:
grub-install --root-directory=/ /dev/sda
其中root-directory用于指明存放/boot文件的分区。在用恢复盘启动时,应先挂载装有Grub 2的系统,再相应地执行grub-install指令。
/dev/sda表示安装到sda的MBR。Grub 2亦可安装到分区的引导扇区,但不建议这么做(不小心的话会破坏某些类型的分区,如修复被grub覆盖的ntfs分区引导扇区是挺麻烦的)。
影响Grub 2行为的主要配置存放在/etc/default/grub中,可实现修改启动项、更改分辨率、禁用操作系统探测器等。由于配置文件本身可读性很好,仅介绍几个不大直观的项。完整的参数介绍可以参见[2]或BURG的文档。
默认启动项由/etc/default/grub中的GRUB_DEFAULT设置,其取值有如下几种:
更新配置后,不要忘了运行update-grub命令。
菜单项一般是由操作系统探测器(os-prober)自动生成的,但在某些情况下(如硬盘安装时)也需要手动修改自定义菜单项。
自定义菜单项一般存放在/etc/grub.d/40_custom文件中。
一个简单的菜单项定义如下[2]:
menuentry "System Rescue CD" { set root=(hd0,8) linux /sysrcd/rescuecd subdir=sysrcd setkmap=us initrd /sysrcd/initram.igz }
其中,第一行set root=对应以前Grub的root命令;linux对应以前的kernel命令;initrd命令功能与Grub 1相同。
又如[4]:
menuentry "Windows XP" { set root=(hd0,3) chainloader (hd0,3)+1 }
此处set root=对应老Grub的rootnoverify。
请再次注意,Grub 2中分区号从1开始,但磁盘号仍然是从0开始的。。(详情请见Grub磁盘分区表示方法)
更多的例子,可以参考/boot/grub/grub.cfg中自动生成的代码。
更新配置后,不要忘了运行update-grub命令。
Grub 2支持修改背景、前景颜色或使用图片做背景,但一般来讲配色是一个痛苦的过程……如有美化需求,建议参考文章用BURG美化GRUB。
如果Grub2启动失败,会进入恢复模式,此时,屏幕上会显示 grub rescue> 字样。此时无需紧张,只要Grub2还在硬盘上,就可使用该控制台将其启动[5][4]:
# 在 grub rescue> 环境下输入如下命令, (hdX,Y)为包含Grub2的分区 set prefix=(hdX,Y)/boot/grub insmod (hdX,Y)/boot/grub/normal.mod normal
别忘了把(hdX,Y)换成Grub2所在的分区(具体见Grub磁盘分区表示方法)。执行后应该就能看到启动菜单了。
在系统命令行中使用的命令:
# 重新生成配置文件 grub-mkconfig -o /boot/grub/grub.cfg # 将Grub 2安装到硬盘引导扇区 grub-install --root-directory=/ /dev/sda
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。