如何在重装Windows 7之后恢复Grub菜单

最近有机会从单位里弄到了正版Windows 7License,于是迫不及待的将之前的测试版Win 77100版)换掉,从单位里拿回安装盘之后就屁颠屁颠的装系统了,相对于7100,感觉正式版用起来更又安全感,而且感觉也提升了一些东西,:),不过也有可能是用着正版系统的心理作用,哈哈。用过几天之后,今天才想起应该恢复一下系统启动菜单,不然进不去Ubuntu了。

其实在重装Win 7之前已经做过功课了,确定可以回复系统启动项的,所以才感安心直接重装。当时找到的解决方法是从这里的网页得到的,方法还是蛮简单的。

最终目的

安装Grub

如何安装Grub

通过 grub-install 命令安装Grub

首先用Ubuntu liveCD进入系统,运行Terminal,通过命令 “fdisk -l”查看系统现有的分区,因为是从CD启动的,所以如果不能直接使用命令“grub-install”安装Grub,必须指定它的“–root-directory”参数,具体原因可以看这里。下面是我的安装过程:

1. 用“fdisk -l”看到下面的结果:

root@rextu-laptop:~# fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes

255 heads, 63 sectors/track, 19457 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0xb2f1d8ee

Device Boot Start End Blocks Id System

/dev/sda1 * 1 3825 30724281 7 HPFS/NTFS

/dev/sda2 3826 19457 125564040 5 Extended

/dev/sda5 3826 7650 30724281 7 HPFS/NTFS

/dev/sda6 7651 11475 30724281 7 HPFS/NTFS

/dev/sda7 11476 12622 9213246 83 Linux

/dev/sda8 14026 19457 43632508+ 7 HPFS/NTFS

/dev/sda9 12624 13015 3148708+ 82 Linux swap / Solaris

/dev/sda10 13016 14025 8112793+ 83 Linux

Partition table entries are not in disk order

2. 之前Ubuntu是安装在 /dev/sda7 的,所以现在需要挂在该分区到 /mnt 以便后面“grub-install” 可以用来作为 root-drectory。挂在命令:“mount /dev/sda7 /mnt”

3. 安装Grub,命令为:“grub-install –root-directory=/mnt /dev/sda”。其中“/dev/sda”是我的硬盘的名称吧,我也不知道该怎么叫,理论上来说应该可以使用“hd0”,但是用“hd0”不总是有效,这里涉及到一个问题就是“The map between BIOS drives and OS devices,即Device Map,某些时候“/dev/sda”不一定对应于“
>hd0”,根据不同的设备会有所不同,用“
/dev/sda”的没问题是因为我们在第1步中已经看到了硬盘的名称是这个。“grub-install”执行完毕之后,会提示你查看“/boot/grub/device.map”是否正确,也就是让你确定Grub是否猜对了“The map between BIOS drives and OS devices

更新Grub

重启系统之后可以看到之前的启动菜单又出来了,不过Win 7无法进入了。按照我之前这篇文章的介绍,通过命令“update-grub”即可重置Grub。之所以进不去可能是因为Win 7重装之后地址不一样了吧,反正用“update-grub”更新一下肯定行的。



Dec18