分享

[原创]我的单硬盘多系统的安装、激活及启动问题_多种实现方法_附重建BCD脚本 - Win...

 冰火S 2011-02-23
下面以第一个主分区(hd0,0)为安装操作系统的测试分区,工作数据(含下载软件、我的文档等)装在第二主分区(hd0,1),将grub4dos等启动管理器(含winpe)及多系统的克隆备份装在第三个主分区(hd0,3)或第一个逻辑分区(hd0,4),winxp、winvista、win7、win2008、win2003分别安装在第二个逻辑分区(hd0,5)、第三个逻辑分区(hd0,6)、第四个逻辑分区(hd0,7)、第五个逻辑分区(hd0,8)、六个逻辑分区(hd0,9)为例,进行介绍。通过该法,可将克隆版或安装版的winxp/win2003/winvista/win7/win2008系统,安装到硬盘的任一主分区或任一逻辑分区中正常运行。
第一部分 安装
一、将系统安装或克隆到硬盘的第一主分区中
1、若用原版安装盘进行安装
若无光驱,用WINPE启动系统,用其虚拟光驱软件加载iso文件进行安装与此相似。对winvista、win7、win2008的安装,最好用winpe带的nt6.x安装器进行安装。
安装前,切记要先做好以下工作:一是将要安装到的主分区格式化,二是将要安装到的主分区所在硬盘置为第一硬盘(即hd0),并将该分区调为活动分区,且将该分区的盘符调为C:否则,安装后,该系统的分区引导记录在另一硬盘,或在同一硬盘的活动分区,而系统在本硬盘或另一硬盘的非活动分区,将导致安装后的系统所在的盘符不为C:(若安装时系统要安装到的盘符为E:,则安装后系统的盘符也为E:),且克隆系统所在分区时,整个系统克隆不完整。系统全部安装完成后,一般将其克隆到grub4dos所在的分区的某个目录如ghost11下。
注意:不能直接将系统安装到逻辑分区,因这样安装,将使该系统的分区引导记录在主分区的活动分区中,系统在逻辑分区中,且安装时将向活动主分区写入部分系统文件,把系统所在的分区克隆成文件时,不能完整克隆(因未包含分区引导记录及写入活动主分区的部分系统文件),该系统就不能在单独的分区中运行。
**提示:若电脑是以活动主分区用GRUB4DOS、或MSDOS+GRUB4DOS、或SYSLINUX+GRUB4DOS、XORLDR+GRUB4DOS或SYSLINUX方式启动系统后,所要安装到的分区不能将其盘符置为C:,可以安装GRUB4DOS以硬盘主引导记录MBR方式启动,并将要安装到的主分区置为活动主分区后,再启动WINPE系统,该活动主分区的盘符即变为C:。
2、若用系统克隆盘进行克隆
克隆时,可直接克隆至某一主分区中(不能直接克隆至逻辑分区中,因这样不能启动)。
克隆前,若要克隆至的分区盘符为C:,须将其他主分区置为活动分区后,重启WINPE系统,该活动主分区的盘符即变为C:,要克隆至的分区盘符变为非C:,此时即可克隆。
完成克隆启动系统前,切记要先做好两件事:一是用分区软件或bootice软件将硬盘的主引导记录MBR更改为微软式的,一般选windows nt 5.x即MSDOS/WIN9X/winxp/winvista通用的MBR,即让MBR只含直接启动活动分区的引导程序,而不含启动其他程序的引导程序。二是将系统克隆到的主分区调为活动分区。系统全部安装完成后,一般将其克隆到grub4dos所在的分区的某个目录下。
二、将安装好的系统克隆到硬盘的逻辑分区中
1、克隆到同一硬盘。用克隆到grub4dos所在的分区的某个目录下的系统克隆文件,无论是将其克隆到其他主分区中,还是克隆到逻辑分区中,克隆软件都还将自动完成以下两项工作:一是更改boot.ini等系统文件的内容,使其能在新的分区运行;二是克隆系统文件.gho包中含有原分区的分区引导记录,克隆到其他主分区或逻辑分区时,都将在新的分区创建引导分区,并将包中引导程序复制到该引导分区中,但不将该引导分区中的引导程序指向新分区中的系统文件。在一中2步中克隆系统时,也会完成以上两项工作。
2、克隆到第二硬盘。如1中克隆到第二硬盘后,在不交换硬盘接口(即不动硬件)的情况下,不论用第一硬盘还是用第二硬盘启动在第二硬盘的系统,只要用grub4dos的map命令软交换硬盘,即可正常启动该系统。启动该系统的方法详见下面之“用grub4dos启动系统”部分。
三、系统安装、克隆的补充说明
1、系统(特别是对win2003/2008等服务器版系统)克隆到逻辑分区后,须用bootice软件对克隆到的分区,重写该分区的引导扇区为ntldr型或bootmgr型(因winvista及以后的系统均要激活,一般均写为ntldr型)。
2、将克隆版的win2003/2008服务器版安装后,克隆到其他分区并重写该分区的引导扇区后,能启动,但启动到登录界面时,始终无法登录。解决办法是:用原安装版安装好后,再克隆到其他分区,即可正常启动。
3、在笔记本电脑上用克隆版系统克隆安装到第一个主分区,能正常启动,但克隆到其他分区,却不能正常启动。解决办法是:用原安装版安装好后,再克隆到其他分区,即可正常启动。
四、对部分从网上下载的纯净克隆版系统可如下安装
1、将克隆版直接克隆至逻辑分区。克隆完后,不立即启动,先用bootice软件更改硬盘主引导记录,及更改系统克隆到的逻辑分区的启动记录;再编辑grub4dos启动菜单,不直接启动系统,而用grub4dos启动菜单启动该系统。
2、启动系统,继续进行该克隆版系统的恢复工作,待系统第一次重启时,不要立即进入该系统,而是进入winpe或另一系统,将该克隆版系统在激活主分区生成的启动器文件(有多个)全部删除,再用bootice软件更改该系统的逻辑分区的启动记录,再启动进入该系统。若不作此步,系统就不能将其所在的逻辑分区变为C:盘,而是变为D:、E:等其他盘符。对某些系统,应每次重启时,均重复此步,直至完成下一步为上。
3、当该系统能进入桌面时,先不安装任何驱动程序,而是先看系统所在的逻辑分区是否为C:盘,若为C:盘,则不再重复上步。为避免安装完驱动后,因驱动与硬件不兼容引起系统启动蓝屏,要立即重启进入winpe或另一系统,对其进行克隆备份后,再进行下一步。
4、安装驱动时,不要执行为某类系统定制的setup程序,因这可能会引起系统重启后蓝屏。而是进入设备管理器,对所有要安装驱动的硬件,逐一通过其属性更新驱动程序的方式,逐一安装驱动安装。
5、安装完应用软件后再进行一次克隆备份。
6、此法的缺点是:安装步骤较繁杂。优点是:一是不需要单独的主分区进行安装;二是能解决部分系统在主分区安装完后克隆至逻辑分区不能启动的问题。

