通过grub4dos引导vista和linux的双系统

机子里以前装的是Win XP和Linux双系统,出于追mm以及紧跟潮流的考虑,我重新格式化装有XP的C盘,并安装了Vista。双系统的引导成了问题,从网上搜索发现,grub4dos也在与时俱进,支持vista的引导。于是我决定通过在Vista下面安装groub4dos引导Linux。

根据grub4dos的教程,我先在命令提示符下运行
bcdedit /create /d "GRUB for DOS" /application bootsector
得到了一个类似{05d33150-3fde-11dc-a457-00021cf82fb0}的id字符串
紧接着运行如下命令,

	bcdedit /set {id} device boot
	bcdedit /set {id} path \grldr.mbr
	bcdedit /displayorder {id} /addlast

其中,{id}就是先前得到的带花括号的id字符串。

然后,将GRLDR.MBR拷贝至Vista系统盘的根目录下,如C:\。同时,也将GRLDR和menu.lst拷到系统盘的根目录下(readme文件里说的是任意FAT16/FAT32/EXT2/NTFS分区的根目录下均可,不过我没来得及尝试)。

需要注意的是,C:\GRLDR文件本来就存在,任意改个名字即可。

然后修改Grub4dos的菜单文件(C:\menu.lst)和配置Windows的系统启动(系统属性 / 高级 / 启动故障和恢复)即可。

附上我的menu.lst文件内容,均可以正常启动:

color black/cyan yellow/cyan
timeout 30
default /default

title Windows Vista
find --set-root /bootmgr
chainloader /bootmgr

title Slackware 12.0
root (hd0,6)
kernel /boot/vmlinuz root=/dev/sda7 ro vga=791

与2k/xp不同的是,先进入grub4dos的界面,然后可进入Vista的引导界面。文件名等种种迹象标明,vista的启动管理器似乎是将grub4dos写在MBR里了。

Update:
某激活软件用的也是grub4dos,进行上面某一项设置的时候可能会导致无法激活。如果是多系统,建议通过Linux将Grub重新写在MBR,再通过Grub引导windows。不推荐使用grub4dos,感觉更混乱。

btw,通过live cd或硬盘进入linux,运行grub进入grub>提示符界面后,可通过如下命令恢复mbr:

grub>root (hd0,3) #指定linux分区所在位置
grub>setup  (hd0) #将grub装到/dev/hda的MBR区。
grub>quit #大功告成,退出grub界面

19 thoughts on “通过grub4dos引导vista和linux的双系统

  1. 今天重装了xp系统,smzz的这篇文章对我恢复GRUB引导有很大帮助。不过这家伙写得太粗糙了,没有排版,也没有介绍相关的背景,一般的人很难通过这篇文章直接解决问题。比如liveCD,一般的人哪知道指的就是ubuntu的liveCD呢?建议改进一下哦。

  2. to fire3:
    vista改动了启动方式,不再使用类似以前xp/2000下的引导文件,当时参照grub4dos的文档一步一步操作,个人感觉确实繁琐一些。不过可以通过linux下的grub引导vista,安全又简单。

    to 王永杰:
    呵呵,主要是太推崇纯文本方式了。写这篇文章时仅仅当成了平常的笔记,下次一定改进。
    btw, Linux LiveCD有很多种,详情参见《使用 Linux LiveCD》

发表评论