从现在开始写博客更为偏重解决问题的逻辑或总结事情逻辑,此举有助于思想传播得更为彻底。好啦,开始讲解问题吧。
还是先给出解决方法,再慢慢唠叨,呵呵。
0)解决操作:
请按照下面命令操作:
a)grub rescue>ls
会出现hd0,msdos1之类的提示
如果你知道哪个盘分区安装ubuntu,那么下面的工作就很简单了。如果不知道,那么还是准备个U盘,用liveCD启动电脑,看后面的ps说明啦。
b)grub rescue>set root=(hd0,sda7)//这里是我自己ubuntu所在盘分区
c)grub rescue>set prefix=(hd0,sda7)/boot/grub
d)normal
这个时候应该就会出现“选择项界面”啦,成功了一大半了。
e)进入系统打开控制台,输入sudo cp /boot/grub/grub.cfg /grub
如果先看看grub.cfg内容,可以输入nano /boot/grub/grub.cfg
f)做完后重启电脑,看看“选择项界面”是否出现啦,呵呵。
ps:
打开控制台输入sudo fdisk -l
/dev/sdb5 61464753 143396189 40965718+ 7 HPFS/NTFS/exFAT
/dev/sdb6 228204544 234440703 3118080 82 Linux swap / Solaris
/dev/sdb7 181743616 221964287 20110336 83 Linux
/dev/sdb8 221966336 228202495 3118080 82 Linux swap / Solaris
/dev/sdb9 143396253 181743344 19173546 83 Linux
还不能确认,就用mount /dev/sdb7 /mnt命令挂载后,再进入mnt目录来确认(一般有boot,grub等目录就对了)。
1)问题发生背景:
我安装的是双系统(win7+Ubuntu11.10),由于之前给ubuntu分配的空间过小,在下载完android源码后,硬盘告急,提示需要腾出更多的空间才能保证系统正常运行。所以,本人决定把win7下的一个分区来支援ubuntu。用ubuntu系统自带的硬盘管理工具对分区进行ext4格式化,再按照网上的教程来挂载/home目录到新分区,可能自己操作能力没有到位,总是不成功,无奈之下重启电脑缓解下郁闷的心情。没有料到,这下重启,让我这个新手的心情更为沉重了——Grub出错提示:"error:unknown filesystem"。可能是从事程序员工作久了的缘故吧,虽然看着陌生的界面,但心里还萌生出莫名的兴奋——强烈的信念“我能解决”。
2)问题思考与实践过程:
看到陌生的界面提示,首先脑袋里本能得出一个结论,世界这么多人,不会只有我一个人遇到这样的问题,通过互联网这个超级知识库肯定能找出和我想象的问题以及答案。(在工作或生活中,这种思想给予我很多便利,能快速定位问题,同时能高效解决问题,站在巨人肩上做事是挺有效的,呵呵)。
先要弄清楚这个是什么界面,最快找到答案,肯定是把错误作为关键字搜索。在搜索引擎选择上,我觉得挺讲究的,我自己的经验来总结下,第一选择google.com.hk,第二cn.bing.com,最后baidu.com,为啥这样谁用谁知道啦,^_^。
先看看第一条结果http://loneblog.com/blog/grub-errorunknown-filesystem.html,这个帖子很好,一开始就告诉这个界面是什么,而且还说明了在google的结果中很大一部分是说虚拟机下出现的情况,对本问题没有什么价值。不管怎样接着看,按照作者看法,有两种做法都能解决问题。通过分析,觉得第二种方法比较容易操作,而且不许要其他外部工具。在抉择之前,关键字"grub rescue"google了很多关于相关知识来帮助决定的。
事实没有预期的顺利,第二种方法操作完但一点效果没有,很多贴都说这样能解决问题,却没有发生在我的身上,My God!
无奈之下,拿之前刻有ubuntu系统的U盘进入liveCD模式操作第一种方法,在sudo grub-install –root-directory=/mnt/ /dev/sda(最新系统root参数换成boot了)这一步,老是提示错误"will not proceed with blocklists"(中文:块列表是不可信赖),没有贴中说的结果,我又无语了。重复启动了很多次,一直纠结与此方法,结果还是失败告终。看看钟,快凌晨1点啦,不知不觉操作了3个小时,碍于明天需要上班,洗洗赶紧睡觉(洗澡过程中还在不断分析问题出在哪?)。第二天早上发生的事,更加说明做事不能靠蛮力,张驰有度事半功倍呀。一醒来,脑袋里突然冒出了昨晚一直忽略的细节问题,grub的路径问题,抛开各种帖子的做法,按照自己思考的结果来操作,输入set root=(hd0,msdos7) 和 set prefix=(hd0,msdos7)/boot/grub(注意:这里的路径多加了/boot,关键呀),最好再输入normal,哈哈哈,出现了熟悉的“选择界面”,这一下兴奋得像打了鸡血般猛烈呀。心里知道,问题快浮出水面了。
当又一次重启电脑后,还是停留在grub界面,没有出现“选择项界面”。昨晚刨的帖子还是有用的,脑袋里突然闪出一个有关设置“选择项界面”编辑的贴,里面讲到grub.cfg这个问题,grub每次启动是按照这个文件来配置的。还有先前调整下路径就能调用出“选择项界面”,综合思考,得出一个关键问题,root根grub目录中grub.cfg配置错误或缺少这个文件?带着这样的疑问,查看root根grub目录没有grub.cfg这个文件,但在/boot/grub目录下能找到,而且文件内容描述和之前贴中说明的情况一致,文件配置是对的。根据上面的情况分析,得到一种尝试性方法,就是把/boot/grub下的grub.cfg文件copy到root根grub目录下。cp /boot/grub/grub.cfg /grub命令运行完,重启电脑,问题终于解决啦,完美的进入“选择项界面”。
3)小结:
自己是一个快要“奔三”的人了,但是感觉自己在做事上还是一个蛮人,很少用脑子先思考问题,总是先忙忙碌碌动手做。这种方法效率很低,而且累了身体折了心,在往后的人生中需要多多修正,不然,达到自己理想的生活状态实在是一种幻想了。小问题见大道理,活出自己来吧,呵呵。