第二部分 系统激活(winxp/win2003无激活问题)
  一、品牌机的激活
因品牌机的BIOS里有品牌机的信息,因微软为预装了OEM版本的winvista/win2008/win7系统的部分品牌机,设定了免激活功能。因此,winvista/win2008/win7在品牌机上安装好后,一般是自动激活的,且在C:盘根目录将此品牌机的OEM信息写入OEMXX(XX为任意字符)文件中,在操作系统中,此文件有磁盘保护功能,不能更名、复制、删除和更改属性。要想将此winvista/win2008/win7系统克隆到其他分区,只需直接克隆后启动之即可。若不能启动,虽用bootice软件更改克隆至的分区的启动扇区为bootmgr类型(不能更改为NTLDR类型)后能启动,但会变为未激活状态,此时,只能用非品牌机的方法激活。
二、非品牌机(含品牌机安装系统未自动激活的,也可如此)的激活
winvista/win2008/win7的激活机理是:因微软为预装了OEM版本的winvista/win2008/win7系统的部分品牌机,设定了免激活功能。winvista/win2008/win7的免激活工具则采取硬刷(将主板BIOS硬刷为OEM品牌机BIOS,有一定危险性),或软刷(改MBR或PBR+grldr,模拟品牌机BIOS,无危险),达到激活winvista/win2008/win7的目的。
软刷及启动过程是:将grub4dos的启动程序grldr进行修改,在其中包含模拟品牌机BIOS的信息,并对winvista/win2008/win7的引导扇区PBR的引导程序进行修改,将原启动指向bootmgr(winvista/win2008/win7的启动管理器程序,非它们的引导程序,它们的引导程序是windows\system32\winload.exe)改为指向grldr,引导扇区中的其他程序和信息未被修改(仍为与winvista/win2008/win7兼容的分区引导记录,该扇区中未含模拟品牌机BIOS的信息和程序)。启动时,调用winvista/win2008/win7的引导扇区->执行grldr中的模拟品牌机BIOS信息->由grldr调用内置的启动菜单menu.lst启动winvista/win2008/win7。当然,可用winnt/2000/xp/2003系统的NTLDR启动程序用boot.ini直接调用grldr启动winvista/win2008/win7系统,或用syslinux直接调用grldr启动winvista/win2008/win7系统。但不能由MSDOS调用grldr(MSDOS只能调用grub.exe这一DOS程序);也可用winvista/win2008/win7的bcd或通过boot.ini调用grldr.mbr(该文件为grldr写入硬盘主引导记录MBR的映像文件),再自动调用grldr文件。

提示一:若自己手里有winvista/win2008/win7激活后生成的grldr文件,可不使用winvista/win2008/win7的激活工具,而用grub4dos的安装工具grubinst_gui以安装到硬盘分区的方式安装(安装到系统所在分区,但为与winnt/2000/xp/2003系统兼容的分区引导记录,但不影响winvista/win2008/win7的启动,也可bootice软件),可同样达到使系统所在的分区的引导扇区不调用bootmgr而调用grldr的目的。同时,因在安装时在“启动文件”处指定不同的启动文件名,还可达到更改grldr名称的目的。

