很久以前,bean 大侠在
viewtopic.php?f=139&t=140421 里写道,
有趣的是,vista里尽管使用BCD,但其实也会读取boot.ini的内容。因此你可以在C:\下建立一个boot.ini文件:
[boot loader]
timeout=30
[operating systems]
C:\g2ldr="Start GRUB2 (vista)"
该项目会自动加到vista的启动菜单里,你就不需要使用bcdedit来增加启动项了。
bean 的 grub2 我没试过,我曾试验用类似的做法引导 grub4dos,
[boot loader]
[operating systems]
c:\grldr.mbr=grldr
总是不行,根本没有启动项。我于是怀疑 bean 是在 xp/vista 双系统下误得出这个结论。
今天机缘巧合,发现了原因,原来一定要使用一对引号, bean 老师留了一手 ...
不用 bcdedit,从 vista (无 xp 系统)引导 grub4dos 的方法:
在 c 盘根目录自建 boot.ini,写入:(需要提升权限)
[boot loader]
[operating systems]
c:\grldr.mbr="grldr"
到 http://download.gna.org/grub4dos/ 下载某个版本的 grub4dos,并把其中的 grldr, grldr.mbr 拷贝到 c 盘根目录。完工。
另外,请尽量使用最新版的 grub4dos,对于由 8.10 安装程序格式化出来的新式 ext3 分区,因为 inode size 从 128 字节变成了 256 字节,所以老的 grub4dos 0.4.3 不认识,也就无法找到其中的 menu.lst 和 linux 内核,因而无法启动。
8.10 menu.lst 中新的 uuid 命令倒是在绝大多数情况下完全不会影响 grub4dos 引导 ubuntu,因为 grub4dos 会忽略 menu.lst 中它不认识的行,使用了新的 uuid 命令的 menu.lst 在 grub4dos 看来只是一个缺少了指定 root(hdx,y) 行的 menu.lst,而由于 grub4dos 的内置菜单寻找 menu.lst 的过程是这样,
default 0
timeout 1
fallback 1
title find /menu.lst
find --set-root --ignore-floppies /menu.lst
configfile /menu.lst
title find /boot/grub/menu.lst
fallback 2
find --set-root --ignore-floppies /boot/grub/menu.lst
configfile /boot/grub/menu.lst
title find /grub/menu.lst
fallback 3
find --set-root --ignore-floppies /grub/menu.lst
configfile /grub/menu.lst
...
所以当 ubuntu 的 menu.lst 没有显式地指定 root (hdx,y) 时,从 grub4dos 内置菜单传递过来的 root 值=(找到并使用的 menu.lst 所在分区)
恰恰是正确的,除非你画蛇添足地把 menu.lst 拷贝到 windows 分区。