最近买了新的电脑,在装双系统的时候碰到了一个小的问题,也算是花了一些时间,最后问题总算解决了,赶快把它记录下来!
一般情况下,如果我们希望安装双系统,系统安装的顺序应该是先装windows,后装linux。这是因为,windows无法识别linux的系统,而linux往往可以识别windows的系统。我也是这样做的。本本刚拿到手的时候,预装了win7的ghost版本。由于工作学习的需要,还要装一个linux的系统。我找了一张ubuntu 10.10的安装盘,安上完事。
然而,用了些天,感觉win7用起来不时会有卡的情况发生。究其原因,我认为很有可能是ghost导致,进而找了一张win7 OEM的盘删掉了之前的win7,重新装了。问题是,装好以后由于windows7无法识别linux,ubuntu便无法引导进入了。由于手头没有ubuntu的启动盘,就想用u盘将本本启动,然后修复MBR。
(1)制作grub4dos的u盘启动盘
想从u盘启动,制作u盘启动盘的工具自然少不了。我使用的是“一键ghost优盘版”中的引导设置程序,可以从这里下载:
本身一键ghost中已经集成了grub4dos,但是这个版本似乎并不支持grub命令行。我这里只使用了软件中提供的引导设置程序,将u盘格式化并设置u盘的MBR和分区的PBR(这里,参考一键ghost的帮助文档,将u盘以任意格式格式化后,设置MBR为ultraISO-USB-ZIP+,而PBR设置为grub4dos)。这样,u盘引导的时候会自动寻找U盘分区目录下的gldtr文件进行引导。
完整的grub4dos可以在官方的网站上找到:
我使用的是:
这个版本。应该是对应的0.4.4的最新版本。
将zip压缩包中的文件直接解压缩到刚才格式化好的u盘上,u盘启动盘就做好了!
(2)用grub4dos启动grub2
用刚做好的u盘启动盘插入待修复MBR的本本,设置bios中启动方式为USB-HDD后启动,就可以成功的进入grub4dos的界面了(不要告诉我你的本本没有USB-HDD启动项……你可以考虑换本本了。p.s. 其实我之前的本本就没有这一项,所以我换本本了)。之后,进入命令行模式,看到"grub>"标志。
一般,如果linux是使用grub引导的,应该可以直接使用grub4dos直接对MBR进行修复(使用grub命令行下的root和setup命令,可以参考网上的一些文章)。然而,这里的问题是,我的ubuntu 10.10是由grub2引导的,虽然可以用root (hd0,5)进入我的/boot分区(我的boot分区在扩展分区的第二个分区,也就是/dev/sda6。然而在grub4dos中,分区号是从0开始的,这里序号就是5),但是却无法正确setup,因为grub默认的stage1等文件在grub2中根本不复存在了。
这里,我也试过直接用grub4dos引导ubuntu 10.10的内核(利用grub4dos中的kernel和initrd命令设置后,boot系统)。但是,也无法正确启动。这里,由于我知识的匮乏,无法解释原因……大家有知道的可以告诉我,我也会在以后进一步的去学习和了解grub引导过程和内核引导过程。
这时,我的方法是先利用grub4dos引导grub2。方法是在grub4dos的命令行中输入:
grub> root (hd0,5)
grub> kernel /grub/core.img
grub> boot
将会看到熟悉的grub2界面。
(3)修复MBR
进入了grub2,我算是松了一口气……总算可以自如的进入linux了。但是,此时的MBR还没有恢复,总不能以后每次都用u盘引导进linux呀。这时,进入之前装好的ubuntu 10.10,使用如下命令修复MBR:
grub-install /dev/sda
再拔掉u盘重启看看,哈哈,所有的东西都和原来一样了!如果新的win7在安装的时候是在原先的分区上安装的话,我们连win7的grub2启动项都不用修改,就可以直接从grub2引导进入win7了。