GRBU,GRand Unified Bootloader , 是一个通用启动引导程序支持windows/Linux/UNIX.
工作过程:
stage 1 ,存放在硬盘的MBR中,因MBR的大小限制(446Byte),提供的功能有限,所以GRUB对其进行了扩展,此阶段用于加载stage2的程序.
stage 2 ,存放在硬盘中的/boot/grub/ 目录.
stage 1.5 ,stage1要加载 stage2 ,就需要识别硬盘,要有硬盘驱动,所以stage1.5的作用就是提供所需要的驱动程序,并紧接MBR之后.
设备识别问题:
GRUB程序需要知道kernel ramdisk文件的位置,才能正常引导,而grub安装在/boot中,/boot目录可以单独分区,也可以不单独分区作为”根”的一个目录,不同的分区方式,Grub访问kernelr与ramdisk的方式入口不同.
/boot目录单独,那么对于GRUB程序而言, /boot目录就是GRUB的根,访问kernel与ramdisk文件的路径为: /linuz.img /ramdisk
/boot目录不单独分区,作为”根”的一个目录,那么GRUB程序访问 kernel ramdisk的文件路径为: /boot/linuz.img /boot/ramdisk
Grub命令接口
grub 程序提供命令接口,可供用户根据需要选择启动的kernel.
root (hd#,#) //指定GRUB的根设备,boot目录存放的设备,(hd0,0)表示为第一个硬盘设备,第一个分区 (GRUB Legacy 编号从0开始, GRUB2从1开始)
kernel //指定Kernel文件的位置与Kernel参数,常见的Kernel参数,init=/~ ,selinux=0
initrd //指定ramdisk文件的位置
boot //根据设定参数值,尝试启动系统
find (hd#,#) file_name //表示在指定设备上查找文件
GRUB的配置文件解析:
[root@EL6 linux]# grep -Ev "^#" /boot/grub/grub.conf default=0 #默认的启动项 timeout=5 #隐藏菜单,5秒没操作启动默认项 splashimage=(hd0,0)/grub/splash.xpm.gz #Grub的背景菜单 hiddenmenu #隐藏操作菜单 password [--md5] string #编辑GRUB菜单密码
title CentOS (3.2.101-Hurn_TestingKernel) #标题 root (hd0,0) kernel /vmlinuz-3.2.101-Hurn_TestingKernel ro root=UUID=e6794649-888e-40cf-885c-59771a3e4008 initrd /initramfs-3.2.101-Hurn_TestingKernel.img password [--md5] string #加载内核的密码
title CentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=e6794649-888e-40cf-885c-59771a3e4008 initrd /initramfs-2.6.32-431.el6.x86_64.img |
(注:password密码,明文直接指定即可,密文使用md5加密,grub-md5-crypt 命令即可)
GRUB安装
如果GRUB程序被破坏,则需要重新安装GRUB
1) grub-install --root-directory=[grub安装的位置] /dev/device [GRUB安装的设备位置]
2) 在系统中进入grub交互式界面: 输入grub命令,回车
root (hd#,#)
setup (hd#,#)
如果安装双操作系统,先装Linux后装WINDOWS,GRUB就会被windows破坏,此时用光盘应到启动安装GRUB即可.
如果GRUB被破坏,系统又重启了,这时就需要加载光盘进入紧急救援模式了.
方式为: 光盘启动->选择 “rescue” ->输入”linux rescue”命令
原文:http://blog.51cto.com/jying/2103411