最近朋友老是推荐我装Win7,禁不住劝告就装了一下试试。一般来说要先装Windows再装Linux,这个地球人都知道。因为windows回覆盖MBR的引导记录,如果预先装了Linux那你就倒霉了(现在有了grub4dos情况好一点了)。反观Linux,因为有神器grub什么都能引导,那就不用怕覆盖了:)。
我已经装了Ubuntu,为了体验Win7就不能用普通方法安装了。
分区
首先第一步就是划分一个主分区给Win7(windows一定要装在主分区上,而不是逻辑分区)。我用Ubuntu Live CD启动,用了gparted无损分区软件搞定(特别适合分割调整分区,而且不用担心数据丢失,理论上是的)。最后的分区如下,/dev/sda4是给Win7的,分了40G的空间(Win7很耗空间)。其他要注意的是要去掉/dev/sda1的Boot标记(Linux用不到,主要是留给Windows用的),只有一个主分区需要Boot而且是/dev/sda4。
Device Boot Start End Blocks Id System
/dev/sda1 2048 20000767 9999360 83 Linux
/dev/sda2 20000768 20391935 195584 82 Linux swap / Solaris
/dev/sda3 20393982 894525439 437065729 5 Extended
/dev/sda4 * 894525440 976771071 41122816 7 HPFS/NTFS/exFAT
/dev/sda5 20393984 894523391 437064704 83 Linux
备份MBR
下一步是备份MBR,因为Win7会修改MBR,如果要找回之前的Ubuntu只能恢复MBR:
sudo dd if=/dev/sda of=./mbr.txt bs=512 count=1
这里扯一下MBR,用hexdump看看mbr.txt
hexdump mbr.txt
基本上Linux和Win7的分区表识别是相同的(4个分区,每个分区有分区类型:例如5表示扩展分区,其他的是什么文件系统),不同在于分区表前的446个字节。所以恢复是只要恢复MBR的446个字节。
装Win7
这个不用多说,地球人都会。
恢复MBR
装完了Win7当然进不去Ubuntu了,所以用Live CD启动进去恢复MBR了。
sudo dd if=./mbr.txt of=/dev/sda bs=446 count=1
更新Grub配置
恢复MBR后进入Ubuntu更新Grub配置,Grub会扫描分区从而识别Win7。
$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-34-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-34-generic-pae
Found linux image: /boot/vmlinuz-3.2.0-33-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-33-generic-pae
Found linux image: /boot/vmlinuz-3.2.0-32-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-32-generic-pae
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda4
done
OK,大功告成。重启电脑,按住Shift键进入Grub选择Win7就就去了。进了Win7才发现没有网卡驱动、无线驱动,偏偏我的Dell笔记本是个裸机,连官网都找不到Win7驱动-_-!!!,看来还是Linux好啊。
BTW:今天发现Win7的设备管理器里可以在线搜索驱动,这个比较创新啊:)。A卡驱动仍旧没着落,无法安装,暂时用了Intel的集成显卡驱动。