谈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时停止。
此时按任意键,进入grub编辑模式,按照下面的提示,继续按e,编辑kernel,kernel的版本号要跟initrd的版本号一样,将2.6.018这个0删除。确定,按b。
如initrd设定错误,则引导到initrd时而停止。此时跟上面一样,编辑initrd
如果kernel和initrd都错误,又不知道正确的版本号,则用安装光盘进入救援模式,或者用u盘启动。在/boot/查看正确的内核版本号,修改grub.conf,重启系统。
当然如果grub.conf设置没问题且root(hd0,0)也没问题,但是还是提示找到不文件,则/boot的kernel与initrd存在问题,此时还是进入救援模式,重装kernel,rpm -ivh --replacepkgs kernel....rpm
(2)grub.conf被删除,也是没办法进入系统
此时自己指定内核所在的位置,如果忘记内核在哪个分区,则使用下面的查看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-->md5crypt 得到一串md5码,在title上面在增加一行,password --md5 md5密码串,保存ok。如果想进入单用户模式,要先输密.