提示二:winvista/win2008/win7三个系统写入grldr中的模拟品牌机BIOS信息的执行程序是不同的,因此,三个系统的激活工具是不能互用的,即三个系统生成的grldr是不同的(但grldr中内置的启动菜单menu.lst的内容是相同的)。当然,更不能用grub4dos的grldr程序代替之。

提示三:早期的免激活工具,不是修改系统所在分区的引导记录PBR,而是修改硬盘MBR,由MBR调用系统所在分区的grldr程序,来启动系统。
提示四:若将winvista/win2008/win7安装好后,其是用软激活方式激活的系统(即用grldr激活),克隆到其他分区时,一般要用bootice软件重写系统克隆到的分区的分区引导扇区的信息。写时,不要写成bootmgr引导程序,因用其引导后系统不能激活;而要写成ntldr方式,且要将写入引导扇区中的引导程序名更名为grldr(有的激活程序也将其更名,如SKLDR)即可引导系统并能激活。

提示五: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可改名)文件。

若GRUB4DOS安装在逻辑分区,可采用mbldr+grub4dos引导方式,即逻辑分区安装grldr,MBR用mbldr仅配置启动分区(grub4dos所在分区)为单启动菜单(延时1秒、不勾选“引导时隐藏其他主分区”和“引导的主分区标记为活动”),保存mbldr为mbr_mbldr.bin,再用bootice选该文件恢复MBR(勾选“保留磁盘签名和分区表不变”)。其他相同。

menu.lst菜单内容如下(用xorldr_0.36相互隐藏系统分区):
title Microsoft windows XP
chainloader /boot/xor_winxp.bin
title Microsoft windows vista
chainloader /boot/xor_vista.bin
title Microsoft windows 7
chainloader /boot/xor_win7.bin
title Microsoft windows server 2008
chainloader /boot/xor_win2008.bin
title Microsoft windows server 2003
chainloader /boot/xor_win2003.bin
注:xor_winxp.bin等为用xorldr_0.36生成的启动文件(可置于某目录如\boot\下),用之启动系统,且可相互隐藏系统分区为EISA配置的隐藏分区。方法如下:用xorldr_0.36及以后版本(之前的版本不能)做winxp的单一启动菜单(隐藏菜单,超时启动,设为零秒;从操作系统所在的系统分区引导扇区启动;且定义隐藏分区3、6、7、8、9,不能隐藏要启动的系统所在的分区),保存启动配置文件为xor_winxp.bin。用同样方法做出其他系统的启动配置文件。
4、syslinux+grub4dos引导方式
硬盘记引导记录MBR:windows nt 5.x、PLoP Boot Manager或syslinux;
启动分区:激活主分区、非隐藏或隐藏、FAT32格式,分区引导记录pbr:syslinux。
分区根目录下无文件,只需建一目录boot(可用attrib +h +s +r boot /s /d命令隐藏该目录)即可。
方法如下:
①在boot目录下建syslinux目录,将syslinux带的syslinux.exe文件及grub4dos带的ldntldr文件拷入该目录。
②执行syslinux -sfmar -d /boot/syslinux f:  (f:为启动分区的盘符)
将把MBR、PRB均设定为syslinux类型,且在\Boot\syslinux\目录下生成启动文件ldlinux.sys,若不加-m参数,只把PRB均设定为syslinux类型,则MBR可设定为windows nt 5.x或PLoP Boot Manager类型。
其中,-a表示在启动时激活该分区(但并不是在windows的DOS命令窗口执行该命令后,该分区立即变为激活分区);
     -f表示force(强制)写入,这在写入本地磁盘时必须使用,无论是写MBR还是写PBR都需要;
     -m是向U盘或硬盘的主引导扇区写入主引导记录mbr;
     -r是向U盘或硬盘的分区引导扇区写入引导记录pbr;
     -s表示使用类似安全模式的代码,可以获得更佳的兼容性;
     -d /boot/syslinux是把命令生成的启动系统文件ldlinux.sys放到/boot/syslinux目录,系统启动时从该目录寻找引导文件ldlinux.sys,及配置文件syslinux.cfg。注意:只可将ldlinux.sys及syslinux.cfg等文件放到根目录、Boot 文件夹、Boot\syslinux文件夹,除此之外,则不能放于其他任何文件夹。
注:syslinux不能安装在非FAT32分区,也不能安装在逻辑分区。
③在\Boot\syslinux\目录下编辑一个文本文件syslinux.cfg,内容如下:
timeout 0
default grldr
LABEL grldr
MENU LABEL [^1] Boot grub4dos menu
kernel ldntldr
append initrd=/boot/grub4dos/grldrtzy
④在\boot\目录下建一目录grub4dos,将grldr改名为grldrtzy(可随意)并将menu.lst(其内容见上)内置入后放在grub4dos目录下。启动grub4dos菜单所需的其他文档如winpe.iso等也放在grub4dos目录下。
⑤另在根目录下建一ghost11目录,用grub4dos菜单启动winpe(加密码)后,克隆备份以上所有系统到该目录下,也可在该目录下还原以上系统。用grub4dos启动winpe的menu.lst菜单内容如下:
title Win2003PE全内置维护系统(45M)
password --md5 $1$jZO0$hCfNrLXt4zVx56gIJZrRb/
pause --wait=0 Please Wait....
map --mem /boot/grub4dos/03pe_45m.iso (0xFF)
map --hook
chainloader (0xFF)
⑥MBR设定为PLoP Boot Manager(简称plpbt)类型的方法:用bootice软件将硬盘主引导记录MBR设定为该类型,重启动后,在plpbt的设定中,只设启动分区为grub4dos所在的主分区,其他分区项全部删除,且设定等待时间为1秒和不显示菜单即可。遗憾的是:截止plpbt-5.0.10版本,尚不能将等待时间设为零秒,关键是不能用之启动逻辑分区的启动管理器和操作系统。
5、xorldr+grub4dos引导方式
硬盘记引导记录MBR:xorldr;
启动分区:主分区或逻辑分区、激活或非激活、非隐藏或隐藏、FAT32或NTFS格式,分区引导记录pbr:任意。
分区根目录下无文件,只需建一目录如grub(将grub4dos启动菜单的所有支持文件拷入该目录下)。
方法如下:做grub4dos的单一启动菜单,即隐藏菜单,超时启动,设为零秒;从文件启动,选\grub\grldr,选grub4dos所在的分区,选系统类型为grldr;然后写入磁盘即可。
此方式的优点是:可选NTFS类型的逻辑分区为启动分区,用bootice将分区隐藏为?EISA配置的隐藏逻辑分区;该分区根目录下无文件,仅有两个已隐藏的目录grub(存放grub4dos启动菜单的支持文件,含winpe)、ghost11(存放以上所有操作系统的克隆备份)。较为安全,推荐使用。
二、用NTLDR启动管理器启动系统
1、用分区软件、bootice软件或操作系统的“磁盘管理”将启动分区(推荐为NTFS文件类型)激活为活动主分区。若选启动分区为逻辑分区,可参照xorldr+grub4dos引导方式,采用xorldr+ntldr引导方式实现。也可采用mbldr+ntldr引导方式。其余操作完全相同。
2、安装分区启动记录
①用grub4dos的grubinst_gui.exe工具(使用时,需用其目录下的附加文件,因此需在其所在目录下运行),运行时,在其中指定启动文件名为NTLDR,并选分区为该活动分区进行安装。
②或用bootsect /nt52 d:命令,此命令在分区d:上生成与NT/2000/XP/2003系统兼容的启动NTLDR管理器的启动扇区记录。bootsect命令由winvista/win2008/win7安装光盘自带。
③或用bootice软件,在所在分区生成NTLDR引导程序。
3、将windows2003(不用winxp的,因这样兼容性好)的NTLDR启动管理器所必需的4个文件,即ntldr、NTDETECT.COM、bootfont.bin、boot.ini,复制到活动分区的根目录下。
4、若需启动MSDOS,启动分区必须为FAT32格式,且其前必须无FAT16、FAT32分区(若有,启动前须用grub4dos或其他工具将其隐藏),将MSDOS启动文件io.sys、msdos.sys、command.com该分区根目录下(启动MSDOS后,DOS的这3个启动文件必须存放在盘符为c:根目录才正常,而MSDOS启动后,会将第一个未隐藏的FAT32主分区作为c:,若该分区是非激活分区,启动也不正常。即把这3个文件复制到第一个未隐藏的FAT32主分区根目录,且把该分区激活为活动分区,启动才正常)。由此可见,MSDOS启动的条件较苛刻,因此一般不采用此法启动MSDOS。而采用调用msdos.ima包(该包中仅含io.sys、msdos.sys、command.com三个文件)的方式启动MSDOS,启动后,模拟为A:,适应性好。
5、编制启动MSDOS.ima(可在非激活主分区或逻辑主分区启动,可单独内置后参照下法改名为grdos)、启动unlix或其他操作系统、调用IMA或ISO工具包、从光盘或USB盘启动等的GRB4DOS工具包的菜单menu.lst,并将其内置到grldr程序中,拷入启动盘根目录下(注:只能在根目录,不能在某一子目录下)。
6、对于采取类grldr激活的WinVista、win7、win2008系统,将其激活文件grldr程序更名后拷入启动盘根目录下(注:只能在根目录,不能在某一子目录下)。
提示:grldr程序执行时,先执行其内部代码,再调用与grldr同名的文件包含的内置菜单(若找不到grldr的同名文件,将在硬盘根目录查找同名的grldr文件并执行),因此,grldr不要改名(包括生成光盘ISO加载启动文件时,grldr只能更名为grldr.bin或grldr.bif,不能更名为grldrxxx.bin或grldrxxx.bif;但syslinux调用grldr文件时,因只需调用其内置的菜单,因此grldr可以更名)。如上面一样确需更名时,须用WinHex等工具查找grldr的内部代码,将grldr名称替换为与外部文件名相同,才能正常执行。安全的替换方法是:新名也取为5个字符,查找GRLDR全部替换为5个字符新名的大字字符(如GRDOS),即GRLDR大写替换为新名大写(共6处),同时,grldr小写替换为新名小写(共2处)。
注:通过Windows 7和Windows Vista激活后生成的grldr改名的gwin7、grvsa,不只替换8次(因其中存有模拟品牌机BIOS信息),也要分大小写全部替换。
7、对于采取非类grldr激活(即oem激活)的WinVista、win7、win2008系统,须先保存其分区引导记录到文件
假如在winxp中,winxp、winvista、win7、win2008、win2003的分区盘符分别为c:、e:、f:、g:、h:,用dsptw 0 /find:all命令查看0硬盘的分区信息,其分区编号分别为0:4、0:5、0:6、0:7、0:8。
①用DISKRW工具保存以上几个系统的分区引导记录到文件的命令如下(本项操作在winxp下进行):
DISKRW c: 0 1 /s winxp.pbr
DISKRW e: 0 1 /s vista.pbr
DISKRW f: 0 1 /s win7.pbr
DISKRW g: 0 1 /s w2008.pbr
DISKRW h: 0 1 /s w2003.pbr
注意:不能用DISKRW 0 0 1 /s sys.pbr,此命令只能将0硬盘的主引导记录mbr写到sys.pbr文件中。
②或用DSPTW工具保存以上几个系统的分区引导记录到文件的命令如下(本项操作在winxp下进行):
DSPTW c: 0 1 /s winxp.pbr /y
DSPTW e: 0 1 /s vista.pbr /y
DSPTW f: 0 1 /s win7.pbr /y
DSPTW g: 0 1 /s w2008.pbr /y
DSPTW h: 0 1 /s w2003.pbr /y
或  
DSPTW 0:4 0 1 /s winxp.pbr /y
DSPTW 0:5 0 1 /s vista.pbr /y
DSPTW 0:6 0 1 /s win7.pbr /y
DSPTW 0:7 0 1 /s w2008.pbr /y
DSPTW 0:8 0 1 /s w2003.pbr /y
(以上n:m的分区编号方法与grub4dos对硬盘分区编号的方法不同)
注意:不能用DSPTW 0 0 1 /s sys.pbr /y,此命令只能将0硬盘的主引导记录mbr写到sys.pbr文件中。
      也不能用DSPTW 0 /S sys.pbr /DBR /Y,此命令只能将0硬盘的活动主分区引导记录pbr写到sys.pbr文件中。

③用grub4dos的DD命令(本项操作在grub4dos命令行下进行)
先用文本编辑器创建大小为512byte的文件winxp.pbr、vista.pbr、win7.pbr、w2008.pbr、w2003.pbr(因dd命令不能创建文件)
再用如下命令保存分区引导记录到文件:
dd if=(hd0,5)+1 of=()/winxp.pbr
dd if=(hd0,6)+1 of=()/vista.pbr
dd if=(hd0,7)+1 of=()/win7.pbr
dd if=(hd0,8)+1 of=()/w2008.pbr
dd if=(hd0,9)+1 of=()/w2003.pbr
④用bootice工具直接保存以上分区的引导记录分别到文件winxp.pbr、vista.pbr、win7.pbr、w2008.pbr、w2003.pbr,此法更方便。
将用以上方法之一创建的winxp.pbr、vista.pbr、win7.pbr、w2008.pbr、w2003.pbr文件复制启动分区根目录。
8、编辑boot.ini的内容如下:
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(5)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(5)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /detecthal
multi(0)disk(0)rdisk(0)partition(9)\WINDOWS="Windows Server 2003, Standard" /noexecute=optout /fastdetect
c:\grvsa="Windows Vista"
c:\gwin7="Windows 7"
c:\g2008="Windows 2008"
c:\grdos="MSDOS 7.10" (注:不能直接写为c:\io.sys=MSDOS 7.10)
c:\grldr="启动grub4dos工具包"

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(5)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(5)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /detecthal
multi(0)disk(0)rdisk(0)partition(9)\WINDOWS="Windows Server 2003, Standard" /noexecute=optout /fastdetect
c:\vista.pbr="Windows Vista"
c:\win7.pbr="Windows 7"
c:\w2008.pbr="Windows 2008"
c:\grdos="MSDOS 7.10" (注:不能直接写为c:\io.sys=MSDOS 7.10)
c:\grldr="启动grub4dos工具包"

[boot loader]
timeout=10
default=c:\winxp.pbr
[operating systems]
c:\winxp.pbr="Windows XP"
c:\vista.pbr="Windows Vista"
c:\win7.pbr="Windows 7"
c:\w2008.pbr="Windows 2008"
c:\w2003.pbr="Windows 2003"
c:\grdos="MSDOS 7.10" (注:不能直接写为c:\io.sys=MSDOS 7.10)
c:\grldr="启动grub4dos工具包"
提示一:对于安装在硬盘上的NT/2000/XP/2003系统,只需直接用以上的multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /detecthal命令行来启动系统(若删除此行,NTLDR启动管理器将自动出现一行“Microsoft Windows(默认)”来启动NT/2000/XP/2003系统),而不需用c:\winxp.pbr="Windows xp"方式来启动NT/2000/XP/2003系统。
提示二:要注意multi(0)disk(0)rdisk(0)partition(x)\WINDOWS=后winxp与win2003参数的不同。

