以前在 Windows XP 中用 grub4dos 引导 linux 很容易,直接改 boot.ini 就行了。现在换了 Win7 ,结果反而更麻烦了。
基本步骤是:
详见:
http://bbs.znpc.net/viewthread.php?tid=2300&extra=&page=1
http://grub4dos.sourceforge.net/wiki/index.php/Grub4dos安装和启动
但我遇到的问题更麻烦:我的 Win7 是用 grldr 模拟 BIOS 激活的!
也就是说 MBR 里的内容已经是 grldr.mbr,而且 C:/ 本来就有一个 grldr ,但那个 grldr 是定制过的,包含着 BIOS 信息,还自带了 menu.lst,我不能覆盖,也不能修改。
经过各种尝试,终于找到了一种解决方案:用 16 进制编辑器修改 grldr.mbr ,将里面的 grldr 全部替换成 gdldr 。再把 grub4dos 原版的那个 grldr 改名为 gdldr 放在 C:/ 下。这样 Win7 启动的时候,选择 grldr.mbr 的菜单,会查找 gdldr 并装载。如此一来就完美地解决了用 grldr 激活的的 Win7 无法再使用 grldr 引导 linux 的问题。
大家可以参考下面两幅图:
1. 如果不修改 grldr.mbr,只用常规方法的话,会陷入死循环:
2. 修改 grldr.mbr ,成功跳出死循环:
还有就是 menu.lst 的写法。因为我希望在 Windows 的引导菜单能够进入 grub,而在 grub 的菜单中也能回到 Windows。在 grub 中引导 Windows XP 我们只需要这样写:
title Windows XP rootnoverify (hd0,0) chainloader +1
但自从 Vista 之后,Windows 的引导管理器就由 ntldr 变成了 bootmgr ,menu.lst 的写法也要这样:
title Windows 7 acpi fallback 1 root (hd0,0) chainloader /bootmgr