欢迎来到思考者的博客。本站内容欢迎非商业性转载,请注明出处:http://2006.ghtxx.cn:88/shower/ 如有需要与站长讨论,请QQ:26820218,很高兴与您成为朋友。

双系统用户要谨慎对待硬盘分区

上一篇 / 下一篇  2009-12-31 15:53:12 / 天气: 晴朗 / 心情: 郁闷 / 个人分类:应用软件

由于一种偏执,我的计算机几乎全都是多系统共存的,这样做的后果是很严重的,比如今天中午,我就因为想把D盘上的文件重新整理,消除文件碎片,把所有文件备份到另一个硬盘后,删除了D分区,再重建分区,移回大文件。

这样做的后果是,碎片的确都消除了,可是系统重启时却出现了grub 引导失败,无法进入系统了,显示的错误Error 15,通过google后,搞一中午才解决这个故障,真是有点儿自寻烦恼。

网上建议的解决办法与说明如下:

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(再此之前确认一下该目录下放置了kernelsource code)重新compile一个,命令如下:


  # cd /usr/src/linux/

  # make menuconfig

  # make


  完成之后拷贝进/boot:


  # cp /usr/src/linux/arch/i386/boot/bzImage /boot


  重命名一下kernel,和你在grub.conf中指定的一样就可以了.顺便再检查一下grub.confkernel那行引用的分区是否正确.


  除了kernel的丢失或损坏, BIOS无法识别存放Grubstageskernel的硬盘分区也会出现相同的Missing错误.同时存放Grubstageskernel的分区不应该是使用software RAID-5(或者是使用其他优化存储技术的分区,比如LVMLVM2).


  解决方法(第二种情况) :


  第一,检查grub.confroot行和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

不过我采用的方法跟这个说明的有点儿不一样,采用error 12的故障解决办法也就解决了。

2. Grub Error 12


  出现症状:


  12 : Invalid device requested.


  该症状是当设备描述符正确但是随后出现没定义过的某个错误时出现.


  解决方法:


  该错误一般出现在使用交互式的Grub安装方式(也就是Grub>下的安装方法)时没有输入以下两行.


  grub> root (hd0,0)

  grub> setup (hd0)


(hd0,0)必须用你自己的引导扇区代替, (hd0)也必须同时用你选择的hard drive代替,因为上述两条命令的实质就是在把bootloader安装到第一个硬盘(The primary master)Master Boot Record.

我是用sudo grub find /boot/grub/stage1 root  这个指令从Live cd中进入grub进行如上修改的,而且由于我的linux是安装在第5分区上,所以hd0,0就相应改为了hd0,5,其实如果写错了,你是不可能进行setup操作的。

由此可见,安装多系统最好不要在一个硬盘上超过2个系统,而且系统引导分区最好使用主分区,而我则错误的使用了逻辑分区,去年跟今年对系统的认识都不一样了呀。是进步了吗?

最后还是建议大家别玩多系统了,真想玩就用虚拟机软件在xp里面玩吧,还实用一些,,,


TAG: 错误 多系统 引导 grub error 分区

你一思考,我就发笑 引用 删除 JarodLee   /   2010-01-04 20:43:37
我会出现这样分区也是有原因的,  因为完成了vista的试用体验,最终把系统装回xp sp2,装完才发现,由于原来分区的时候把几个区都设置成了主分区,安装时xp自作主装的把第二个分区当成了引导区,其实本来也没有什么关系的,可是本人不喜欢D盘上出现ntldr之类的文件,看着不爽,一气之下,删了,结果只有重新再装一次了。
  下次记住了,只留一个主分区,咱不用搞多系统启动了,麻烦。
这是我2006-08-10 14:14:54写在中博的《分区要注意,主分区不宜过多。》所以可能就考虑不足了。
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar