提示五:grldr程序内置的启动菜单menu.lst的内容如下:
default 0
timeout 0
title Windows Vista
acpi
fallback 1
find --set-root /bootmgr
chainloader /bootmgr
title Windows NT/2000/XP
fallback 2
find --set-root /ntldr
chainloader /ntldr
title Enter Command Line
pause Boot failed! Press any key to enter command line.
commandline
注:以上程序会查找安装到硬盘中的第一个winvista/win2008/win7系统,若硬盘中安装有winvista/win2008/win7中的两个或三个系统,只能启动硬盘中的第一个winvista/win2008/win7系统,而要将find --set-root /bootmgr一句更改为rootnoverify (hd0,x),x为某一winvista/win2008/win7系统所在的硬盘分区编号。再将此程序内置到grldr中即可。
第三部分 启动系统
一、用grub4dos启动管理器启动系统
1、msdos+grub.exe引导方式
硬盘主引导记录MBR:windows nt 5.x;
启动分区(grub4dos等启动管理器所在分区,下同):主分区、非隐藏、激活、为FAT32格式,分区引导记录pbr为msdos;
分区根目录下须有io.sys、msdos.sys、command.com、config.sys、grub.exe(须将menu.lst内置入其中,grub.exe可改名)五个文件。
其中,config.sys内容为一行:
DEVICE=grub.exe
或install=grub.exe
或shell=grub.exe
可用grubmenu import grub.exe menu.lst将菜单内置入grub.exe中。也可用其他工具将菜单内置。
menu.lst菜单内容如下(不隐藏分区):
title Microsoft windows XP
rootnoverify (hd0,5)
chainloader /ntldr
#或用以下两句,同样能启动,且通用性好。但因要查找ntldr文件,要多花一点的时间。
#find --set-root --ignore-floppies --ignore-cd /ntldr
#chainloader /ntldr
title Microsoft windows vista
rootnoverify (hd0,6)
chainloader +1
title Microsoft windows 7
rootnoverify (hd0,7)
chainloader +1
title Microsoft windows server 2008
rootnoverify (hd0,8)
chainloader +1
title Microsoft windows server 2003
rootnoverify (hd0,9)
chainloader /ntldr
说明一:
以上系统,不需执行rootnoverify (hd0,x)(x=5、6、7、8、9),而只执行chainloader (hd0,x)+1(x=5、6、7、8、9),调用系统所在分区(主分区或逻辑分区)的引导记录PBR进行启动。对于winxp/win2003系统,可执行chainloader /ntldr或chainloader +1。对于采取类grldr方式激活的winvista/win2008/win7系统,只能执行chainloader +1,以调用grldr以模拟品牌机BIOS,然后启动系统;若执行chainloader /bootmgr,将直接启动而不能激活。
说明二:
对winvista/win2008/win7,可用以下命令来启动,通用性好,且能启动第一或第二硬盘中的WinVista/win2008/Win7系统,即:
title 启动首先找到的任一硬盘上的WinVista/win2008/Win7
find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader +1
但若只用:
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /bootmgr
以上两句绕过了运行分区引导记录PBR和执行grldr,未能模拟品牌机BIOS,使启动后的winvista/win2008/win7系统变为非激活状态。
说明三:
在同一电脑的一个或多个硬盘中,装有两个或以上的winvista/win2008/win7系统时,处在同一硬盘靠后分区的系统,或处在在BIOS排列靠后的硬盘上的系统,系统所在分区中的grldr中内置的菜单要作如下更改后再内置到grldr中才可正常启动,否则将只启动首先找到的系统。
即将上面的grldr菜单,将find --set-root /bootmgr这一句,更改为rootnoverify (hd0,x)(系统在不同的硬盘或分区,此处作相应更改)。
说明四:
启动第一或第二硬盘中的WinNT/2000/XP/2003系统的通用启动命令如下:
title 启动首先找到的任一硬盘上的WinNT/2000/XP/2003
find --set-root --ignore-floppies --ignore-cd /ntldr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr
chainloader /ntldr
说明五:
对克隆到其他主分区或逻辑分区或第二硬盘的WinNT/2000/XP,用chainloader /ntldr不能启动时,要先用bootice等软件将其克隆到的分区的引导记录重写为NTLDR型(可能克隆后的分区引导记录不能启动),再用chainloader +1命令启动即可。
2、GRUB4DOS安装在MBR引导方式
硬盘记引导记录MBR:GRUB4DOS
启动分区:主分区或逻辑分区、非隐藏或隐藏、激活或非激活、FAT32或NTFS格式,分区引导记录pbr:任意。
分区根目录下须有grldr(menu.lst内置入,安装时grldr可改名)文件。
menu.lst菜单内容如下(用GRUB4DOS的功能相互隐藏系统分区):
title Microsoft windows XP
unhide (hd0,5)
hide (hd0,6)
hide (hd0,7)
hide (hd0,8)
hide (hd0,9)
chainloader (hd0,5)+1
title Microsoft windows vista
hide (hd0,5)
unhide (hd0,6)
hide (hd0,7)
hide (hd0,8)
hide (hd0,9)
chainloader (hd0,6)+1
title Microsoft windows 7
hide (hd0,5)
hide (hd0,6)
unhide (hd0,7)
hide (hd0,8)
hide (hd0,9)
chainloader (hd0,7)+1
title Microsoft windows server 2008
hide (hd0,5)
hide (hd0,6)
hide (hd0,7)
unhide (hd0,8)
hide (hd0,9)
chainloader (hd0,8)+1
title Microsoft windows server 2003
hide (hd0,5)
hide (hd0,6)
hide (hd0,7)
hide (hd0,8)
unhide (hd0,9)
chainloader (hd0,9)+1
3、GRUB4DOS安装在启动分区引导方式
硬盘记引导记录MBR:windows nt 5.x或windows nt 6.x
启动分区(假设为第3主分区):激活主分区、非隐藏或隐藏、FAT32或NTFS格式,分区引导记录pbr:grldr。
分区根目录下须有grldr(menu.lst内置入,安装时grldr可改名)文件。
奇怪的是,我进PE用WINPM看分区情况依次是: 主分区(win7,活动,显现),主分区(winxp,活动,隐藏),扩展分区里面分两个盘符,这样按说一共是五个分区(扩展也算一个);而在Grub的显示里,一共是六个分区
Try (hd0,0): NTFS5: No grldr
Try (hd0,1): Extended:
Try (hd0,2): NTFS5: No grldr
Try (hd0,3): invalid or null
Try (hd0,4): NTFS5: No grldr
Try (hd0,5): Extended:
Try (hd0,5): NTFS5: No grldr
(hd0,0)应该是win7,(hd0,2)应该是winxp,(hd0,4)和5应该是扩展分区的两个逻辑盘。我不明白的是扩展分区为什么是(hd0,1)【不是跟隐藏与否无关吗?】,同时这个(hd0,3)又是什么?作者: mrfox 时间: 2010-8-26 12:20
还有个问题,我在本坛下了个深度GRUB4DOS菜单编辑器,用它来改menu.lst,把前面两段改成了这样
title find and load NTLDR of Windows NT/2K/XP
fallback 1
hide(hd0,0)
unhide(hd0,2)
makeactive
find --set-root --ignore-floppies /ntldr
chainloader /ntldr
savedefault --wait=2
title find and load BOOTMGR of Windows VISTA
fallback 2
hide(hd0,2)
unhide(hd0,0)
makeactive
find --set-root --ignore-floppies /bootmgr
chainloader /bootmgr
savedefault --wait=2