天天看点

浅谈grub作用

   谈grub之前,先说下操作系统启动顺序:

开机自检(post)----> bios——>boot loader--->kerenl(initrd)--->init

       grub是一个引导程序,功能强大。然而众所周知,目前的机械硬盘有一个特殊扇区,称之为mbr(master boot record)。一个扇区也就512byte,在512byte中,有64byte是给gpt(guid patition table),boot loader也只能占446byte。因此446byte给grub是不够用。既然此时硬件是没有办法改变,只能改变软件。

      grub程序为成两部分,一部分安装在mbr中,一部分安装硬盘上。一般来说grub的配置文件之类都放在/boot/grub/这个目录。安装的mbr中的为stage1,当stage1有问题时,会无法引导系统。此时用安装光盘进入紧急救援模式,重新安装grub或者从/usr/share/grub/i386-redhat/下就stage1复制到/boot/grub/目录下。重新安装grub-install --root-directory=/(表示根目录) /dev/sda(表示安装在哪个设备上)。

      打开grub配置文件/boot/grub/grub.conf,带#号的表示注释行。下面介绍每个字段的意义:

(1)default=0 表示默认选择是启动第一个操作系统,grub可以引导多个操作系统。

(2)timeout=5 表示等待用户选择的时间,如果在这个5秒没有做出选择,将会启动默认的操作系统。

(3)splashimage=(hd0,0)/grub/splash.xpm.gz  表示启动操作系统之前的背景图片,(hd0,0)/grub/splash.xpm.gz表示背景图片所在位置。在grub中,所有接口的硬盘都被识别成hd的格式,而hd0,表示第一个被识别的硬盘,而后面的0表示第一个被识别的硬盘的第一个分区。grub磁盘和分区的标识都是从0开始。

(4)hiddenmenu表示隐藏下面的title开头的内容。

(5)title表示选择时操作系统的所显示的标题,在title上面的内容属于全局设置,对整体都有效,而title下面只对当前title的设置生效。

(6)root (hd0,0)表示kernel所在的分区

(7)kernel /vmlinuz-2.6.18-308.el5表示启动这个核心,且以只读的方式挂载根目录root=/dev/sda2表示根目录,

rhgb表示redhat graphics boot,就是会看到图片来代替启动过程中显示的文本信息

quiet表示在启动过程中只有重要信息显示

(8)initrd /initrd-2.6.18-308.el5.img表示当系统不是安装在IDE这种硬盘时,这是时要驱动硬盘需要initrd....这里面的驱动程序帮忙。

grub故障这解决

(1)grub.conf里内核设定错误,引导到kernel时停止。

<a href="http://blog.51cto.com/attachment/201206/101215844.jpg" target="_blank"></a>

此时按任意键,进入grub编辑模式,按照下面的提示,继续按e,编辑kernel,kernel的版本号要跟initrd的版本号一样,将2.6.018这个0删除。确定,按b。

如果kernel和initrd都错误,又不知道正确的版本号,则用安装光盘进入救援模式,或者用u盘启动。在/boot/查看正确的内核版本号,修改grub.conf,重启系统。

当然如果grub.conf设置没问题且root(hd0,0)也没问题,但是还是提示找到不文件,则/boot的kernel与initrd存在问题,此时还是进入救援模式,重装kernel,rpm -ivh --replacepkgs kernel....rpm

(2)grub.conf被删除,也是没办法进入系统

<a href="http://blog.51cto.com/attachment/201206/105239923.jpg" target="_blank"></a>

此时自己指定内核所在的位置,如果忘记内核在哪个分区,则使用下面的查看kernel所在的分区

help(查看grub帮助)

cat (查看(hd0,1)/etc/fstab支持table键自动补齐)

find (hd0,0)/vmlinuz..

root(hd0,0)

kernel /vimlinz....

initrd /initrd...

boot

(3)进入单用户模式修改root密码,重启出现booting redhat enterprise linux server时可以按下任意键(enter键除外),进入grub编辑模式,选中kernel一行,在下面都有英文提示,继续按e,后面加个1或者s,S,single,都可以进入单用户模式。然后执行passwd,完后init 3进入哪个级别

(4)为了防止别人进入单用户模式,这时在title之前的字段加密码,先进入系统,grub--&gt;md5crypt 得到一串md5码,在title上面在增加一行,password --md5 md5密码串,保存ok。如果想进入单用户模式,要先输密.

本文转自 deng304749970 51CTO博客,原文链接:http://blog.51cto.com/damondeng/901991,如需转载请自行联系原作者

继续阅读