win7+ubuntu+fedora的引导修复。

好久没有写博客了,今天来发文纪念一下非常之蛋疼的一天(一下午)。

最近在搞嵌入式开发,嵌入式开发当然少不了Qt,但是以前没有玩过Qt哇。安装Qt的qt-x11源代码就让我非常之上火!

昨天晚上编译了半晚上也没有弄好,虽然fedora 18是才新装上的,但是已经让我弄得乱七八遭了。。。

恰好手上有Ubuntu 12.10的U盘live,于是乎一冲动就吧win8 盘格式化了,重启进入u盘引导了。

于是乎,注定了今天一下午的蛋疼。

安装Ubuntu的时候他提示和win7共存,说明已经识别win7的启动项了,但是却没有提示有fedora 的存在,但是我也没有太在意,就直接下一步了。

重启果然没有了fedora的开机引导,但是一看他的盘还在,说明系统还在。本来以为Ubuntu里运行一下update-grub就好了,但是事实总是事与愿违,试了一下grub-mkconfig当然也是失败告终。

ubuntu 12.10用的是grub,而fedora 用的是grub2,也许这是失败的原因(猜测的)。

后来在网上逛了一圈,说是用U盘live开机,然后。。。

然后我就台式机上下载了fedora的KDE live ,用usb creator 制作了U盘启动,但是悲剧再次发生,从U盘启动直接就没有反应,一个黑屏让我傻了眼。无奈有重做了U盘启动,还是不行,百思不得其解,换了台电脑还是不行有木有哇!!

这才想到可能是U盘有问题。。。

于是换了一个4G内存卡,直接妥了哇!!!过去一直用这个U盘做各种启动盘一直很好用,这次为啥就不行了呢。。原因还不知道,有可能这U盘已经到尽了,他为我做出的贡献已经不少了。扯远了。

进去之后是这样干的:

su

mount /dev/sda /mnt

grub-install-root-directory=/mnt /dev/sda     //install grub2 to MBR

结果显示错误(啥错误记不住了。。。)

后来一想把 Ubuntu 系统的 /boot 挂载上然后再 。。。

umonut /mnt

mount /dev/sda9  //我的Ubuntu系统所在的分区

cd /boot/grub

然后看到了 grub.cfg

有点激动的试了一下

grub-mkconfig -o /mnt/boot/grub/grub.cfg

结果总是不那么让人感觉到爽。没有发现fedora.后来才发现其实这和在Ubuntu里执行是一样的。

再试:

umount /mnt

mount /dev/sda11 //我的fedora系统所在盘

cd /mnt/boot/grub2

然后试了一下

grub-mkconfig -o /mnt/boot/grub2/grub.cfg

果然有惊喜,找到了fedora 18 的开机启动项。

然后一下午就这么过去了。。。

到了晚上来写个博客,记录一下修复过程,悲剧再次发生。

不知道哪根筋又答错了,突然执行了以下命令:

rpm -qa qt*

然后又不小心执行了一句:

yum remove qt-x11-4.8.4-14.fc18.i686

一边执行一边写博客,就在这时,电脑突然黑屏了,显示若干错误,

图形化窗口突然关闭了。这!!!!

我辛苦写的博客。。。我估计是没有了。

然后在命令行下登陆,竟然还可以startx,

进去之后一切还好,不过chrome已经关了。打开chrome后,

ctrl+alt+t

回复上次关闭的窗口,结果博客圆是打开了,编辑随笔还在,题目竟然还在,坑爹的是内容木有了,而且写了80%的博客没有保存草稿。。。

哎!~悲剧总是一次一次的发生。

最后还是决定重写博客,记录不幸的今天。

最后的教训是:

不要随随便便就重装系统了,说不定哪天电脑的第一块扇区就崩了,我的U盘就已经不能做启动盘了。。。

以后不管干什么都要注意保存和备份数据。

还有就是 fedora 里面的yum remove  最好还是在有把握的情况下用,要不就要发生悲剧了。

 最后在来张桌面图显摆一下 fedora 18 KDE

 

今天继续手贱,在win7下把 Ubuntu的系统盘给格式化了,结果理所当然的系统又没法引导了。。。。

网上搜索了一下,http://blog.csdn.net/firefoxbug/article/details/7322763 试了试 他的方法,不知为何一直提示 /bin/bash  为未知文件或命令,试着挂载了一下/bin 到/media/bin,

还是不行!!

后来又找了一个方法,http://www.linuxidc.com/Linux/2011-06/37556.htm,

在fedora 18 上使用的是grub2 ,命令稍微有点不同,于是:

grub2-install -?

看看使用方法如下:

[qin@localhost ~]$  grub2-install -?
Unrecognized option `-?'
Usage: grub2-install [OPTION] [INSTALL_DEVICE]
Install GRUB on your drive.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --modules=MODULES       pre-load specified modules MODULES
  --boot-directory=DIR    install GRUB images under the directory DIR/grub2
                          instead of the /boot/grub2 directory
  --target=TARGET         install GRUB for TARGET platform
                          [default=current]
  --directory=DIR         use GRUB images from DIR. Takes precedence
                          over target
  --grub-setup=FILE       use FILE as grub-setup
  --grub-mkimage=FILE     use FILE as grub-mkimage
  --grub-mkrelpath=FILE   use FILE as grub-mkrelpath
  --grub-probe=FILE       use FILE as grub-probe
  --allow-floppy          make the drive also bootable as floppy (default
                          for fdX devices). May break on some BIOSes.
  --recheck               delete device map if it already exists
  --force                 install even if problems are detected
  --force-file-id         use identifier file even if UUID is available
  --disk-module=MODULE    disk module to use (biosdisk or native). This
                          option is only available on BIOS target.
  --no-nvram              don't update the `boot-device' NVRAM
                          variable. This option is only available on
                          IEEE1275 targets.
  --removable             the installation device is removable. This option
                          is only available on EFI.
  --bootloader-id=ID      the ID of bootloader. This option is only
                          available on EFI.
  --efi-directory=DIR     use DIR as the EFI System Partition root.

INSTALL_DEVICE must be system device filename.

grub2-install copies GRUB images into /boot/grub2, and uses grub-setup
to install grub into the boot sector.


Report bugs to <bug-grub@gnu.org>.

用到的就是这一条了 :

--boot-directory=DIR    install GRUB images under the directory DIR/grub2
                          instead of the /boot/grub2 directory


于是 :

grub2-install --boot-directory=/media  /dev/sda

/media 下挂载的是fedira 的boot分区。

重启系统果然成功了。

 

2013年6月20日:

今天在一次记录我那悲剧的笔记本电脑.....

参加了一个比赛,就要答辩了,于是在windows7下吧那一块还空闲的50G硬盘分配了一个新的分区,然后打算就把这个盘作为专用盘去比赛,然后又创建了一个新的WIN用户,设置了一些硬盘访问权限。之后用的很爽,结果悲剧就在重启电脑的时候发生了!

重启之后直接错误进不了系统,提示 grub rescue ,当时我就不淡定了,不就是创建了个WIN用户么,又一想我还对硬盘分区动过手,估计就是这个原因了!

无奈只好Google了。。

找到了一些有用的东西:

由于在rescue模式下,只有少量的基本命令可用,必须通过一定的操作才能加载正常模块,然后进入正常模式。

rescue模式下可使用的命令有:set,ls,insmod,root,prefix(设置启动路径)

先假设grub2的核心文件在(hd0,8)分区,再来看看怎样从 rescue模式进入从(hd0,8)启动的正常模式(normal)。

在 rescue模式下search命令不能用,对不清楚grub2文件处于哪个分区的,可以用ls命令查看,比如

ls (hd0,8)/ 查看(hd0,8)分区根目录,看看有没有boot文件夹

ls (hd0,8)/boot/ 查看(hd0,8)分区的/boot目录下文件

ls (hd0,8)/boot/grub/ 查看(hd0,8)分区/boot/grub目录下文件

通过文件查看,可以确定 grub2核心文件处于哪个分区,接下来就可以进行从rescue到normal的转变动作:

先 ls 看看分区,根据分区列表,记下 / 分区的编号再 ls (hd0,x)/ 看分区目录下文件确定找到 / 分区,不对的话继续找。找到 / 分区的 (hd0,x) 继续

grub rescue>root=(hd0,x)

grub rescue>prefix=/boot/grub

grub rescue>set root=(hd0,x)

grub rescue>set prefix=(hd0,x)/boot/grub

grub rescue>insmod normal

rescue>normal -------->若出现启动菜单,即可进入系统。

但是这还没有完,因为在重启后问题依然在。

我们需要进入Linux中,对grub进行修复。

  grub2-mkconfig -o /boot/geub2/grub.cfg
      grub2-install /dev/sda

(sda是你的硬盘号码,千万不要指定分区号码,例如sda1,sda5等都不对)

成功之后重启测试,grub2已经成功修复好了。

 

 

posted @ 2013-05-09 21:29  qinyg  阅读(1713)  评论(0)    收藏  举报