用vista/win7的boot loader来引导linux

转自 http://blog.wsdd.org/
安装linux,vista/win7双系统后,怎么引导是个问题
理论上,可以从windows的boot loader引导linux,也可以linux的grub引导windows
但windows更霸道,经常霸占MBR,所以最好是linux不放MBR,然后从windows的boot loader引导linux
把linux装在自己的分区,不要在MBR
然后把linux分区的头512字节弄成一个文件,拷到boot loader所在的分区根下
dd if=/dev/sda1 of=/tmp/linux.bin bs=512 count=1
cp /tmp/linux.bin /media/你的window c分区
到windows上执行:
bcdedit /create /d “GRUB” /application BOOTSECTOR
下面的{LinuxID}改为此命令输出的id
bcdedit /set {LinuxID} device boot
bcdedit /set {LinuxID} PATH \linux.bin
bcdedit /displayorder {LinuxID} /addlast
bcdedit /timeout 10

   因为Win7(Vista同理)的激活方式是通过grub摸你OEM的Slic信息,所以主引导分区MBR被这个grub占用,以此才能激活WIn7。但是如果想同时安装Linux在别的分区,就会产生问题:grub不能往MBR添加,否则会破坏Win7的激活。
网上有一些复杂的方法,但是要输入一大堆命令行。这里提供自己摸索的最简单的无需命令行的方法。
而且重装win7或者linux都可以很容易修复。
1、正常安装Win7到C盘,并激活。
2、正常安装Linux到其他分区,最后要求写入grub时,选择Linux挂载点为/的分区!这一步很重要,因为grub写入linux所在分区不会将MBR的grub覆盖!
3、这时Win7可以正常启动,但是没有选项来选择进入linux。下载easybcd这个软件,现在最新的是EasyBCD_2.0_Beta_-_Build_60,越新越好。
4、打开easybcd,在add/remove entry里面,选择linux,Type选择grub,在Name添加上你想要的名字,随便写一个如archlinux,Driver选linux所在的分区。这里选择的分区要和刚才安装linux时grub安装的位置一致。可能分区号Partition X与linux安装时的不一样,这里就要通过硬盘大小来确定哪一个。最后add entry保存好,view settings就可以看到两个选项了,一个是本来的win7,一个是刚刚建的。
5、重启,完成。
最后说一下启动顺序,计算机启动,读取MBR的grub(包含了win7激活信息的grub),然后执行win7的bootmgr,显示win7启动引导菜单,这时可以选择加入的archlinux引导项,进入linux分区的grub(这是和MBR互不相干的另一个grub),通过这个grub来引导linux,同时这个grub也可以在linux中直接修改。
核心思想就是linux的grub安装到非mbr的分区中,然后通过win7的bootmgr连接到这个linux的grub。
重装Win7后,可以再次使用easybcd来完成修复linux的grub。
重装linux后,还是将grub安装到linux分区,Win7无需改变即可。

你可能感兴趣的:(用vista/win7的boot loader来引导linux)