由浅如深讲解windows系统封装过程.docx
- 文档编号:4900527
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:22
- 大小:30.69KB
由浅如深讲解windows系统封装过程.docx
《由浅如深讲解windows系统封装过程.docx》由会员分享,可在线阅读,更多相关《由浅如深讲解windows系统封装过程.docx(22页珍藏版)》请在冰豆网上搜索。
由浅如深讲解windows系统封装过程
由浅如深讲解windows系统封装过程
很早以前就想DIY自己的OS了.一直没时间,也没静下心来学习.马上有个项目,要大规模的去部署OS,刚好.就这机会学习下..
虽然Windows的性能在不断增强和完善,但是系统安装的速度依然是十分缓慢且让人头疼。
虽然2006年底推出的WindowsVista凭借微软的新技术ImageX,可以在短短20分钟内安装10几G左右的文件,但是由于WindowsVista对计算机硬件要求较高,软件兼容性尚不理想,(虽然sp1的发布,会改善些问题)所以未得到最好的普及,目前使用最广泛的Windows操作系统,依然是WindowsXP。
WindowsXP的安装时间在约20~30分钟左右,这还不算更新Windows安全补丁、系统优化以及软件安装的时间,平均来算,要完全安装一个可用的(包含常用补丁和软件,以及必要的系统优化)WindowsXP操作系统,至少需要1个小时左右的时间。
经常让我很头痛.有时候在虚拟机里做试验,来是忘记用什么UNDO盘,或者快照之类的..在从新装的时候很麻烦.
为解决系统安装过于繁杂耗时的问题,我首先考虑到的是利用微软自己的所谓“封装部署工具”(Sysprep)。
所谓封装部署,是微软为大企业用户提供的一种结构化的部署操作系统的工具。
可以在一台计算机上把已经做好各种调试的系统进行再封装,封装完毕的系统,可以部署到其他计算机中,部署时间相当的短,大概仅仅5~6分钟,极大的提高对计算机系统的维护效率。
但是封装部署是有条件的,即仅适用于封装的源计算机和用于部署的目标计算机必须具有相同硬件抽象层(HAL),即不相同硬件配置的机器不能互相部署对方机器上封装好的操作系统,这样就会对当今繁杂的计算机硬件配置中进行封装和部署造成极大的障碍。
通过LonghornPE2.0的研究,发现微软在Longhorn启动参数中提供了/detecthal接口,依靠这个接口,我们可以让计算机在启动时自动检测硬件抽象层(HAL),通过了这个检测,封装完的系统在部署到不同的计算机中时,就不会出现由于硬件抽象层(HAL)的不同而造成的系统在部署过程中由于对硬件的依赖而造成的种种非正常运行。
这样,一个被调试好的系统(包括系统补丁追加、系统优化、常用软件安装)可以在进行封装后,高效的部署到任何硬件配置的其他计算机上,极大的缩短进行计算机维护的时间,极大的提高计算机维护的效率。
系统的封装与部署,这个概念出自Microsoft.在Microsoft的Windows系列系统光盘中,包含企业部署工具,Deploy中包括了几个可供管理员和IT专业人士用来将Windows部署到组织中多台计算机上的工具。
Deploy.cab包括:
Setupmgr.exe、Sysprep.exe、Cvtarea.exe、O。
Setupmgr.exe,中文译为:
安装管理器,为预安装Microsoft操作系统和各种应用程序自动创建和修改分布共享的向导。
简单来说,这个工具主要是用来自动创建安装Windows操作系统的自动应答文件,可以让系统的安装做到“无人职守”,即在系统的安装过程中,无需任何人为的干预。
Sysprep.exe,中文译为:
系统准备,准备计算机硬盘,以便进行磁盘复制、审核并交付客户。
在分发前必须运行Sysprep以重新封装计算机。
Sysprep包含下列组件:
Sysprep.exe、Setupcl.exe、Factory.exe、Sysprep.inf和Winbom.ini。
应用程序文件(Sysprep.exe、Setupcl.exe和Factory.exe)是必需的,而且它们互相依存。
简单来说,这个工具用于重新封装已经在计算机上安装好的系统,封装完毕的映像可以通过介质复制到其他计算机上,当获取封装好的映像的计算机启动时,Sysprep.exe将调用%Windir%\System32\setup.exe在获取映像的计算机中重新部署系统。
这种部署类似于直接安装系统,但是速度要比正常安装快许多倍。
Cvtarea.exe,一个用于在FAT32或FAT文件系统上创建文件并分析那些文件放置情况的灵活工具。
使用Cvtarea工具,您可以创建连续的文件并将其放在磁盘上的特定位置。
O,创建FAT32卷,该卷中的簇以某种优化方法取整,以便在以后将其转换为NTFS文件系统格式。
总体而言,随着技术的发展,可以替代Cvtarea.exe和O的工具出现了许多,Setupmgr.exe用于生成无人职守安装应答文件,Sysprep.exe是用于系统封装的主要工具。
1.2Setupmgr
获得封装好的系统映像的计算机,第一次启动时,将会自行进行系统部署,系统部署过程中,会提问用户有关产品密钥、时区、计算机名称、管理员密码等等,这个和普通的系统安装的步骤一样(当然,比普通安装快速的多),每次都去输入这些,无非会降低工作效率。
利用Setupmgr.exe,可以为系统部署创建一份自动应答文件,当系统部署时碰到各种需要用户来确认的信息时,直接去这份自动应答文件中寻找预先规定好的答案,而无需提示用户输入。
Setupmgr.ex的使用方法十分简单,安装提示一步步写下去即可。
写完后,即可单击“完成”,这样就可以完成所有有关无人职守安装模式的设定了。
设定完成后,系统会自动生成Sysprep.inf文件,这个文件中记录了所有有关自动应答的答案。
部署时,sysprep.inf置于%systemdrive%\Sysprep文件夹中,即可执行无人职守的部署安装。
1.3Sysprep
1.3.1系统封装部署基本流程
一般流程为:
1>常规安装Windows到被设置为启动的硬盘的第一分区(一般为C盘);
2>对系统做应有的系统补丁添加、驱动安装、系统优化调整、常用软件安装等;
3>在C盘根目录下创建Sysprep文件夹,放入企业部署工具(Deploy.cab)中的相应各文件;
4>使用Setupmgr.exe创建自动应答文件;
5>运行Sysprep.exe来封装当前系统为系统映像;
6>关闭计算机,利用第三方软件复制下这个系统映像(C盘全部),一般使用GHOST;
7>利用网络或其他介质(光盘)复制该映像到其他计算机进行部署。
1.3.2系统封装
做完上节中步骤的前4步,就可以进行对系统的封装了,运行C盘根目录下创建Sysprep文件夹中的Sysprep.exe:
这是一个很简洁的界面,背后却包含着很高的技术含量。
“不重置激活的宽限期”,将以当前系统的激活剩余时间为主,做封装的系统是如果是免激活的Windows,这一项应选中。
“使用最小化安装”,在XP以后的版本中,系统可以以“欢迎使用”方式安装,也可以使用经典的模式即“最小化安装”模式进行安装,一般选中“使用最小化安装”。
“不重新产生安全标识符”,即不重新产生SID,以当前系统的SID为准,这会一定程度的加快封装部署速度,但是会令部署后的系统产生不稳定,不建议选中。
“检测非即插即用硬件”,这会令系统强行检测非即插即用硬件,不建议选中。
“关机模式”,用来设定执行完封装以后要执行什么,有“关机”、“重新启动”和“退出”三种模式。
选择完毕后,单击“重新封装”,Sysprep将当前系统自动封装为系统映像。
系统映像封装完毕后,无论是自动还是手动,重启计算机后,直接用带GHOST工具的光盘由光盘直接启动计算机,使用GHOST备份当前C盘系统磁盘映像。
备份完毕后,我们就得到了可以用来部署在其他计算机上的系统映像了。
使用光盘或者网络等介质,将这个磁盘映像再次使用GHOST恢复在其他计算机的C盘上,被恢复的计算机启动时会自动开始部署系统。
1.4综述
本章主要陈述了关于Windows操作系统的基本封装与部署的实现,微软的企业部署工具的效率和自动化程度相当高,封装和部署过程都比较简单。
但现在有一个很重要的问题,按照微软企业部署工具中Deploy.chm中的简述,企业部署工具对于源计算机和目标计算机需要有相同HAL(硬件抽象层)。
所谓HAL,是由硬件制造商提供的一种薄层软件,为操作系统高层隐藏或抽象硬件差异。
通过HAL提供的筛选器,不同类型的硬件看起来与操作系统其余的硬件很相似。
这样允许操作系统从一个硬件平台移植到另一个硬件平台。
HAL还提供了允许单个设备驱动器在所有的平台上支持同样设备的例程。
封装好的系统在部署到硬件配置差异较大的计算机中时,特别是跨平台的计算机(IntelCPU+Intel主板做的映像部署到AMDCPU+nVIDIA主板上时),会由于HAL的差异而造成各种各样的不稳定乃至挡机,这就和要运用封装部署方式来快速安装系统的初衷不一致了。
如果不能有良好的兼容性,即使能快速安装系统也完全是徒劳。
在随后的一章里,将完美解决这个问题,让对硬件平台有依赖的系统封装部署,变为只对硬件配置没有依赖的“万能的”封装部署。
2.Unlimited万能封装与部署的实现
2.1突破硬件限制的三个问题
2.1.1计算机电源管理模式
不同计算机的电源管理是不一样的,共有Standard、ACPIUniprocessor、ACPIMultiprocessor、MPSUniprocessor、MPSMultiprocessor、CompaqSystemPro、ACPI这7种,这7种电源管理模式分别适用于7种类型的计算机。
截止WindowsServer2003的企业部署工具,运用SYSPREP有一个限制,就是仅适用于用于封装的源计算机和进行部署的目标计算机必须具有相同硬件抽象层(HAL)。
没有相同的HAL,会造成电源管理模式不能正确判断。
网络中提出了不用的HAL检测解决方案,如ACPI封包、死性不改的电源模式等等。
但是这些都不能做到100%的电源判断正确,而且检测会需要额外的文件,并且可能多次重启计算机,耗费了时间。
问题1,怎么让Sysprep突破不能自动检测电源管理的限制?
2.1.2计算机硬盘
计算机硬盘的发展可谓迅速。
容量的提升,个人计算机硬盘容量从97年以前的个位数容量,突破到2007年现在的三位数容量。
硬盘接口也一直在改变,从IDE到SATA,再从SATA到SATAII,从前一直在服务器上使用的SCSI磁盘技术和RAID磁盘阵列技术也渐渐的被使用到个人计算机中。
(IDE属于并口硬盘,SATA和SCSI都属于串口硬盘,RAID属于硬盘阵列技术)。
在部署过程中,由于磁盘类型不同,需要不同的硬盘驱动(一般都是关于串口磁盘和磁盘阵列的驱动)。
如果部署过程中不能正确加载硬盘驱动,则会造成不能进入系统甚至不能启动。
问题2,如何突破S&R&S(SATA&RAID&SCSI)硬盘类型的限制?
2.1.3驱动残留
进行封装的源计算机如果和进行部署的目标计算机硬件差异很大,例如AMDCPU+nVIDIA主板的源计算机做的系统映像部署到IntelCPU+Intel主板的机器上,在源计算机上装载的驱动程序肯定是在目标计算机上用不到了。
即使目标计算机和源计算机硬件差异不大,但硬件技术差异很大,例如IntelCPU+Intel主板的源计算机做的系统映像部署到IntelCPU+Intel主板的机器上,源计算机为Intel865主板,而目标计算机为945主板,源计算机上的驱动也是铁定用不到的。
这些驱动的残留不仅仅是会留下系统垃圾的问题,如果源计算机上的驱动自动强行去识别目标计算机上的硬件,很有可能会造成系统的不稳定乃至蓝屏崩溃。
问题3,如何突破不同硬件驱动冲突的限制?
2.2突破HAL限制
2.2.1Longhorn的启示
WindowsServer2003之前,Sysprep受到“必须源计算机与目标计算机有着相同的HAL”的限制,在HAL不相同的时候,不能正确判断计算机电源管理模式。
从2003年WindowsServer2003发布到2006年底WindowsVista的发布中的3年中,微软在研发Vista的时候,发布了以内部研发编号命名的WindowsLonghorn测试版。
WindowsLonghorn与以往的Windows在启动时有着一定的区别。
第一,NTLDR有一定区别,提供了“/detecthal”接口;
第二,BOOT.INI也支持“/detecthal”参数,以实现与NTLDR的结合;
第三,INF文件夹中有了“dtecthal.inf”,提供各种HAL类型检测的参数说明。
有了这三个文件,可以让计算机在开机启动时即自动检测HAL,从而可以自动判断电源管理选项。
2.2.2移植Longhorn的HAL判断
现今大多数人还是以使用Windows2000/XP为主,所以,即使Longhorn的HAL判断再怎么强悍,不能移植到2000/XP中,也就不能使用。
以下是在2000/XP总移植并使用Longhorn的HAL判断的具体方法:
1>从系统中提取相应的HAL文件包:
(WIN2000在SP4.CAB、WINDOWSXPSP2在SP2.CAB中)
halacpi.dll
halapic.dll
halmps.dll
halaacpi.dll
halmacpi.dll
hal.dll
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe
提取完毕后将hal.dll更名为halstnd.dll,ntoskrnl.exe更名为ntkrnlup.exe;
2>将上述相应的HAL文件包拷贝到准备封装的系统的%Windir%\SYSTEM32\下;
3>将Longhorn的“dtecthal.inf”拷贝到准备封装的系统的%Windir%\INF\下;
4>修改C:
\BOOT.INI
在准备封装的系统后面加上/DETECTHAL参数如:
[bootloader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition
(1)\WINDOWS
[operatingsystems]
multi(0)disk(0)rdisk(0)partition
(1)\WINDOWS="MicrosoftWindowsXPProfessional"/fastdetect/detecthal
5>将LONGHORN版本的NTLDR拷贝到从C:
\,覆盖原有的NTLDR;
6>删除准备封装的系统的HAL信息,删除注册表中以下键值,如果提示权限不足不能删除,则可用setacl.exe来修改权限再删除。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\Root\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\Root\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI_HAL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL
至此,突破了HAL限制的系统就已经准备完毕。
由于这个技术本身就出自微软,所以对电源管理的判断几乎是100%。
突破HAL限制的系统可以部署在任何HAL环境的计算机上,不再有“源计算机和目标计算机需有相同的HAL”的限制。
2.1.1节中提出的问题完美解决
2.3突破S&R&S硬盘限制
确定目标计算机上可能用到的所有大量存储控制器,对于可能存在于目标计算机上的每个大量存储控制器,创建其硬件ID的列表。
2.3.1对于在Windows产品CD中提供的大量存储控制器
可以创建具有以下部分的Sysprep.inf文件:
[SysprepMassStorage]
hardware_id=path_to_device_inf
其中:
hardware_id
在设备的.inf文件中指定的即插即用ID。
path_to_device_inf
.inf文件的路径,该文件中包含待安装控制器的即插即用ID。
例如,要支持WindowsXP自带的不同IDE控制器(PCI和Intel),该部分如下所示:
[SysprepMassStorage]
PCI\VEN_8086&DEV_1222="%WINDIR%\inf\mshdc.inf"
PCI\VEN_8086&DEV_1230="%WINDIR%\inf\mshdc.inf"
PCI\VEN_8086&DEV_7010="%WINDIR%\inf\mshdc.inf"
PCI\VEN_8086&DEV_7111="%WINDIR%\inf\mshdc.inf"
PCI\VEN_8086&DEV_2411="%WINDIR%\inf\mshdc.inf"
PCI\VEN_8086&DEV_2421="%WINDIR%\inf\mshdc.inf"
PCI\VEN_8086&DEV_7199="%WINDIR%\inf\mshdc.inf"
2.3.2对于Windows产品CD上没有提供的大量存储控制器
将目标计算机上的大量存储控制器的驱动程序文件复制到您计算机上的文件夹中–例如,复制到主计算机硬盘驱动器上的%SYSTEMDRIVE%\pnpdrvrs\storage中。
按以下格式向[SysprepMassStorage]部分中添加几行内容:
hardware_id=path_to_device_inf,disk_directory,disk_description,disk_tag
其中:
hardware_id
在设备的.inf文件中指定的即插即用ID。
path_to_device_inf
.inf文件的路径,该文件中包含待安装控制器的即插即用ID。
disk_directory
第三方提供的软盘上的文件夹名称,该文件夹中包含大量存储驱动程序的副本。
disk_description
在第三方提供的Txtsetup.oem文件中指定的软盘说明。
disk_tag
在第三方提供的Txtsetup.oem文件中指定的软盘的磁盘标记。
将驱动程序文件放置到由Sysprep.inf中[SysprepMassStorage]部分指定的位置。
例如,要支持新的Qlogic驱动程序,如果将文件复制到C:
\Drivers\Storage文件夹,则添加如下行:
[SysprepMassStorage]
PCI\VEN_1077&DEV_1080="C:
\Drivers\Storage\qlogic\qlogic.inf","C:
\Drivers\Storage\qlogic","QlogicSoftwareDisk","C:
\Drivers\Storage\qlogic\qlogic"
2.3.3突破S&R&S实例
1>收集需要的srs驱动,方便期间,直接下载DPS提供的massstorage驱动:
2>解压驱动到c:
\drivers。
3>编辑sysprep.ini加入以下内容
InstallFilesPath=C:
\sysprep\i386
然后在[SysprepMassStorage]段中添加需要的串口磁盘驱动,根据DPS驱动包的说明书,一般只集成Intel、nVIDIA、Uli、VIA、SiS、AMD的串口磁盘驱动即可,在对应的驱动包中的inf文件中,可以获得硬件的即插即用ID。
例如:
[SysprepMassStorage]
PCI\VEN_1022&DEV_7469=c:
\drivers\m\am\AMDEIDE.inf
PCI\VEN_1002&DEV_4349=c:
\drivers\m\at\atiide.inf
PCI\VEN_10B9&DEV_5215=c:
\drivers\m\au\1\ALIIDE.INF
PCI\VEN_10B9&DEV_5219=c:
\drivers\m\au\1\ALIIDE.INF
PCI\VEN_10B9&DEV_5229=c:
\drivers\m\au\1\ALIIDE.INF
PCI\VEN_10B9&DEV_5228=c:
\drivers\m\au\2\m5228.INF
PCI\VEN_10B9&DEV_5281=c:
\drivers\m\au\2\m5281.inf
PCI\VEN_10B9&DEV_5287=c:
\drivers\m\au\3\ulisata.inf
PCI\VEN_10B9&DEV_5288=c:
\drivers\m\au\4\ULISATA.INF
PCI\VEN_10B9&DEV_5289=c:
\drivers\m\au\5\ULISATA.INF
PCI\VEN_8086&DEV_2652&CC_0104=c:
\drivers\m\in\1\iastor.inf
PCI\VEN_8086&DEV_27C3&CC_0104=c:
\drivers\m\in\1\iastor.inf
PCI\VEN_8086&DEV_2682&CC_0104=c:
\drivers\m\in\1\iastor.inf
PCI\VEN_8086&DEV_27C6&CC_0104=c:
\drivers\m\in\1\iastor.inf
PCI\VEN_8086&DEV_2822&CC_0104=c:
\drivers\m\in\1\iastor.inf
PCI\VEN_8086&DEV_2652&CC_0106=c:
\drivers\m\in\1\iaahci.inf
PCI\VEN_8086&DEV_2653&CC_0106=c:
\drivers\m\in\1\iaahci.inf
PCI\VEN_8086&DEV_27C1&CC_0106=c:
\drivers\m\in\1\iaahci.inf
PCI\VEN_8086&DEV_27C5&CC_0106=c:
\drivers\m\in\1\iaahci.inf
PCI\VEN_8086&DEV_2681&CC_0106=c:
\drivers\m\in\1\iaahci.inf
PCI\VEN_8086&DEV_28
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浅如深 讲解 windows 系统 封装 过程