但boot.ini不支持如下调用:
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(9)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(5)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(9)\WINDOWS="Windows Server 2003, Standard" /noexecute=optout /fastdetect
c:\boot\xor_vista.bin="windows vista"
c:\boot\xor_win7.bin="windows 7"
c:\boot\xor_win2008.bin="windows 2008"
c:\boot\xor_winxp.bin="winxp -2"
c:\boot\xor_win2003.bin="windows 2003-2"
c:\grldr="grub4dos menu"
即boot.ini不能调用xorldr_0.36生成的xor_vista.bin等启动文件。

三、用bootmgr启动管理器启动系统
(一)准备工作
1、将启动分区(推荐为NTFS文件类型)激活为活动主分区。若选启动分区为逻辑分区,可参照xorldr+grub4dos引导方式,采用xorldr+bootmgr引导方式实现。也可采用mbldr+bootmgr引导方式。其余操作完全相同。
2、安装分区启动记录。假设此活动分区现盘符为d:,用bootsect /nt60 d:命令,或用bootice软件,在分区d:上生成与winvista/win2008/win7系统兼容的启动bootmgr管理器的启动扇区记录。注:不能用grubinst_gui工具按类似的方法,即用grubinst_gui工具指定启动文件名bootmgr安装启动扇区记录,这样生成的启动扇区记录与NT/2000/XP/2003系统兼容,而与winvista/win2008/win7系统不兼容,因此,不能启动bootmgr管理器。
3、将win7系统(不用winvista/win2008系统的,这样兼容性好)自带的bootmgr启动管理器,即bootmgr文件、boot目录(只需fonts目录、zh-cn目录,及bcd、boot.sdi、memtest.exe、bootsect.exe、bootfix.bin等文件即可),复制到启动分区根目录下。若要采用下面的boot.ini引导方式,只能复制winvista/win2008/win7系统安装光盘中带的boot目录(带有启动光盘安装时的PE系统的BCD配置数据文件)与bootmgr、boot.ini两个文件,不能复制在硬盘中已安装好的winvista/win2008/win7系统中的boot目录与这两个文件,否则可能无法启动。
4、创建grub4dos工具包及msdos启动包功能模块。用与NTLDR启动管理器启动系统中同样的方法创建这些功能模块,如启动DOS的功能模块grdos,因winvista/win2008/win7的bootmgr不能直接启动grdos,须将grdos及grub4dos的grldr.mbr复制到启动分区根目录,并将其更名为grdos.mbr,但其仍将调用根目录下的grldr,用与NTLDR启动管理器启动系统中同样的方法,将grdos.mbr内部的grldr分大小写替换为grdos后保存。并将启动grub4dos工具包的grldr.mbr拷入启动分区根目录下。
(二)boot.ini引导方式
1、与NTLDR启动管理器启动系统中同样的方法,保存winxp、win2003系统的分区引导记录到文件winxp.pbr、w2003.pbr,但不保存winvista/win2008/win7系统的分区引导记录到文件vista.pbr、win7.pbr、w2008.pbr(原因见以下说明)。
2、在启动盘根目录编制boot.ini文件的内容如下:
对winvista/win2008/win7系统,仍支持boot.ini的引导方式,但忽略对XP、win2003启动的multi(0)disk(0)rdisk(0)partition(5)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /detecthal等句设置(要按下法启动XP、win2003系统)。且boot.ini只能引导XP、win2003等老系统及grub4dos等实模式系统。若要引导winvista/win2008/win7系统,还需通过BCD引导方式进行。
[boot loader]
timeout=10
[operating systems]
c:\winxp.pbr="windows xp"
c:\w2003.pbr="windows 2003"
c:\grdos.mbr="MSDOS 7.10"
c:\grldr="启动grub4dos工具包"
提示一:如在boot.ini中,用c:\win7.pbr="windows 7"等句调用winvista/WIN7/win2008系统,将会重新返回此启动菜单,即无法启动winvista/WIN7/win2008系统。
提示二:先DSPTW 0:X 0 1 /s linux.pbr /y,再在boot.ini中用c:\linux.pbr="linux x.x"句可启动安装版安装在硬盘中的unlix系统,但若是克隆在硬盘中的linux系统,上法不能启动。
提示三:但此法有两点不足:一是启动菜单为英文,二是bcd文件带的启动光盘上的PE以安装系统的默认菜单,将出现在启动菜单项中(但不能使用,但不影响其他菜单项的使用)。由于有此两项不足,一般不采用此法。
(三)BCD引导方式
可采用bcdedit命令,或VistaBootPro、Easybcd等软件,配置bcd(启动配置数据)后,启动winvista/WIN7/win2008系统。由于比较复杂,此处不作介绍。

