聊聊对grub的理解吧。

想对grub理解大概的linux启动过程是要清楚的。

grub是引导管理程序,安装好Linux之后,用户reboot计算机过经BIOS自检和初始化时,BIOS将读取主引导记录(MBR)到内存中去。而MBR是一个512字节的扇区,在磁盘第一个扇区中,即0磁道0柱面1扇区。MBR的前446个字节中保存的程序就是引导管理程序,它负责选择启动分区并加载存储在其他位置的操作系统。当MBR被加载到内存之后,BIOS就会将控制权交给MBR。

grub拥有交互式命令窗口,可以在启动的时间动态地加载各种需要的参数或选项,grub能在系统引导时访问它的配置文件/boot/grub/grub.conf,另外还可以支持从网络引导。

而grub一个非常重要的功能就是加载内核映像,当内核映像被加载到内存之后,启动阶段就开始了,接着系统将通过执行一系列的启动脚本来到登录界面。如果输入了正确的用户名和密码,则系统控制权将被交给shell,至此启动过程结束了。

1、grub配置文件详细说明

  /boot目录存放grub引导管理程序的配置文件/boot/grub/grub.conf和内核映像。

wKiom1LKY7_zdH0RAAAbeyaMwfY739.jpg

 

下面是grub.conf的内容:

wKioL1LKZCqgBNbGAACnd8gY4sc831.jpg

上图注释的内容含义是:对这个文件更改后不需要重启。注意本系统有一个/boot分区,这就意味着所有的内核映像及相关文件的路径都是针对/boot而言的,即如/vmlinuz-version的“/”实际是指/boot/。同时也说明,如果没有单独的/boot分区,则内核映像及相关文件的路径都必须写成以/boot/开头。

#boot=/dev/sda                  --表示启动磁盘为第一块SCSI接口磁盘

default=0                            --表示默认启动项为第一个title对应的操作系统,这里是0表示第一个title

timout=5                          --表示进入grub启动界面后,将会有5秒让用户选择哪个title所对应的操作系统来启动。

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz  --指定了grub启动界面背景图片

hiddenmenu  --在grub启动画面只显示倒计时而不显示备选菜单。

title Red Hat Enterprise Linux Server (2.6.18-194.el5)    --指定grub菜单列表中出现的title

password=111   --这是我自己加上去的,在title之外指定password的话,这个密码是为菜单编辑时服务的,而在title内的话是为是否有权启动相应操作系统服务

root (hd0,0)   --表示/boot分区的位置。

kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet   --指定当引导操作系统时要加载的内核文件,使用的是绝对路径。ro表示为只读方式加载内核文件,当Linux内核在启动,如果以可写方式加载,那么启动时如果出现异常或断电,则可能造成破坏,所以一般采取以只读方式加载内核。root=/dev/VolGroup00/LogVol00  表示root分区路径。选项rhgb以图形界面启动,以文本界面启动可以删除即可。quiet表示在启动过程中不显示错误信息。

initrd /initrd-2.6.18-194.el5.img    --表示在引导时指定初始化内存盘所使用的映像文件的绝对路径。当根分区为ext3时,必须加载此项。

 

2、开始模拟grub文件损坏实验

先备份一下grub.conf

cp grub.conf grub.conf.bak

wKiom1LKbR_zUAJSAAAx1oKUxsA093.jpg

wKiom1LKbZXzyqBpAAAzCCQASAY252.jpg

重启后进不了操作系统了,只能到grub模式下:

wKioL1LKbefDmaTOAABEx6P-wYE339.jpg

注意,上面是模拟单单是grub.conf这个配置文件损坏的情况。如果连grub引导管理程序也损坏的话,是进入不到上图的命令界面的,那么只能使用系统光盘启动后进入linux 救援模式即,重新安装grub

即grub-install /dev/sda,重启后就可以进入上图的grub命令交互界面了。

继续上面的开始修复系统,因为grub.conf文件已经损坏,所以找不到内核文件和映像文件的,要重新指定一下,这个指定是在内存里面的,不会写到grub.conf文件。

wKioL1LKcCHQB5fNAADea9kbnpY046.jpg

 

注意:root(hd0,0)这个分区位置只能自己去尝试下。内核版本即,vmlinuz-version,这个version可以用TAB键补全。

boot命令后回车,加载完后自动重启就可以正常进入系统界面了。

修复还没结束呢,现在还要把grub.conf还原回来,有备份就简单多了。但没备份的话,那只能自己去vi grub.conf一个文件,格式不记得怎么写可以参照下别的linux操作系统。

 

总结:不备份也可以恢复,但这会影响你的当机时间啊。所以别要给自己惹事,把工作做好来,该有备份的还是要备份的。