3. Grub Error 15
出现症状:
该错误可能出现在Grub配置的两个不同的阶段,一种可能是出现在Grub的安装配置阶段(也就是在MBR上安装Grub的时候),屏幕显示如下:
grub> root (hd0,0) Filesystem type is xfs, partition type 0x83
grub> setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... no
Error 15: File not found
还有一种情况就是启动电脑后选择启动linux或其他在Grub启动列表中列出的系统时,屏幕显示如下:
Booting 'gentoo Linux'
root (hd0,0) Filesystem type is ext2fs, partition type 0x83 kernel (hd0,0)/boot/kernel-2.4.20 root=/dev/hda3 vga=792
Error 15: File not found Press any key to continue...
解决方法(第一种情况) :
该错误在找不到指定的文件时出现,但是此时像磁盘或分区信息这样的其他配置都没问题(只是找得到相应的分区或磁盘,至于对不对它可不管).一般来说没找到的文件以kernel居多.首先需要确认一下在你的/boot里的那个kernel,如果需要存在于你/boot里那个kenel的完整的文件名,使用livecd, rescue盘或其他安装在硬盘上的linux系统引导成功后挂载那时在配置Grub时候指定的/分区和/boot(需要的话),然后使用chroot进入那时的根分区,使用下面的命令进行查找.
# cd /boot # ls
如果发现kernel文件丢失,进入/usr/src/linux(再此之前确认一下该目录下放置了kernel的source code)重新compile一个,命令如下:
# cd /usr/src/linux/ # make menuconfig # make
完成之后拷贝进/boot:
# cp /usr/src/linux/arch/i386/boot/bzImage /boot
重命名一下kernel,和你在grub.conf中指定的一样就可以了.顺便再检查一下grub.conf中kernel那行引用的分区是否正确.
除了kernel的丢失或损坏, BIOS无法识别存放Grub的stages和kernel的硬盘分区也会出现相同的Missing错误.同时存放Grub的stages和kernel的分区不应该是使用software RAID-5(或者是使用其他优化存储技术的分区,比如LVM或LVM2)的.
解决方法(第二种情况) :
第一,检查grub.conf的root行和setup行配置正确.如果你确认你使用的方法是正确的,那可能你使用的Grub版本存在bug(比如0.93.20031222这个版本),使用你所用发行版的软件工具新安装一个或是升级你原来所用的Grub).
Gentoo用户可以使用下面的命令:
(在chroot环境下执行该命令)
# echo "=sys-boot/grub-0.93.20031222" >> /etc/portage/package.mask # emerge grub -p
然后你也可以使用Grub开发人员建议使用的grub-install脚本进行Grub的在MBR中的安装:
(--root-directory在你使用单独的/boot分区时是必选项)
# grub-install --root-directory=/boot /dev/hda
如果上面的方法你都试过,但是还是没法解决问题的话,请检查一下你的/boot分区,可能是你的/boot分区存在问题:
(确认一下你将要进行fsck的分区是处于unmount状态下的,在给出的例子中使用的是/dev/hda1.)
# fsck -y /dev/hda1 |