为方便,我编写了一个在BCD中添加winxp/win2003系统、winvista/win7/win2008系统、
win7/win2008r2的VHD系统、grub4dos/win98等实模式系统启动项的脚本,若有需要,请在此
下载 makemybcd及简介.rar (2.86 KB)。bcdedit及bcdtool请到网上下载。

四、用syslinux启动管理器启动系统
(一)创建系统启动盘及复制所需文件
可参照syslinux+grub4dos引导方式进行,此处略。

若要把syslinux装在FAT32格式的逻辑分区中,可采用xorldr+syslinux引导方式即可,即把syslinux的ldlinux.bin文件拷入x:\boot\syslinux目录(syslinux的启动目录)下。安装配置xorldr时,选从文件启动,选\boot\syslinux\ldlinux.bin,选syslinux所在的分区,选系统类型为syslinux;写入磁盘即可。也可采用mbldr+syslinux引导方式。

(二)编辑SYSLINUX.CFG配置文件
1、重启电脑
      LABEL reboot
        MENU LABEL Reboot computer
        kernel REBOOT.C32  
2、启动硬盘主引导记录MBR或分区引导记录PBR以启动系统
调用方法:
kernel CHAIN.C32
append hdx n (注意:hdx与n间是空格,不是逗号)
其中:hdx为hd0(第1硬盘,称0硬盘)、hd1(第2硬盘)....
   n为0:硬盘主引导记录MBR(可省略)
     1-n:硬盘主分区为1-4,逻辑分区为5至....,这与grub4dos对硬盘分区的编号不同(主分区为0-3,逻辑分区为4至....)
如启动第2硬盘MBR:
kernel CHAIN.C32
append hd1 (此句也可append hd1 0)

再如启动第1硬盘6分区(逻辑分区)的操作系统:
kernel CHAIN.C32
append hd0 6
提示一:可在syslinux启动时的提示行boot:输入chain.c32 hd0 6启动(hd0,6)中的操作系统,但如下调用:kernel CHAIN.C32 hd0 6,仅在一些老的syslinux版本可执行,在新的版本无法执行,因此建议不要再采用这种方法调用。

提示二:按照本法,即只用syslinx的单项菜单去启动安装在逻辑分区的操作系统,用户感觉不到启动菜单的存在,因不选择菜单就进入了操作系统,因此,特别推荐此法去启动逻辑分区的操作系统。

提示三:本法不能启动无分区引导记录的操作系统,如部分克隆版的linux系统。

提示四:对于安装在第2硬盘上的操作系统,用本法能启动安装在主分区的vista及以后的操作系统。但启动第2硬盘逻辑分区的操作系统(winxp及winvista),及启动安装在第2硬盘主分区的win2003或以前的操作系统,均未成功。
3、调用硬盘主引导记录MBR文件及分区引导记录PBR文件以启动系统
调用硬盘主引导记录MBR文件:kernel hd0_mbr.bin
调用硬盘分区引导记录PBR文件:kernel winxp.bin
注意:此类文件,由DSPTW、bootice、xorldr等工具生成,其扩展名应取为.bin,否则无法运行。

如(xor_winxp.bin等为xorldr_0.36生成的启动文件):
        LABEL winxp
  MENU LABEL [^1] winxp
  kernel /boot/xor_winxp.bin
LABEL winvista
  MENU LABEL [^2] winvista
  kernel /boot/xor_vista.bin
LABEL win7
  MENU LABEL [^3] win7
  kernel /boot/xor_win7.bin
LABEL win2008
  MENU LABEL [^4] win2008
  kernel /boot/xor_win2008.bin
LABEL win2003
  MENU LABEL [^5] win2003
  kernel /boot/xor_win2003.bin
      LABEL grldr
  MENU LABEL [^6] Boot grub4dos menu
  kernel ldntldr
  append initrd=/boot/grub4dos/grldrtzy
      LABEL reboot
         MENU LABEL [^7] Reboot computer
        kernel REBOOT.C32

