[i=s] 本帖最后由 huiyuyu 于 2011-11-11 00:47 编辑 [/i]
小生linux新手~因为学习c语言以及好奇,在本机安装了linux
昨天一不小心惯例升级,update完点了点了下preupgrade,发现有fedora16正式版,然后就这样一不小心升级到了16
升级完后按惯例进/boot/grub找grub.cfg准备复制信息制作win7下的menu.lst(我习惯默认启动win7,然后用win 7的bootloader载grub进fedora),此时发现grub.cfg信息和预升级时一样,而且多了个/boot/grub2……去fedora官网看文档才知道16用了grub2,然后琢磨了好久,大致了解是个什么情况了,不过对于grub.d内的配置文件倒是看不懂(各种变量……)
重启后进系统就是grub2的启动菜单,包括原内核、PAE内核、recovery内核还自动添加了win7启动项,这个倒是比较的人性化。。。似乎ubuntu就是用的grub2
可我还是想开机默认进win7的bootloader,就自己google了下(吐个槽……天朝的网络连google查资料都不稳定,尼玛百度万年畅通……你妹的!),解决了,之后问题就来了,在fedora下用
grub2-mkconfig -o /etc/default/grub
直接提示
/sbin/grub2-probe: error: cannot stat `/dev/root'
且无其他提示,并中断操作直接返回到提示符
怀疑是和在win7下修复了mbr导致uuid有关,但是完全不会编辑grub2的配置文件 求指点~~~
本人可以直接正常进入win7(x64);
并且可用grub直接加载内核进入fedora16或者win;
但无法从grub加载grub2的core.img,进系统后发现core.img消失不见了……汗……
特此求教上述问题~~
现描述我在win下修复mbr的过程,一切从fedora 15正常升级到16版本后开始:
首先介绍下我的系统状况,三个主分区,一个逻辑区。win7下显示两个主区,是原来硬盘上完全安装的,没给100m小分区;linux占用一个,原来硬盘安装feodra 15时只用了一个区,没有分boot区,直接挂载在/下,没有swap区。
1.从grub2的引导菜单进入win7,这里说明下,我的windows本来就做了grub的启动项,bcdedit手工做的,此时进入windows的loader时依然可用,没有任何问题;
2.从我的win7安装盘里提取出bootmgr文件、boot文件夹、以及sources下的boot.wim到D盘,boot.wim放在D下新建的sources文件夹下;然后重启,继续用bcdedit做的grub引导d下的bootmgr来启动boot.wim,然后进入命令行模式,和硬盘安装win7进命令行一样的方式,使用
bootsect /nt60 sys /mbr
对mbr进行修复,然后直接重启
3.开机后mbr直接跳转win7的bootloader,修复成功;并且测试过使用grub进入fedora 16和进入win都没有问题,但是无法成功引导grub2
以上是全过程,之后我在linux下想自动生成修改过mbr后的grub.cfg就发生了上述错误。
特在此求解~~~~
jadefengling 于 2011-11-12 21:30:28发表:
没看懂.:0wszxc
alick 于 2011-11-12 13:59:18发表:
grub2 模块化了,但是配置什么的麻烦多了。grub 还可以用
maizi104 于 2011-11-11 13:07:13发表:
:0w5ty(1
huiyuyu 于 2011-11-11 00:44:22发表:
[i=s] 本帖最后由 huiyuyu 于 2011-11-11 00:52 编辑 [/i]
自己顶一个……
刚刚稀里糊涂的把问题解决了……也不知道出现上述问题的原因究竟是什么……
我把fedora 16自带的grub2 删除了,清空了/boot/grub2/以及/etc/grub.d/(如果有修改过的配置,记得先备份,反正我的是没改过的……),不过没有注意/usr/lib/grub2/这个文件夹,因为还完全不知道有这个……
然后就这样子重新安装了一遍grub2,发现/boot/grub2/内没有模块了,这时候发现/usr/lib/grub2内就是完整的模块文件,然后全部拷贝出来,再尝试打包启动镜像core.img(请查看grub2-mkimage命令),打包了ntfs fat biosdisk ext2四个模块,镜像格式用的i386-pc,然后重启……
果然还是不行,不过还好我有grub,反复用grub进fedora 16……然后稀里糊涂的运行了下
grub2-install /dev/sda2
我的linux在sda2,不过grub2不推荐我这样子,然后还报了个error给我……
至于出error之前执行了的东西有没有被撤销就不知道了
然后加上我接下来又往core.img里多加了linux和part_msdos这两个mod,并且重启后所有问题都解决了……我就无法确定我这两步到底是哪个生效了……
鉴于不想再折腾,就没有再重新打包core.img,进行排除测试
不过至此算是把问题解决了
现在就是开机默认是win7的启动器,加上grub的启动项,然后从grub的启动项分别可以启动fedora 16,grub2,返回winloader,加载win7的boot.wim(据说就是个pe)
中间的方法肯定有很多是不必要的,比如我删除了Fedora 16自带的grub2这一步
然后应该考虑把win7下的grub换成grub2了,不过鉴于grub的简单易用,还是再缓缓吧