GRUB启动引导程序
1、grub与启动引导程序的关系
启动引导程序是计算机启动过程中运行的第一个真正的软件,通常计算机,启动时在通过BIOS自检后读取并运行硬盘的主引导扇中的启动引导程序,启动引导程序再负责加载启动硬盘分区中的操作系统。
grub以引导的操作系统包括:
Linux,FreeBSD,Solaris,NetBSD,BeOS, OS/2,Windows95/98,WindowsNT,Windows2000,WindowsXP。
grub配置文件(/boot/grub/grub.conf)能在每次系统引导时被读取,所有的改变都能被自动地检测到。
先查询
#rpm –q grub
#grub –version
2、grub安装到MBR
第一步:软件包安装
#rpm –ivh /mnt/cdrom/RedHat/grub-0.93-4.i386.rpm
第二步:安装到MBR
#grub-install /dev/sda
3、grub的主要文件构成
grub有几个重要的文件构成,stage1,stage2,有的时候需要stage1.5.这些文件一般都在/boot/grub文件夹下面。如下:
grub被载入通常包括以下几个步骤:
①BIOS加载stage1(通常位于主引导扇区里面,对于硬盘就是MBR了),把stage1安装到MBR,请见第二节的安装说明。
②stage1的主要功能是装载第二引导程序(stage2);
③stage2读取配置文件,显示一个菜单界面选择或是输入命令,让用户选择操作系统(加载内核文件)来启动,请见第四节的grub操作界面介绍。
由于stage2很大,所以它一般位于文件系统之中(通常是boot所在的根分区)。有时候主引导装载程序(stage1)不能识别stage2所在的文件系统分区,那么这时候就需要stage1.5来连接stage1和stage2了,因此对于不同的文件系统就会有不同的stage1.5(比如你看到的:fat_stage_1.5 、e2fs_stage_1.5 、xfs_stage_1.5等等)。
4、grub操作界面介绍
grub操作界面可以选择GRUB配置文件中预设的启动菜单项,从而实现硬盘中多个操作系统的切换引导。
启动菜单按键:
在启动菜单项间移动
Enter:启动当前的菜单项
e:编辑当前的启动菜单项
a:添加内核的启动参数
c:进入GRUB的命令行模式
该界面上的菜单项,请见下面的配置文件
5、配置文件—grub.conf
默认的配置文件在/boot/grub/grub.conf,在grub成功安装到硬盘主引导扇区后,只要编辑该文件就可实现对grub的配置,无需重写grub到MBR。
grub配置文件中包括全局配置和菜单项配置:
全局的配置命令:
①使用default命令设置GRUB的默认启动项
命令格式:default 菜单项序号
②使用splashimage命令设置GRUB的启动界面
命令格式:splashimage 图象文件全路径名 //用于指定某一个文件作为启动菜单的背景图象
例:splashimage (hd0,0)/boot/grub/splash.xpm.gz
③使用timeout命令设置菜单的启动延时
命令格式:#timeout 延时秒数
linux启动菜单项的配置命令:
①title:定义linux启动菜单项的名称
②root:设置GRUB的根设备(root)为linux内核所在的分区
③kernel:kernel命令后跟linux内核文件作为参数,加载linux内核文件
④initrd:使用initrd命令加载镜像文件
⑤chainloader:使用chainloader命令调用windows分区的启动引导器引导windows系统
本机案例Linux系统的加载配置,如下图:
ro表示read only,,是以只读的方式来加载根目录。
rhgb:red hat图形界面启动,取代以前的文本界面。如果要使用文本界面的形式启动,只要将rhgb删除即可。
quite:在开机过程中不要显示错误的信息。如果要显示错误信息,只要删除quite即可。
initrd:将initrd映像文件加载到内存。这个文件里面存放的都是驱动程序。
6、grub加载Windows系统的配置文件
GRUB不能够直接加载windows系统的内核文件进行引导,而是通过调用windows操作系统自身的启动引导加载程序,通常为windows所在分区的引导扇区。举例windows启动菜单项配置:
title win2kp
map(hd0)(hd1)
map(hd1)(hd0)
root(hd1,0)
makeactive
chainloader+1
相关解释如下:
title:定义windows启动菜单项的名称
map:使用map命令交换磁盘或分区在BIOS中的标志符,用于启动在第二个硬盘中的windows。
root:设置真实的windows分区为GRUB的根设备
Makeactive:设置根设备为活动分区(针对windows不能从非活动分区启动)chainloader:调用windows分区的启动引导程序来加载引导windows系统
7、设备映射关系
grub里面对设备名称的定义和系统中对设备名称的定义方法不一样:
(fd0) /dev/fd0
(hd0) /dev/sda /dev/hda
(hd1) /dev/sdb /dev/hdb
8、grub安全
全局口令用于设置只允许用户选择启动菜单项进行启动,如进行其他操作需输入设置的全局口令。
①Password命令
命令格式:#password 口令字
举例:
加锁grub启动菜单:
#password 12345 //设置全局口令(设置grub的全局口令为12345)
解锁grub启动菜单:
在锁定的启动菜单中选者“p”,在“password:”提示符后输入正确的口令,并按回车键确认,如口令输入正确,启动菜单解锁后恢复正常的状态。
#vim /boot/grub/grub.conf
#wq! //保存退出
#init 6 //重新启动,即可观察效果
9、恢复grub的配置文件
当安装双系统环境时,如果先安装Linux,再安装Windows;或者已经安装好双系统环境后,对Windows进行了重装,那么保存在MBR中的grub就会被Windows系统的引导装载程序NTLDR所覆盖,导致Linux系统无法引导。
放入第一张安装启动盘,启动计算机
boot: linux rescue //进入救援模式
# cd /mnt/sysimage //文件系统挂载到/mnt/sysimage目录
#cd /boot/grub/
# vi grub.conf //修改grub.conf 恢复设置选项
10、删除grub
grub安装在硬盘的MBR中,要想彻底删除grub,必须想办法把MBR中的grub启动程序给删除。
用户可以使用DOS中fdisk /mbr命令进行操作。
11、ro root=LABEL=/,为用“ro”什么呢?
Linux的内核在启动的过程中,不知道将会发生什么故障,可能不是很稳定的。如果以可读可写的方式来加载,那么启动的过程中出现异常或者是断电,那么就有可能把文件系统破坏了,为了避免问题的发生,就采取只读的方式来挂载文件系统。