4、调用执行dos工具包(*.img或*.ima)
对SysLinux 3.82版的memdisk已经能够自动检测CHS参数,调用方法如下:
LABEL maxdos7
     MENU LABEL maxdos 7.0
        kernel MEMDISK (注:该句为下句中调
        append initrd=/boot/grub4dos/maxdos7.img
对SysLinux 3.82以前的版本,memdisk不能自动检测CHS参数,调用方法如下:
LABEL maxdos7
    MENU LABEL maxdos 7.0
       kernel /boot/syslinux/MEMDISK c=80 h=4 s=36 floppy
       append initrd=/boot/grub4dos/maxdos7.img
     
      (*.img或*.ima包的类型及C/H/S值用GDParam软件获取)   
     
  提示:对于几十兆大小的*.img或*.ima包,由于不能象grub4dos的map -mem命令一样,将其调入内存执行,要求其在介质上的存放空间是连续的,但仍然启动巨慢,或根本不能启动该img或ima包。因此,不建议调用大的img或ima包(建议在grub4dos中用map -mem命令调用)。
5、调用grub4dos实现syslinux无法实现的功能
LABEL boot_grub4dos
  MENU LABEL Boot grub4dos menu
  kernel ldntldr
      # ldntldr由ldntldr.bin换名而来,ldntldr.bin为GRUB4DOS自带的loadbin外置工具,对应NTLDR或GRUB4DOS的系统文件ntldr和grldr
  append initrd=/boot/grub4dos/grldrtzy
  # grldrtzy可改名(原名为grldr),且已内置menu.lst

  对于以下两句:
  kernel ldntldr
       append initrd=/boot/grub4dos/grldrtzy
  可直接将grldrtzy更名为grldrtzy.bin,直接:
  kernel /boot/grub4dos/grldrtzy.bin 进行调用。
  但若直接kernel /boot/grub4dos/grldrtzy则不能调用,因syslinux认为grldrtzy与grldrtzy.bin是不一样的
也可: kernel /boot/grub4dos/grub.exe
          append --config-file="(fd0)/menu.lst"  
          若菜单menu.lst已内置到grub.exe中,则只需: kernel /boot/grub4dos/grub.exe即可调用。
6、启动winpe系统
①先将winpe系统的启动文件和目录(含外置程序目录)复制到目标盘根目录下。
②若winpe系统在当前盘(与启动系统的syslinux在同一盘),按下法调用:
  kernel ldntldr
       append initrd=/dir/setupldr (假设其启动文件为setupldr)
也可:
kernel /dir/setupldr.bin(将setupldr更名为setupldr.bin)
③若winpe系统不在当前盘,按下法:
需用mkimage.exe工具(GRUB4DOS自带的loadbin外置工具中含此工具,用于生成单一的启动文件,并指定默认的驱动器和分区)
若启动usb_zip盘中的winpe:
须mkimage -d (fd0) ldntldr.bin setupldr ldxpefd0.bin (ldntldr.bin在GRUB4DOS自带的loadbin外置工具含有)
直接调用kernel ldxpefd0.bin即可启动。注:(fd0)等价0x00
若启动硬盘(hd0,2)(注:因mkimage是grub4dos带的工具,是第3主分区,非syslinux指的第2主分区)中的winpe:
mkimage -d (hd0),2 ldntldr.bin setupldr ldxphd02.bin
再:kernel ldxphd02.bin,即可启动首硬盘第3主分区的WINPE。
注:(hd0)等价0x80(即十进制:128)
注:本法不能启动逻辑分区中的winpe系统。
7、调用ntldr或bootmgr启动管理器
①启动NT/2000/XP/2003系统的NTLDR启动管理器
将NTLDR、NTDETECT.COM、bootfont.bin、boot.ini四个文件复制到启动syslinux的当前盘根目录下,然后如下调用:
  kernel ldntldr
  append initrd=/ntldr

注:用kernel /ntldr.bin(将ntldr更名为ntldr.bin)不能启动。
      
提示:若对boot.ini文件进行配置(如用WINXP所在硬盘的boot.ini覆盖之),将启动boot.ini配置中指定硬盘中的winxp系统。
②启动winvista/2008/win7系统的bootmgr启动管理器
将winvista/2008/win7系统的bootmgr及boot目录复制到启动syslinux的当前盘根目录下,并配置boot.ini文件,然后如下调用:
  kernel ldntldr
  append initrd=/bootmgr
注:用kernel /bootmgr.bin(将bootmgr更名为bootmgr.bin)不能启动。
     
提示:若配置boot目录下的bcd文件(如用Winvista所在硬盘的bcd覆盖之),将启动bcd配置中指定硬盘中的winvista系统。
8、调用光盘easyboot启动菜单
LABEL ezboot
        MENU LABEL loader easybooot cdrom menu
        kernel (cd)/EZBOOT/LOADER.BIN
  (注:LOADER.BIN为easybooot自带的执行文件)
9、在光盘中调用或返回syslinux
在光盘中用isolinux调用ntldr或grldr后,ntldr(通过boot.ini中的\syslinux.bin="boot syslinux"的此句)、grldr(chainloader /boot/syslinux/syslinux.bin)调用或返回到isolinux中。而通过USB、硬盘调用syslinux后,不能通过此法调用或返回到syslinux中。
五、用xorldr软件启动系统
可用之启动安装在主分区或逻辑分区的WINXP/win2003/winvista/win7/win2008/win2008r2系统,和win98/pwin3.2/msdos(含ucdos)系统,及grub4dos、syslinux、plop boot manager等启动管理器的启动,且可实现多系统分区相互隐藏(EISA配置的隐藏分区),推荐使用。此处不作介绍。
六、用mbldr、lvyanan 1jf9k或plop boot manager引导器启动系统
对mbldr、lvyanan 1jf9k,可推荐使用。对plop boot manager引导器,因要其本身启动后,才使用正常,但若其崩溃或直接以winpe、winxp、winvista等系统启动,不识别其分区信息,可能导致硬盘数据丢失。此处均不作介绍。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多