|
2#

楼主 |
发表于 2009-4-20 21:46:19
|
只看该作者
二、制作Ghost映像包
我们知道,XP安装方式有三种:从光盘启动安装,在DOS下安装,在WINDOWS下安装。在WINDOWS下安装时,安装程序先把所需的文件复制到硬盘,然后重启机器。在机器重启前,安装XP所需的文件已复制到硬盘,硬件检测还未开始,如果我们这时将安装XP所需的文件打包,然后再恢复到其它机器上,则在其它机器上就可全新安装XP了。下面以联想OEM XP为例说明:
1. 获得全新安装XP所需文件。
启动VM,新建虚拟机,建议虚拟硬盘为8G(小于8G时制作的映像包恢复到大硬盘时可能有问题),IDE模式,安装WINDOWS XP,将联想OEM XP安装光盘或光盘映像连到虚拟机,在命令窗口运行以下命令:
d:\i386\winnt32 /dudisable /s:d:\i386 /unattend:d:\i386\winnt.sif /makelocalsource /noreboot
参数解释:
/dudisable 禁止运行“动态更新”。
/s:d:\i386 指定原文件目录。
/unattend:d:\i386\winnt.sif 指定无人值守安装文件。
/makelocalsource 复制所有文件到硬盘。
/noreboot 不重启机器,便于复制完文件后修改。
命令执行完后,我们所需的文件已全部复制到C盘,以下的步骤对文件进行一些处理,我们将在WinPE下进行。将下载的0PE光盘映像(0PE.ISO)挂到虚拟机,重启虚拟机(按F2进入BIOS设置,设置从光盘启动)到WinPE。
2. 关于无人值守安装。
如果希望进行无人值守安装,应在命令行加参数/unattend:d:\i386\winnt.sif,这里winnt.sif是联想OEM XP安装光盘自带的应答文件,执行完上述命令后,该文件会被修改并复制到C:\$WIN_NT$.~BT\,内容如下:
[data]
msdosinitiated="1"
floppyless="1"
AutoPartition="0"
UseSignatures="yes"
InstallDir="\WINDOWS"
EulaComplete="1"
winntupgrade="no"
win9xupgrade="no"
Win32Ver="a280105"
uniqueid="C:\WINDOWS\DPL"
OriSrc="A:\i386"
OriTyp="5"
unattendswitch=yes
[regionalsettings]
Language=00000804
LanguageGroup=10
[Unattended]
Unattendmode=FullUnattended
OemPreinstall=Yes
TargetPath=\Windows
Filesystem=LeaveAlone
OemSkipEula=YES
FactoryMode=No
UnattendSwitch=Yes
OEMPnPDriversPath="DRIVERS\INTEL"
unused=unused
[UserData]
FullName="Lenovo User"
OrgName="Lenovo (Beijing) Limited"
ComputerName=*
ProductID=" FCDGH-QW3DJ-VBC6C-9BYTX-4GKQJ"
productkey=" FCDGH-QW3DJ-VBC6C-9BYTX-4GKQJ"
[GuiUnattended]
TimeZone="210"
AdminPassword=*
AutoLogon=No
OEMSkipRegional=1
OEMSkipWelcome=1
[GuiRunOnce]
command0="%WinDir%\regedit /s %WinDir%\system32\oemlink.reg"
[LicenseFilePrintData]
AutoMode="PerServer"
AutoUsers="5"
[Display]
BitsPerPel=16
XResolution=800
YResolution=600
VRefresh=75
[Branding]
BrandIEUsingUnattended=No
IEBrandingFile=install.ins
[Networking]
[Shell]
CustomDefaultThemeFile="%WinDir%\Resources\Themes\Lenovo.theme"
[Identification]
JoinWorkgroup=Workgroup
[TapiLocation]
CountryCode=86
[OobeProxy]
Enable=1
Flags=9
Autodiscovery_Flag=0
你可以参照以上内容定制自己的应答文件,相关的内容在以后的步骤中会提到。
3. OEM问题。
OEM厂商可以定制WINDOWS XP,相关文件放在$OEM$文件夹,对于联想OEM XP光盘,运行上述命令复制文件时,并没有将$OEM$目录复制到C盘(原因不知),我们需手工将$OEM$目录复制到C:\$WIN_NT$.~LS\下。
4. 集成驱动方法。
联想OEM XP光盘集成了SATA的驱动,驱动在\$OEM$\$1\DRIVERS\INTEL下,同样运行上述命令复制文件时,也没对集成的驱动文件进行处理,我们已在上一步将$OEM$目录复制到C:\$WIN_NT$.~LS\下,但还有一个文件iastor.sys需同时复制到目录C:\$WIN_NT$.~BT\和C:\$WIN_NT$.~LS\。如果你的XP光盘没有集成最新的SATA驱动,你又不想自己集成,可以用grub4dos虚拟一张驱动软盘,在安装XP时按F6加载驱动,具体方法下面“实战安装XP”说明;如果你想集成自己的驱动,请按以下方法进行(改自DIY一张集成SATA驱动程序的XP安装光盘)。
准备驱动程序文件
一般随主板附送的驱动程序安装光盘中都有SATA的驱动程序。打开光盘目录,寻找名称中含有“SATA”或“RAID”字符的文件夹;也可在主板制造商的网站或其它驱动程序下载站点(如:驱动之家等)寻找与自己的主板芯片组相匹配的SATA驱动程序。
在C:\$WIN_NT$.~LS\$OEM$\下建立一个新的目录$1,再在$1目录下建立一个目录DRIVERS,然后将找到的SATA驱动程序文件全部拷贝到这个目录中。这里我们以Si3112的SATA驱动程序为例进行介绍。其它类型的SATA驱动程序的集成步骤几乎完全相同,所不同的仅仅是驱动程序文件名的不同而已。
在这个DRIVERS文件夹中,一定会有一个扩展名为“.inf”或“.oem”的小文件,如“oemsetup.inf”或者“txtsetup.oem”等(本例中为“txtsetup.oem”),用记事本程序打开它,随后要用!
编辑“txtsetup.sif”文件
在C:\下找到一个名为“txtsetup.sif” 的文件,这是Windows XP在安装时加载驱动程序的信息文件,用记事本程序打开它。
按“Ctrl+F”快捷键,打开查找对话框,以“[SourceDisksFiles]”为关键字进行查找,找到这个字段后,其下面已经存在一些内容,翻页到这个字段的末尾(注意:不是整个文件内容的末尾),添加以下内容:“si3112.sys = 1,,,,,,3_,4,1”,如下所示:
[SourceDisksFiles]
bootvid.dll
= 1,,,,,,3_,2,0,0,,1,2
kdcom.dll
= 1,,,,,,3_,2,0,0,,1,2
c_1252.nls
= 1,,,,,,3_,2,0,0,,1,2
……………………………………
pciidex.sys
= 100,,,,,,3_,4,0,0,,1,4
isapnp.sys
= 100,,,,,,3_,4,1,,,1,4
si3112.sys = 1,,,,,,3_,4,1
这里的“si3112.sys = 1,,,,,,3_,4,1”是描述驱动程序所在位置的代码。代码的格式为“filename_on_source=diskid,subdir,upgradecode,newinstallcode,spare,spare,newfilename”,在“txtsetup.sif”文件中的“[SourceDisksNames]”和“[WinntDirectories]”等字段中有详细的描述。有兴趣的朋友可以深入研究其它目录的对应关系,这里仅简单介绍。在实际操作时,绝对不可以照搬代码!特别是扩展名为SYS的文件“si3112.sys”,它是SATA驱动程序目录中的驱动程序文件名,如果读者的SATA驱动程序与本文所述的不同,则只需换成相应的文件名即可。
注意:如果驱动程序文件有多个,则应按同样的方法全部添加。
切换到前面打开的“txtsetup.oem”文件,以“[HardwareIds.”为关键字进行搜索,应该可以找到类似“[HardwareIds.SICS.Si3112]”的字段。
该字段下的代码如:“id ="PCI\VEN_1095&DEV_3112 &SUBSYS_31121095", "Si3112"”。
切换到刚才打开的“txtsetup.sif”文件窗口中,以“[HardwareIdsDatabase]”为关键字进行搜索。找到后,将“txtsetup.oem”文件中“[HardwareIds.SICS.Si3112_XP]”字段下的代码拷贝到“txtsetup.sif”文件的“[HardwareIdsDatabase]”字段末尾。不过,我们需要更改一下代码的格式,如将“id ="PCI\VEN_1095&DEV _3112&SUBSYS_31121095", "Si3112"”改为:“PCI\VEN_1095&DEV_3112&SUBSYS_31121095 = "Si3112"”(其他代码修改方法相同),更改后的代码如下:
PCI\VEN_1095&DEV_3112&SUBSYS_31121095 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_34238086 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_311215D9 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_B0021458 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_01661028 = "Si3112"
PCI\VEN_1095&DEV_3112&SUBSYS_82141033 = "Si3112"
PCI\VEN_1095&DEV_3512&SUBSYS_35121095 = "Si3112"
PCI\VEN_1095&DEV_3512&SUBSYS_01661028 = "Si3112"
注意:不同SATA驱动程序的代码内容各不相同,应该根据具体情况灵活处理。
检查拷贝修改的内容是否与原有的内容重复,如果有,则把重复的一行删除。接着在“txtsetup.sif”文件查找“[SCSI.load]”和“[SCSI]”字段,添加如下内容:
[SCSI.load]
si3112 = si3112.sys,4
[SCSI]
si3112 = "Silicon Image SiI 3112 SATALink Controller"
至此,我们就把自己的SATA驱动程序的相关信息添加到了Windows XP安装信息文件“txtsetup.sif”中了!
上述添加自定义SATA信息内容的步骤看似很复杂,其实也就是同时打开Windows XP安装文件目录中的“txtsetup.sif”文件和驱动程序目录中的“.inf”或“.oem”信息文件,然后将后者文件中相关字段下面的内容一一对应地移植到“txtsetup.sif”文件中。知道了方法,做起来就要容易些了!
修改“winnt.sif”文件内容
现在,我们已经完成了两个最重要的步骤:一是获取了SATA驱动程序文件;二是修改了Windows XP安装时自动加载驱动程序的信息文件“txtsetup.sif”。但现在有一个新的问题:Windows XP在安装时如何知道它所需要的驱动程序文件在哪个目录下呢?
这个问题则需要通过修改自动应答文件winnt.sif来解决。用记事本打开C:\$WIN_NT$.~BT\winnt.sif文件,在该文件中添加以下内容(如果已经存在部分内容,则应进行修改或添加,且保证每行的内容不要重复):
[Unattended]
OemPreinstall=Yes
OEMPnPDriversPath="DRIVERS "
将驱动程序文件复制到安装目录
虽然我们已将所有的驱动文件复制到$OEM$目录,但安装XP时要等到所有文件复制完后再处理$OEM$目录,因此我们还要将所有驱动程序文件,本例中是“si3112.sys”,同时复制到目录C:\$WIN_NT$.~BT\和C:\$WIN_NT$.~LS\。
5. 修改boot.ini,制作映像包。
修改C:\boot.ini,使它的内容如下:
[Boot Loader]
Timeout=5
Default=C:\$WIN_NT$.~BT\BOOTSECT.DAT
[Operating Systems]
C:\$WIN_NT$.~BT\BOOTSECT.DAT="Microsoft Windows XP Professional 安装程序"
至此,我们所需的文件已全部准备好,我们只需C:\下的7个文件或文件夹:$WIN_NT$.~BT,$WIN_NT$.~LS,$LDR$,boot.ini,NTDETECT.COM,ntkdr,txtsetup.sif,其它的文件全部删除。
将你的U盘插入到机器,然后连接到虚拟机,运行Ghost 11(0PE自带),制作C盘映像到你的U盘。
[ 本帖最后由 iylyj 于 2009-4-21 10:50 编辑 ] |
|