Ubuntu10.04修复Grub2笔记

我的三星上网本自带一个系统还原功能,安装grub的时候它所在的分区都会被检测到,并被显示为windows vista,不过比较悲剧的是一旦你在启动的时候选了这项,mbr就会被重写,然后就引导不了任何系统了,永远处于开机重启的死循环里。

装完系统后一直懒得去修改grub.cfg,这次去旅游带上了上网本,借给别人用的时候忘了叮嘱别人不要选那一项,结果悲剧发生了。

好在有强大的ubuntu livecd,让我本本不至于变成废铁,下面就记录一下我修复grub2的过程吧:

过程跟网上面9.10的方法基本一致,而8.10的方法已经不再适用了。首先用livecd启动,然后在终端下切换到root权限:(你不嫌麻烦的话可以跳过这一步,在一下的每一步前面加sudo)

sudo -i

接下来找一找你ubuntu10.04所在分区,用:

fdisk -l

我的部分输出如下:

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         914     7341673+  12  Compaq diagnostics
/dev/sda2   *         915        4967    32554359    7  HPFS/NTFS
/dev/sda3            4968        8006    24410767+  83  Linux
/dev/sda4            8007       19457    91980126+   5  Extended
/dev/sda5            8007       14085    48829536   83  Linux
/dev/sda6           14086       14328     1951866   82  Linux swap / Solaris
/dev/sda7           14329       14344      128488+  83  Linux
/dev/sda8           18485       19457     7815591    b  W95 FAT32
/dev/sda9           14345       18308    31839232   83  Linux
/dev/sda10          18308       18484     1413120   82  Linux swap / Solaris

内容有点多,因为我是3系统- -!,而我ubuntu10.04根目录所在的分区就是/dev/sda9,如果你不确定的话就找id为83的吧。

下面挂载原系统的根目录:

mount /dev/sda9 /mnt

将/dev/sda9挂载到了/mnt下,当然你也可以选其他地方,这里注意如果你有单独为/boot分区的话,要单独挂载一次/boot,比如说如果你原来的/boot挂载到/dev/sda12上了,那个你这里要再输入mount /dev/sda12/mnt/boot。我这里没有把它单独分出来,所以就不需要了。

下面是最后一步了:

grub-install --root-directory=/mnt /dev/sda

这里我刚开始的时候自做主张的写成了grub-install –root-directory=/mnt /dev/sda9,同学们不要学我,- -!

如果看到

Installation finished.No Error Reported.

就表示已经成功啦!重启看看,熟悉的grub引导画面是不是又回来了?

最后赞一下强大的man,第一次修复grub,基本靠man就能解决了。

FIX:

今天同学装Win7把mbr给重写了,我用这个方法也无效,开机黑屏,后来在以上步骤的基础上再加上以下步骤才成功:

mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc
reboot

其实为了保险起见,我在重启前又grub-install了一下,不过这次不用跟–root-directory参数。

我也不确定update和install的正确顺序,不过能成功引导就是了,呵呵

你可能感兴趣的:(Ubuntu10.04修复Grub2笔记)