GRUB引导故障的一些解决方案

刚开始装了双系统,删除linux后,启动系统直接进入了GRUB界面但没有启动选单(只剩下一个“grub>”提示符),折腾了好久才搞定,后来有些同事出现同样的问题,问我。

所以整理了一下解决方案:

Linux系统在启动过程中,首先是固件(PC上大多是CMOS/BIOS)的物理检测,诸如检测系统的显卡、CPU和硬盘等,可从系统按下电源后看到此检测信息;检测无问题,将读取硬盘的MBR(主引导记录)中的自举程序,Linux中常用的自举程序如LILO和GRUB。自举程序GRUB在系统启动期间只有一个作用,就是载入内核;内核在引导期间有两个主要的作用,一个是驱动系统硬件,另一个将启动系统进程init;init进程将读取其配置文件/etc/inittab完成后续所有的引导。所以其实GRUB在引导期间只有一个最重要的作用,就是载入系统内核。那么GRUB在引导期间到底是如何执行引导的呢?让我们来看以下的GRUB配置文件/boot/grub/grub.conf(一定要注意/etc/grub.conf只是此文件的一个软链接)片断示例: title Thiz Linux Server 7.0 root (hd0,5) kernel /boot/vmlinuz-2.4.22-3Thiz ro root=LABEL=/ initrd /boot/initrd-2.4.22-3Thiz.img 此段是加载GRUB的最重要的设置段,其中“title”段指定了GRUB引导界面系统的标题;“root”段指定了/boot分区所在的位置;“kernel”段指定了内核所在位置(kernel /boot/vmlinuz-2.4.22-3),内核加载时权限属性为只读(“ro”),以及指定根分区所在位置(root=LABEL=/);initrd指定了Linux镜像文件所在位置。当Linux系统中GRUB配置文件/boot/grub/grub.conf内容修改错误或损坏时,系统启动后会自动进入GRUB命令行模式(“grub>”),最常见的原因无外乎两个,一是GRUB配置文件中此三段修改错误;二是GRUB配置文件丢失。(还有少数原因,如内核文件或镜像文件损坏、丢失,/boot目录误删除等)此时可以使用如下几种方法进行恢复。

1. 存在GRUB配置文件备份

 a.  把安装盘的第一张放到光驱,然后重新启动机器,在BOIS中设定系统用光驱引导;  b. 等安装界面出来后,按F4键(不同Linux版本此快捷键可能稍有不同,如即时Linux是按F5键盘),进入“boot:”命令提示行输入命令“linux rescue”,进入Linux维护模式;  c. 一系列键盘以及几项简单的配制(如设置键盘等),这里不多做介绍,然后会出现如下字符:桌面应用 sh# 此时就可以在此命令行下执行操作了: sh#cp /backup/grub.conf.bak /mnt/sysimage/boot/grub/grub.conf 假设备份文件为/backup/grub.conf.bak ,因绝大多数Linux光盘修复模式中会将硬盘系统的“/”分区chroot到“/mnt/sysimage”处(在之前的配制中可以看到提示),所以拷贝的目标为“/mnt/sysimage/boot/grub/grub.conf”而非“/boot/grub/grub.conf”  d. 退出此模式,重启即可。    内核文件、镜像文件、/boot目录等文件损害或丢失,也可以使用此种方法修复。

2. 如果没有GRUB配置文件备份

如果没有备份GRUB配置文件,或者想通过此试验更多了解GRUB的引导过程,可以利用GRUB强大的交互功能,采用如下方法:在“grub>”命令行下可以进行如下操作: a. 查找/boot/grub/grub.conf分区所在目录可用如下命令: grub> find /boot/grub/grub.conf (hd0,5) 需要注意的是,将得到grub.conf配置文件所在系统的分区,(hd0,5)即表示它在分区hda6。 b. 查看grub.conf文件错误可用如下命令: GRUB>cat (hd0,5)/boot/grub/grub.conf 需要注意的是,可以查看到配置文件到底什么地方出现了错误,以便进入后修改。 c. 指定/boot分区可用如下命令: root (hd0,5) 需要注意的是,从此步骤开始,即为本文前面所提到的GRUB配置文件中的主要引导步骤,只是一般都是系统读取GRUB配置文件引导,出现问题时我们可以手工指定引导。 d. 指定内核加载可用如下命令: kernel /boot/vmlinuz ro root=LABEL=/ e. 指定镜像文件所在位置可用如下命令: initrd /boot/initrd-2.4.22-3Thiz.img f. 从/boot分区启动可用如下命令: boot (hd0,5) 此时,即可正常启动,实际上,以上步骤就是执行了GRUB引导期间加载grub.conf文件的步骤,当系统正常引导后将GRUB配置文件修改正确后即可。以上这个方法也可以用于测试新编译的内核。对此故障排除的了解可以加深对GRUB引导以及Linxu系统引导的了解。此外,还有一种情况是在安装Windwos时,把GRUB从MBR上清除,启动后根本连GRUB的影子都看不到。如出现此问题,可以进入Linux维护模式,执行如下命令: sh#grub-install /dev/had

3.fdisk /mbr

免得麻烦了,直接格调算了。o(∩_∩)o...哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值