一直是xp与Ubuntu10.04的双系统,最近xp出奇的慢,遂想把xp换成win7。在网上一查,大多装win7的都是在装好win7的情况下再装Ubuntu,如果直接在Ubuntu下装win7就比较复杂了。
经过几个小时的折腾和在网上的搜索,终于搞定了,把整个过程记下来:
1.首先得准备win7的iso文件。
2.下载grub4dos和easybcd两个软件,详细说明及下载Google之。
3.在Ubuntu下备份MBR,输入命令如下:
$ sudo dd if=/dev/sda of=/<选择保存的路径>/mbr.img bs=512 count=1
这个步骤至关重要。需要把这个备份文件复制到Windows文件系统下,或用U盘备份。
4.挂载Win 7 ISO
$ sudo mount /xxxx.iso /mnt -o loop
打开/mnt目录,把里边的所有文件复制到一个NTFS分区的根目录下——不能是将用于安装Windows 7的分区,我这里放在了E盘下建好的名为win7的文件夹里面。
从这个名为win7的文件夹中把bootmgr文件和boot文件夹复制出来,放到E盘的根目录下,在分区的根目录下新建一个文件夹名为sources, 然后从win7文件夹中的sources文件夹复制一个名为boot.wim的文件,把这个文件放到根分区下的sources文件夹内.
这样,根目录下的bootmgr文件和boot文件夹还有sources文件夹下的boot.wim文件,其实就构成了一个完整的winpe.
5.添加启动菜单。
因为Ubuntu10.4用的是Grub2引导,所以和以前Grub修改设置稍有不同:
修改/boot/grub/grub.cfg文件,输入命令sudo gedit /boot/grub/grub.cfg;
在文件末尾加上启动项如下
menuentry "Grub for Dos" {
insmod ntfs
set root=(hd0,5) ##(hdx,x)是Ubuntu安装的那个分区,按实际情况修改##
linux /home/grub.exe ## /home/grub.exe是解压grub4dos后得到的程序路径##
}
6.在存放win7安装程序的那个分区,也就是上面的E盘,新建一个空白文件(其实也可以在任意分区),把它重命名为:menu.lst
在这个文件里面写入:
title win7
find --set-root /bootmgr
chainloader /bootmgr
boot
保存。
7.重启电脑,选择Grub for Dos进入,再选择win7后,回车即可启动win7安装程序。
8.开始安装
等待win7安装程序启动完毕。然后按下shift+f10键,调出cmd命令提示符。
首先查找win7安装程序所在的分区。
先输入:
c:
回车。
然后输入命令:
dir /a
这个命令是显示这个分区根目录下的全部文件。根据文件以确认这个分区是哪个分区。
如果不是,再输入e:
找到E盘,也就是我们放入menu.lst的那个盘
然后输入命令:
cd win7
这个命令进入win7文件夹。
再输入:
cd sources
进入sources文件夹。
再输入:
setup.exe
回车。启动win7正式的安装程序。前面我们所启动的其实只是一个预安装环境,也就是所谓的winpe而已。
9.改写mbr
win7正式安装程序启动后,我们先不要急着点下一步。首先还是按下shift+f10键,调出cmd命令提示符,然后在cmd命令提示符下输入:
bootrec /fixmbr
回车。这个命令改写mbr。
然后在驱动器高级选项中,对要安装win7的分区进行格式化。之所以要格式化,是为了让分区与win7更加兼容。
如果不格式化,至少也要改写pbr
命令:
bootrec /fixboot
后面的安装与光盘安装就没有区别了。按提示一路进行下去就是了。
10.安装完成
成功进入win7了,但引导菜单不见了,所以这时的ubuntu也进不了了。这是最早下的软件easybcd派上用场了:
安装好easybcd之后运行,添加LINUX启动项。C盘下会生成c:\nst\nst_linux.mbr文件,删除之,把此前步骤3备份的mbr.img复制到这个位置,重命名为nst_linux.mbr。
重启在多系统选单选择linux选项,即可看见原来的Ubuntu的多系统选单。进入Ubuntu之后,再彻底还原MBR。命令:
$ sudo dd if=/backup/mbr.img of=/dev/sda bs=446 count=1
11.清理
恢复好Grub2好后,当然要把/boot/grub/grub.cfg做些修改,比如把xp启动项名称现在可以换成win7了。
最后进入win7,继续用easybcd可以把步骤10建好linux那个启动项删除,再把等待时间调成0s。
至此,大功告成,xp换成了win7。