|
|
|
原创:熟悉的陌生人 出处:http://hoggen.blog.sohu.com/
Lenovo 昭阳E280L 一直用着Windows XP(刚打了SP3的补丁),因工作需要加装SUSE Linux 9.0, 以为是简单的事情,没想搞了12个小时,学到很多,才知道自己无知。
本来分区C、D、E,为到出空间,将E的资料集中到D,然后把E分区在安装Linux的时候干掉,用来安装Linux系统。
第一次(实际安装了2遍),安装完成重新启动,提示“grub geom error”,无法正常启动,上网,N多的帖子,问题描述集中在mbr问题,按照高人们的提示用Linux安装盘引导系统,修复Grub(grub-install /dev/hda),重新加载mbr,问题有所好转,转为提示“grub loading error 17”。
第二次(实际安装3遍),安装完成后依然提示“grub loading error 17”,(汗!因为看到有人讲windows的资料也可能丢失!)。继续百度,解决办法集中在指定boot文件系统的位置。Linux安装盘引导系统,运行grub,root (hd0,3),setup(hd0),显示一切正常,ok! 重新启动系统,问题依旧。再次重新安装,重新分区,把所有(除swap)分区文件系统格式选Ext3,安装完成! 重新启动后直接进入grub, 出现“grub>”不再动了! 有点欣喜。
接下来,键入“rootnoverify (hd0,0)”->"chainloader +1"->"boot"!
Windows XP正常启动了,非常欣慰 非常高兴(至少我的资料保住了)!
第三次 在grub中重新修复mbr,加载boot文件系统,重新启动,出现了新的提示“grub error 18”(已经是晚上23点了)。难道就装不起来?
〔RH9遇到Grub error 18不能多重引导的请进!〕看到这眼前一亮!终于找到分析原因的人
自RH9面世以来,不断有用户报告在双引导或多引导时出错,Grub错误代号error 18。而对于解决方法,也是众说纷纭,有说一定要分两个主分区的,有的说一定要只分一个主分区的,有的说调整BIOS的,有的说一定要单独分一个 /boot区的,有说重装Grub的,有说改用NTLoader/Grub4Dos的。近日在下也遇到了这个问题,几经周折终于解决。现写点体会希望后来者少走弯路:
1. 问题的产生:如果你对Grub error 18的概念和历史已很了解,请跳过这一段,解决这个问题首先要明白什么是Grub error 18,它是指Grub加载时在预计的硬盘柱面范围(对于RH9为1~1024)内没有找到系统内核。据说Grub不能寻址1024以上柱面这个问题在 RH8中已经解决,但不知什么原因,RH9(Grub版本号0.93)在这方面又倒退回去。同时,由此还衍生了其它问题,比如,在安装程序中不论用自动分区还是Disk Druid手分,只要显式地违返此规则,都会报错误的配置参数,而在安装时grub.conf会包含错误。修正这些表面错误不会,“重复——不会”,对 Grub正确引导系统起帮助作用,包括在安装光盘拯救模式的shell下使用grub-install /dev/<设备名>重装Grub!而这一失败的方法是本版精华区所保留而且受到版主hew肯定的!这本质上来说根本不是多重引导的问题,但确实易为多重引导引发。因为多重引导时一般是别的分区先装,有些人还喜欢把属于同一种的系统分区连续排列,这很容易超过1024柱面的范围。另外,如果不把/boot挂载点单独分一个区,也很容易造成同样的问题,因为即使在/处于1024柱面的范围内时,有可能根/所在分区很大,而其下的 /boot的实际位置是自动设的,不一定就也在1024柱面范围内。
2. 问题的解决:不了解问题的根本所在,只是生搬过去的经验是行不通的,相信有不少人在这个问题上已有陷入泥潭的深深无力感。而在了解了问题的根本原因以后,解决它就很简单了。
既然问题的起因是Grub 0.93不能寻址1024以上柱面,那么把系统内核(在挂载点/boot之下)装在1024以下柱面就可以了。这就要求任何情况下要单独分一个区给 /boot,同时这个区应尽量靠前,双重引导下最好紧跟第一个分区(主区,系统分区,占用少于1024柱面),不一定非要分为Primary,多重引导类似。当然,安装完Grub双引导系统后要手动激活分区,这也算是这款RH的又一缺陷吧!
另外,一篇也很好!{关于Grub的error 17和error 18(转)}
(无意中发现的一篇分析地很透彻的文章,以前只会解决error,现在清楚知道error的原因了)
这两天,在原有Windows硬盘上双系统安装CentOS时遇到了一些问题,情况是安装后只出现Grub>的提示符,而不出现启动菜单。进行Grub的手动重新安装后,再次启动出现error 17或error 18的错误。因为之前装Redhat 9和Fedora Core 5时都用的Grub,所以开始猜想问题出在CentOS身上,但是多次失败后重新尝试了安装FC5,这次也不行了,但在改用Lilo后,一切正常,所以推测出问题应该出在Grub身上。这两天跑遍了国内外的论坛,基本上大家对这个问题的回答就是各种尝试,碰上好了就好了,不好就算了,而且多数人都没解决问题,最后很多人还是选择了干净利落的方法--将Windows删除,全盘重新分区......。经过本人多次实验和查找相关资料,算是把这个问题大致搞清楚了。下面简要分析一下这个问题,并提出解决步骤。
首先,硬盘分区限制,其实出现的这些错误都多多少少的和这个有一定关系。一个硬盘最多只能有四个主分区,这一点是大家要清楚的。现在我们来假设一下硬盘的使用情况:在机器买回来后我们将硬盘划分了4个逻辑盘,分别是C、D、E、F,而且整个硬盘空间已划分光了。那么,在这种情况下,我们一般使用了几个主分区呢?答案是两个:一个是主DOS分区,另一个是扩展DOS分区。C盘就是主DOS分区,而扩展DOS分区还包含着3个逻辑盘D、E、F。 Linux呢,也是对其提供了相应的支持,假设只有一块IDE硬盘的情况下,Linux就会为其预留出hda1,hda2,hda3,hda4四个主分区号,而逻辑分区则从hda5开始,这样一直排下去。
了解了分区限制后我们再来看一下这两个错误的提示信息。对于error 17,官方的提示信息是error17: Cannot mount selected partition. This error is returned if the partition requested exists, but the filesystem type cannot be recognized by GRUB. error 18则是error 18: Selected cylinder exceeds maximum supported by BIOS. 这两种问题是随机交替出现的。二出现问题的阶段,系统提示为stage 1.5或stage 2.
国内外的一些网友对这个问题的解释是不正确的:
1.MBR有问题。其实我们从系统提示可以看出,Grub的第一阶段已经执行成功,错误其实是在1.5或2阶段执行前或执行时出现的。因此修复MBR,重新Grub的方法是没有道理的。
2.把Linux分区放在了DOS扩展分区里会出现问题。这解释也是不正确的。很多人说一定要把留给Linux的空间放在DOS扩展分区之外,其实没有必要。实验证明,在正常情况下,无论把Linux装在主分区和扩展分区都没有问题。这里还可能牵扯到另外一个问题,也是很多朋友也都碰到过,但不知道如何解决的问题。根据很多人的建议,很多朋友把留给Linux的空闲空间放在了扩展空间之外,这时发现不能够按照很多人推荐的把Linux分区分成三个,即/boot,/,swap,分最后一个时会出现“无法拔发所申请分区,Partitioning failed”的提示,这是为什么呢?其实原因是安装程序所带的Disk Druid默认会把你的分区设为主分区。根据前面介绍的知识,一块硬盘只能有最多4个主分区,系统原有2个,你现在又想分出3个,自然不行了,而你只分成 /,swap两个时就不会出现错误,是这样吧?其实完全可以把Linux的部分或全部分区放到扩展分区中,放心,不会有问题,我现在的系统就是这样的。其实还有另外的方案,就是使用LVM。这里就不多介绍了,网上资料比较多。
3.很多人还把问题归结到Grub对LVM的支持不完善上,其实这也不是问题所在,因为本人压根就没使用LVM。
那么问题到底出现在哪呢?
根据系统提示,问题应该在于Grub找不到它所要引导的分区或识别不了该分区的格式,那么为什么会这样呢?在安装时Grub明明可以找到该分区,并正确识别出格式的,为什么引导的时候就不行了呢?根据Grub的更新说明,新版本的Grub在引导时会自动监测设备,自动为它们编号成/dev/...,而对于一个设备而言,自身的分区排列顺序也是由设备自己来反映给Grub的,因此设备就有可能在引导时将错误的分区排列顺序反映给Grub,甚至因为支持了USB设备的引导,有可能会将一些USB设备错误的混入其中,以至于引导设备的编号或分区的编号与安装时不一致。本人的电脑以前安装时一直正常,而这次却不行了,有没有可能是因为我刚买的这块USB键盘(战神----DELL 8135^_^)呢?呵呵,这个就只是猜测了,没有拔掉它实验,因为没有别的键盘了。而Lilo为什么不会出现问题呢?因为Lilo没Grub那么智能,它只会按照BIOS和用户设置进行引导。
最后提一下解决步骤吧:
1.先试图升级一下BIOS吧。错误提示里说超出了BIOS的限制,有些机器对硬盘是有这个限制的,BIOS在引导时只能寻址到512M或8G,不过这种古董级的机器似乎不多见了,先试一下吧。
2.尝试手动重新安装和配置Grub吧,也许会好。
3.把/boot分区单独放在硬盘靠前的位置,我就是这样解决的。
4.换成Lilo吧,一般到这步问题都该解决了。
5.以上都不行?换台电脑吧。
第四次,重新分区,首先单独建立boot分区,正常安装,重新启动!ok,搞定。 | |
阅读(463) | 评论(0) | 转发(0) |