封裝與部署研究論文
時(shí)間:2022-03-17 05:27:00
導(dǎo)語(yǔ):封裝與部署研究論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
前言:從Windows95到現(xiàn)在的WindowsVista,Windows優(yōu)秀的圖形界面和可操作性,贏得了目前廣泛的使用人群。雖然Windows各方面性能,特別是穩(wěn)定性方面,依然有所不及Unix、Linux這些高穩(wěn)定性的系統(tǒng),但是它仍然不可否認(rèn)的成為當(dāng)前使用范圍最廣的操作系統(tǒng)。
但是Windows發(fā)展了整整10于個(gè)年頭,雖然Windows的性能在不斷增強(qiáng)和完善,但是系統(tǒng)安裝的速度依然是十分緩慢且讓人頭疼。雖然2006年底推出的WindowsVista憑借微軟的新技術(shù)ImageX,可以在短短20分鐘內(nèi)安裝10幾G左右的文件,但是由于WindowsVista對(duì)計(jì)算機(jī)硬件要求較高,軟件兼容性尚不理想,所以未得到最好的普及,目前使用最廣泛的Windows操作系統(tǒng),依然是WindowsXP。
WindowsXP的安裝時(shí)間在約20~30分鐘左右,這還不算更新Windows安全補(bǔ)丁、系統(tǒng)優(yōu)化以及軟件安裝的時(shí)間,平均來(lái)算,要完全安裝一個(gè)可用的(包含常用補(bǔ)丁和軟件,以及必要的系統(tǒng)優(yōu)化)WindowsXP操作系統(tǒng),至少需要1個(gè)小時(shí)左右的時(shí)間。
對(duì)于做硬件維護(hù)的人們來(lái)講,系統(tǒng)的這個(gè)安裝和調(diào)試時(shí)間無(wú)論如何都是不能被很好接受的事實(shí)。即使硬件維護(hù)人員可以勉強(qiáng)接受這個(gè)安裝時(shí)間,很多情況下,要使用計(jì)算機(jī)來(lái)辦公的人員更難接受這個(gè)漫長(zhǎng)而浪費(fèi)時(shí)間的過(guò)程。這的確和高效率的社會(huì)結(jié)構(gòu)不符,和高節(jié)奏的社會(huì)工作生活更不相符。
一直在探尋一種方法,在于如何高效的進(jìn)行系統(tǒng)的維護(hù)乃至重新安裝,如何把原來(lái)近1小時(shí)才能完成的繁雜工作控制在15分鐘以內(nèi)完成。
為解決系統(tǒng)安裝過(guò)于繁雜耗時(shí)的問(wèn)題,我首先考慮到的是利用微軟自己的所謂“封裝部署工具”(Sysprep)。
所謂封裝部署,是微軟為大企業(yè)用戶提供的一種結(jié)構(gòu)化的部署操作系統(tǒng)的工具??梢栽谝慌_(tái)計(jì)算機(jī)上把已經(jīng)做好各種調(diào)試的系統(tǒng)進(jìn)行再封裝,封裝完畢的系統(tǒng),可以部署到其他計(jì)算機(jī)中,部署時(shí)間相當(dāng)?shù)亩?,大概僅僅5~6分鐘,極大的提高對(duì)計(jì)算機(jī)系統(tǒng)的維護(hù)效率。
但是封裝部署是有條件的,即僅適用于封裝的源計(jì)算機(jī)和用于部署的目標(biāo)計(jì)算機(jī)必須具有相同硬件抽象層(HAL),即不相同硬件配置的機(jī)器不能互相部署對(duì)方機(jī)器上封裝好的操作系統(tǒng),這樣就會(huì)對(duì)當(dāng)今繁雜的計(jì)算機(jī)硬件配置中進(jìn)行封裝和部署造成極大的障礙。
通過(guò)對(duì)微軟的操作系統(tǒng)Longhron各內(nèi)測(cè)版本進(jìn)行啟動(dòng)過(guò)程的跟蹤,發(fā)現(xiàn)微軟在Longhron啟動(dòng)參數(shù)中提供了/detecthal接口,依靠這個(gè)接口,我們可以讓計(jì)算機(jī)在啟動(dòng)時(shí)自動(dòng)檢測(cè)硬件抽象層(HAL),通過(guò)了這個(gè)檢測(cè),封裝完的系統(tǒng)在部署到不同的計(jì)算機(jī)中時(shí),就不會(huì)出現(xiàn)由于硬件抽象層(HAL)的不同而造成的系統(tǒng)在部署過(guò)程中由于對(duì)硬件的依賴而造成的種種非正常運(yùn)行。
這個(gè)研究成功后,一個(gè)被調(diào)試好的系統(tǒng)(包括系統(tǒng)補(bǔ)丁追加、系統(tǒng)優(yōu)化、常用軟件安裝)可以在進(jìn)行封裝后,高效的部署到任何硬件配置的其他計(jì)算機(jī)上,極大的縮短進(jìn)行計(jì)算機(jī)維護(hù)的時(shí)間,極大的提高計(jì)算機(jī)維護(hù)的效率。
1.Base基本封裝與部署的實(shí)現(xiàn)
1.1系統(tǒng)的封裝與部署
系統(tǒng)的封裝與部署,這個(gè)概念出自Microsoft(微軟)。在Microsoft的Windows系列系統(tǒng)光盤中,包含企業(yè)部署工具(Deploy.cab),Deploy中包括了幾個(gè)可供管理員和IT專業(yè)人士用來(lái)將Windows部署到組織中多臺(tái)計(jì)算機(jī)上的工具。
Deploy.cab包括:Setupmgr.exe、Sysprep.exe、Cvtarea.exe、。
Setupmgr.exe,中文譯為:安裝管理器,為預(yù)安裝Microsoft操作系統(tǒng)和各種應(yīng)用程序自動(dòng)創(chuàng)建和修改分布共享的向?qū)?。?jiǎn)單來(lái)說(shuō),這個(gè)工具主要是用來(lái)自動(dòng)創(chuàng)建安裝Windows操作系統(tǒng)的自動(dòng)應(yīng)答文件,可以讓系統(tǒng)的安裝做到“無(wú)人職守”,即在系統(tǒng)的安裝過(guò)程中,無(wú)需任何人為的干預(yù)。
Sysprep.exe,中文譯為:系統(tǒng)準(zhǔn)備,準(zhǔn)備計(jì)算機(jī)硬盤,以便進(jìn)行磁盤復(fù)制、審核并交付客戶。在分發(fā)前必須運(yùn)行Sysprep以重新封裝計(jì)算機(jī)。Sysprep包含下列組件:Sysprep.exe、Setupcl.exe、Factory.exe、Sysprep.inf和Winbom.ini。應(yīng)用程序文件(Sysprep.exe、Setupcl.exe和Factory.exe)是必需的,而且它們互相依存。簡(jiǎn)單來(lái)說(shuō),這個(gè)工具用于重新封裝已經(jīng)在計(jì)算機(jī)上安裝好的系統(tǒng),封裝完畢的映像可以通過(guò)介質(zhì)復(fù)制到其他計(jì)算機(jī)上,當(dāng)獲取封裝好的映像的計(jì)算機(jī)啟動(dòng)時(shí),Sysprep.exe將調(diào)用%Windir%\System32\setup.exe在獲取映像的計(jì)算機(jī)中重新部署系統(tǒng)。這種部署類似于直接安裝系統(tǒng),但是速度要比正常安裝快許多倍。
Cvtarea.exe,一個(gè)用于在FAT32或FAT文件系統(tǒng)上創(chuàng)建文件并分析那些文件放置情況的靈活工具。使用Cvtarea工具,您可以創(chuàng)建連續(xù)的文件并將其放在磁盤上的特定位置。
,創(chuàng)建FAT32卷,該卷中的簇以某種優(yōu)化方法取整,以便在以后將其轉(zhuǎn)換為NTFS文件系統(tǒng)格式。
總體而言,隨著技術(shù)的發(fā)展,可以替代Cvtarea.exe和的工具出現(xiàn)了許多,Setupmgr.exe用于生成無(wú)人職守安裝應(yīng)答文件,Sysprep.exe是用于系統(tǒng)封裝的主要工具。
1.2Setupmgr
獲得封裝好的系統(tǒng)映像的計(jì)算機(jī),第一次啟動(dòng)時(shí),將會(huì)自行進(jìn)行系統(tǒng)部署,系統(tǒng)部署過(guò)程中,會(huì)提問(wèn)用戶有關(guān)產(chǎn)品密鑰、時(shí)區(qū)、計(jì)算機(jī)名稱、管理員密碼等等,這個(gè)和普通的系統(tǒng)安裝的步驟一樣(當(dāng)然,比普通安裝快速的多),每次都去輸入這些,無(wú)非會(huì)降低工作效率。
利用Setupmgr.exe,可以為系統(tǒng)部署創(chuàng)建一份自動(dòng)應(yīng)答文件,當(dāng)系統(tǒng)部署時(shí)碰到各種需要用戶來(lái)確認(rèn)的信息時(shí),直接去這份自動(dòng)應(yīng)答文件中尋找預(yù)先規(guī)定好的答案,而無(wú)需提示用戶輸入。
Setupmgr.ex的使用方法十分簡(jiǎn)單,安裝提示一步步寫下去即可。
寫完后,即可單擊“完成”,這樣就可以完成所有有關(guān)無(wú)人職守安裝模式的設(shè)定了。設(shè)定完成后,系統(tǒng)會(huì)自動(dòng)生成Sysprep.inf文件,這個(gè)文件中記錄了所有有關(guān)自動(dòng)應(yīng)答的答案。
部署時(shí),sysprep.inf置于%systemdrive%\Sysprep文件夾中,即可執(zhí)行無(wú)人職守的部署安裝。
1.3Sysprep
1.3.1系統(tǒng)封裝部署基本流程
一般流程為:
1>常規(guī)安裝Windows到被設(shè)置為啟動(dòng)的硬盤的第一分區(qū)(一般為C盤);
2>對(duì)系統(tǒng)做應(yīng)有的系統(tǒng)補(bǔ)丁添加、驅(qū)動(dòng)安裝、系統(tǒng)優(yōu)化調(diào)整、常用軟件安裝等;
3>在C盤根目錄下創(chuàng)建Sysprep文件夾,放入企業(yè)部署工具(Deploy.cab)中的相應(yīng)各文件;
4>使用Setupmgr.exe創(chuàng)建自動(dòng)應(yīng)答文件;
5>運(yùn)行Sysprep.exe來(lái)封裝當(dāng)前系統(tǒng)為系統(tǒng)映像;
6>關(guān)閉計(jì)算機(jī),利用第三方軟件復(fù)制下這個(gè)系統(tǒng)映像(C盤全部),一般使用GHOST;
7>利用網(wǎng)絡(luò)或其他介質(zhì)(光盤)復(fù)制該映像到其他計(jì)算機(jī)進(jìn)行部署。
1.3.2系統(tǒng)封裝
做完上節(jié)中步驟的前4步,就可以進(jìn)行對(duì)系統(tǒng)的封裝了,運(yùn)行C盤根目錄下創(chuàng)建Sysprep文件夾中的Sysprep.exe,進(jìn)入一下界面:
這是一個(gè)很簡(jiǎn)潔的界面,背后卻包含著很高的技術(shù)含量。
“不重置激活的寬限期”,將以當(dāng)前系統(tǒng)的激活剩余時(shí)間為主,做封裝的系統(tǒng)是如果是免激活的Windows,這一項(xiàng)應(yīng)選中。
“使用最小化安裝”,在XP以后的版本中,系統(tǒng)可以以“歡迎使用”方式安裝,也可以使用經(jīng)典的2000模式即“最小化安裝”模式進(jìn)行安裝,一般選中“使用最小化安裝”。
“不重新產(chǎn)生安全標(biāo)識(shí)符”,即不重新產(chǎn)生SID,以當(dāng)前系統(tǒng)的SID為準(zhǔn),這會(huì)一定程度的加快封裝部署速度,但是會(huì)令部署后的系統(tǒng)產(chǎn)生不穩(wěn)定,不建議選中。
“檢測(cè)非即插即用硬件”,這會(huì)令系統(tǒng)強(qiáng)行檢測(cè)非即插即用硬件,不建議選中。
“關(guān)機(jī)模式”,用來(lái)設(shè)定執(zhí)行完封裝以后要執(zhí)行什么,有“關(guān)機(jī)”、“重新啟動(dòng)”和“退出”三種模式。
選擇完畢后,單擊“重新封裝”,Sysprep將當(dāng)前系統(tǒng)自動(dòng)封裝為系統(tǒng)映像。
系統(tǒng)映像封裝完畢后,無(wú)論是自動(dòng)還是手動(dòng),重啟計(jì)算機(jī)后,直接用帶GHOST工具的光盤由光盤直接啟動(dòng)計(jì)算機(jī),使用GHOST備份當(dāng)前C盤系統(tǒng)磁盤映像。
備份完畢后,我們就得到了可以用來(lái)部署在其他計(jì)算機(jī)上的系統(tǒng)映像了。使用光盤或者網(wǎng)絡(luò)等介質(zhì),將這個(gè)磁盤映像再次使用GHOST恢復(fù)在其他計(jì)算機(jī)的C盤上,被恢復(fù)的計(jì)算機(jī)啟動(dòng)時(shí)會(huì)自動(dòng)開(kāi)始部署系統(tǒng)。
1.4綜述
本章主要陳述了關(guān)于Windows操作系統(tǒng)的基本封裝與部署的實(shí)現(xiàn),微軟的企業(yè)部署工具的效率和自動(dòng)化程度相當(dāng)高,封裝和部署過(guò)程都比較簡(jiǎn)單。
但現(xiàn)在有一個(gè)很重要的問(wèn)題,按照微軟企業(yè)部署工具中Deploy.chm中的簡(jiǎn)述,企業(yè)部署工具對(duì)于源計(jì)算機(jī)和目標(biāo)計(jì)算機(jī)需要有相同HAL(硬件抽象層)。
所謂HAL,是由硬件制造商提供的一種薄層軟件,為操作系統(tǒng)高層隱藏或抽象硬件差異。通過(guò)HAL提供的篩選器,不同類型的硬件看起來(lái)與操作系統(tǒng)其余的硬件很相似。這樣允許操作系統(tǒng)從一個(gè)硬件平臺(tái)移植到另一個(gè)硬件平臺(tái)。HAL還提供了允許單個(gè)設(shè)備驅(qū)動(dòng)器在所有的平臺(tái)上支持同樣設(shè)備的例程。
封裝好的系統(tǒng)在部署到硬件配置差異較大的計(jì)算機(jī)中時(shí),特別是跨平臺(tái)的計(jì)算機(jī)(IntelCPUIntel主板做的映像部署到AMDCPUnVIDIA主板上時(shí)),會(huì)由于HAL的差異而造成各種各樣的不穩(wěn)定乃至擋機(jī),這就和要運(yùn)用封裝部署方式來(lái)快速安裝系統(tǒng)的初衷不一致了。如果不能有良好的兼容性,即使能快速安裝系統(tǒng)也完全是徒勞。
在隨后的一章里,將完美解決這個(gè)問(wèn)題,讓對(duì)硬件平臺(tái)有依賴的系統(tǒng)封裝部署,變?yōu)橹粚?duì)硬件配置沒(méi)有依賴的“萬(wàn)能的”封裝部署。
2.Unlimited萬(wàn)能封裝與部署的實(shí)現(xiàn)
2.1突破硬件限制的三個(gè)問(wèn)題
2.1.1計(jì)算機(jī)電源管理模式
不同計(jì)算機(jī)的電源管理是不一樣的,共有Standard、ACPIUniprocessor、ACPIMultiprocessor、MPSUniprocessor、MPSMultiprocessor、CompaqSystemPro、ACPI這7種,這7種電源管理模式分別適用于7種類型的計(jì)算機(jī)。
截止WindowsServer2003的企業(yè)部署工具,運(yùn)用SYSPREP有一個(gè)限制,就是僅適用于用于封裝的源計(jì)算機(jī)和進(jìn)行部署的目標(biāo)計(jì)算機(jī)必須具有相同硬件抽象層(HAL)。
沒(méi)有相同的HAL,會(huì)造成電源管理模式不能正確判斷。網(wǎng)絡(luò)中提出了不用的HAL檢測(cè)解決方案,如ACPI封包、死性不改的電源模式等等。但是這些都不能做到100%的電源判斷正確,而且檢測(cè)會(huì)需要額外的文件,并且可能多次重啟計(jì)算機(jī),耗費(fèi)了時(shí)間。
問(wèn)題1,怎么讓Sysprep突破不能自動(dòng)檢測(cè)電源管理的限制?
2.1.2計(jì)算機(jī)硬盤
計(jì)算機(jī)硬盤的發(fā)展可謂迅速。容量的提升,個(gè)人計(jì)算機(jī)硬盤容量從97年以前的個(gè)位數(shù)容量,突破到2007年現(xiàn)在的三位數(shù)容量。硬盤接口也一直在改變,從IDE到SATA,再?gòu)腟ATA到SATAII,從前一直在服務(wù)器上使用的SCSI磁盤技術(shù)和RAID磁盤陣列技術(shù)也漸漸的被使用到個(gè)人計(jì)算機(jī)中。(IDE屬于并口硬盤,SATA和SCSI都屬于串口硬盤,RAID屬于硬盤陣列技術(shù))。
在部署過(guò)程中,由于磁盤類型不同,需要不同的硬盤驅(qū)動(dòng)(一般都是關(guān)于串口磁盤和磁盤陣列的驅(qū)動(dòng))。如果部署過(guò)程中不能正確加載硬盤驅(qū)動(dòng),則會(huì)造成不能進(jìn)入系統(tǒng)甚至不能啟動(dòng)。
問(wèn)題2,如何突破S&R&S(SATA&RAID&SCSI)硬盤類型的限制?
2.1.3驅(qū)動(dòng)殘留
進(jìn)行封裝的源計(jì)算機(jī)如果和進(jìn)行部署的目標(biāo)計(jì)算機(jī)硬件差異很大,例如AMDCPUnVIDIA主板的源計(jì)算機(jī)做的系統(tǒng)映像部署到IntelCPUIntel主板的機(jī)器上,在源計(jì)算機(jī)上裝載的驅(qū)動(dòng)程序肯定是在目標(biāo)計(jì)算機(jī)上用不到了。即使目標(biāo)計(jì)算機(jī)和源計(jì)算機(jī)硬件差異不大,但硬件技術(shù)差異很大,例如IntelCPUIntel主板的源計(jì)算機(jī)做的系統(tǒng)映像部署到IntelCPUIntel主板的機(jī)器上,源計(jì)算機(jī)為Intel865主板,而目標(biāo)計(jì)算機(jī)為945主板,源計(jì)算機(jī)上的驅(qū)動(dòng)也是鐵定用不到的。
這些驅(qū)動(dòng)的殘留不僅僅是會(huì)留下系統(tǒng)垃圾的問(wèn)題,如果源計(jì)算機(jī)上的驅(qū)動(dòng)自動(dòng)強(qiáng)行去識(shí)別目標(biāo)計(jì)算機(jī)上的硬件,很有可能會(huì)造成系統(tǒng)的不穩(wěn)定乃至藍(lán)屏崩潰。
問(wèn)題3,如何突破不同硬件驅(qū)動(dòng)沖突的限制?
2.2突破HAL限制
2.2.1Longhorn的啟示
WindowsServer2003之前,Sysprep受到“必須源計(jì)算機(jī)與目標(biāo)計(jì)算機(jī)有著相同的HAL”的限制,在HAL不相同的時(shí)候,不能正確判斷計(jì)算機(jī)電源管理模式。
從2003年WindowsServer2003到2006年底WindowsVista的中的3年中,微軟在研發(fā)Vista的時(shí)候,了以內(nèi)部研發(fā)編號(hào)命名的WindowsLonghorn測(cè)試版。
WindowsLonghorn與以往的Windows在啟動(dòng)時(shí)有著一定的區(qū)別。
第一,NTLDR有一定區(qū)別,提供了“/detecthal”接口;
第二,BOOT.INI也支持“/detecthal”參數(shù),以實(shí)現(xiàn)與NTLDR的結(jié)合;
第三,INF文件夾中有了“dtecthal.inf”,提供各種HAL類型檢測(cè)的參數(shù)說(shuō)明。
有了這三個(gè)文件,可以讓計(jì)算機(jī)在開(kāi)機(jī)啟動(dòng)時(shí)即自動(dòng)檢測(cè)HAL,從而可以自動(dòng)判斷電源管理選項(xiàng)。
2.2.2移植Longhorn的HAL判斷
現(xiàn)今大多數(shù)人還是以使用Windows2000/XP為主,所以,即使Longhorn的HAL判斷再怎么強(qiáng)悍,不能移植到2000/XP中,也就不能使用。
以下是在2000/XP總移植并使用Longhorn的HAL判斷的具體方法:
1>從系統(tǒng)中提取相應(yīng)的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>將上述相應(yīng)的HAL文件包拷貝到準(zhǔn)備封裝的系統(tǒng)的%Windir%\SYSTEM32\下;
3>將Longhorn的“dtecthal.inf”拷貝到準(zhǔn)備封裝的系統(tǒng)的%Windir%\INF\下;
4>修改C:\BOOT.INI
在準(zhǔn)備封裝的系統(tǒng)后面加上/DETECTHAL參數(shù)如:
[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>刪除準(zhǔn)備封裝的系統(tǒng)的HAL信息,刪除注冊(cè)表中以下鍵值,如果提示權(quán)限不足不能刪除,則可用setacl.exe來(lái)修改權(quán)限再刪除。
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限制的系統(tǒng)就已經(jīng)準(zhǔn)備完畢。由于這個(gè)技術(shù)本身就出自微軟,所以對(duì)電源管理的判斷幾乎是100%。
突破HAL限制的系統(tǒng)可以部署在任何HAL環(huán)境的計(jì)算機(jī)上,不再有“源計(jì)算機(jī)和目標(biāo)計(jì)算機(jī)需有相同的HAL”的限制。
2.1.1節(jié)中提出的問(wèn)題完美解決
2.3突破S&R&S硬盤限制
確定目標(biāo)計(jì)算機(jī)上可能用到的所有大量存儲(chǔ)控制器,對(duì)于可能存在于目標(biāo)計(jì)算機(jī)上的每個(gè)大量存儲(chǔ)控制器,創(chuàng)建其硬件ID的列表。
2.3.1對(duì)于在Windows產(chǎn)品CD中提供的大量存儲(chǔ)控制器
可以創(chuàng)建具有以下部分的Sysprep.inf文件:
[SysprepMassStorage]
hardware_id=path_to_device_inf
其中:
hardware_id
在設(shè)備的.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對(duì)于Windows產(chǎn)品CD上沒(méi)有提供的大量存儲(chǔ)控制器
將目標(biāo)計(jì)算機(jī)上的大量存儲(chǔ)控制器的驅(qū)動(dòng)程序文件復(fù)制到您計(jì)算機(jī)上的文件夾中–例如,復(fù)制到主計(jì)算機(jī)硬盤驅(qū)動(dòng)器上的%SYSTEMDRIVE%\pnpdrvrs\storage中。
按以下格式向[SysprepMassStorage]部分中添加幾行內(nèi)容:
hardware_id=path_to_device_inf,disk_directory,disk_description,disk_tag
其中:
hardware_id
在設(shè)備的.inf文件中指定的即插即用ID。
path_to_device_inf
.inf文件的路徑,該文件中包含待安裝控制器的即插即用ID。
disk_directory
第三方提供的軟盤上的文件夾名稱,該文件夾中包含大量存儲(chǔ)驅(qū)動(dòng)程序的副本。
disk_description
在第三方提供的Txtsetup.oem文件中指定的軟盤說(shuō)明。
disk_tag
在第三方提供的Txtsetup.oem文件中指定的軟盤的磁盤標(biāo)記。
將驅(qū)動(dòng)程序文件放置到由Sysprep.inf中[SysprepMassStorage]部分指定的位置。例如,要支持新的Qlogic驅(qū)動(dòng)程序,如果將文件復(fù)制到C:\Drivers\Storage文件夾,則添加如下行:
[SysprepMassStorage]
PCI\VEN_1077&DEV_1080="C:\Drivers\Storage\qlogic\qlogic.inf","C:\Drivers\Storage\qlogic","QlogicSoftwareDisk","C:\Drivers\Storage\qlogic\qlogic2.3.3突破S&R&S實(shí)例
1>收集需要的srs驅(qū)動(dòng),方便期間,直接下載DPS提供的massstorage驅(qū)動(dòng):
/DriverPacks/download.php?pag=m
2>解壓驅(qū)動(dòng)到c:\drivers。
3>編輯sysprep.ini加入以下內(nèi)容
InstallFilesPath=C:\sysprep\i386
然后在[SysprepMassStorage]段中添加需要的串口磁盤驅(qū)動(dòng),根據(jù)DPS驅(qū)動(dòng)包的說(shuō)明書,一般只集成Intel、nVIDIA、Uli、VIA、SiS、AMD的串口磁盤驅(qū)動(dòng)即可,在對(duì)應(yīng)的驅(qū)動(dòng)包中的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_2821&CC_0106=c:\drivers\m\in\1\iaahci.inf
PCI\VEN_8086&DEV_24DF&CC_0104=c:\drivers\m\in\1\O\iastor.inf
PCI\VEN_8086&DEV_25B0&CC_0104=c:\drivers\m\in\1\O\iastor.inf
PCI\VEN_10DE&DEV_008E=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_00D5=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_00EE=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_00E3=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_0036=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_003E=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_0054=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_0055=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_0266=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_0267=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_036F=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_037E=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_037F=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_03F6=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_03F7=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_10DE&DEV_03E7=c:\drivers\m\N\TM\nvatabus.inf
PCI\VEN_1039&DEV_0181=c:\drivers\M\SI\1\SISRaid1.INF
PCI\VEN_1039&DEV_0180=c:\drivers\M\SI\2\SISRaid.INF
PCI\VEN_1039&DEV_0182=c:\drivers\M\SI\3\SISRaid2.INF
PCI\VEN_1106&DEV_3349&CC_0104=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_6287&CC_0106=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_0591&CC_0104=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_3249&CC_0104=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_3149&CC_0104=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_3164&CC_0104=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_0581&CC_0104=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_7372&CC_0104=c:\drivers\M\V\1\VIAMRAID.INF
PCI\VEN_1106&DEV_4149=c:\drivers\M\V\2\viapide.inf
PCI\VEN_1106&DEV_0571=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_3149&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_0591&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_5337&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_3349&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_5287&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_3164&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_0581&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_1106&DEV_5324&CC_0101=c:\drivers\M\V\3\vminiide.inf
PCI\VEN_104B&DEV_1040=c:\drivers\M\VM\vmscsi.inf
4>在c:\sysprep目錄下建立i386\$oem$目錄,在c:\sysprep\i386\$oem$中建立cmdlines.txt文件,在文件中加入
[Commands]
"c:\sysprep\sysprep-clean"
這樣就會(huì)在最小化安裝的過(guò)程中禁用所有因?yàn)樵谀繕?biāo)計(jì)算機(jī)上不存在而未安裝的大量存儲(chǔ)控制器。
至此,一個(gè)突破了S&R&S限制的系統(tǒng)映像準(zhǔn)備完畢。
執(zhí)行sysprep進(jìn)行封裝,在封裝的過(guò)程中,系統(tǒng)會(huì)自動(dòng)安裝srs驅(qū)動(dòng)。在最小化安裝的時(shí)候會(huì)刪除多余的驅(qū)動(dòng)。
2.1.2節(jié)中的問(wèn)題,這里也就已經(jīng)解決了。
2.4多余驅(qū)動(dòng)的卸載
做封裝所用的計(jì)算機(jī)中所使用的驅(qū)動(dòng)程序,在被部署的計(jì)算機(jī)上大多數(shù)不再有用(除非都被部署在相同硬件配置的計(jì)算機(jī)上)。所以,我們要一一刪除源計(jì)算機(jī)中的這些驅(qū)動(dòng),以免殘留的驅(qū)動(dòng)造成部署的不正常。
卸載驅(qū)動(dòng),在“設(shè)備管理器”(我的電腦,屬性,硬件,設(shè)備管理器)中列出所有設(shè)備,然后一一卸載。
在設(shè)備管理器中,可以看到當(dāng)前正在使用的所有硬件設(shè)備。
1>常規(guī)驅(qū)動(dòng)的卸載
除“IDEATA/ATAPI控制器”和“計(jì)算機(jī)”以外的其他設(shè)備,一一展開(kāi),然后卸載即可。
2>更改IDE模式
由于不同計(jì)算機(jī)的IDE控制器差異比較大,如果出現(xiàn)錯(cuò)誤的識(shí)別,將會(huì)出現(xiàn)不能開(kāi)機(jī)的情況,所以,這里預(yù)先將IDE控制器設(shè)置為“標(biāo)準(zhǔn)雙通道”,在部署時(shí),安裝程序?qū)⒆詣?dòng)尋找和起匹配的IDE控制器驅(qū)動(dòng)程序。
3>計(jì)算機(jī)電源管理
計(jì)算機(jī)電源管理分為許多種,可以適用于不同類別的計(jì)算機(jī)。如果電源管理判斷不正確,將會(huì)造成計(jì)算機(jī)的不正常。在計(jì)算機(jī)識(shí)別電源管理之前,需要將電源管理設(shè)為標(biāo)準(zhǔn)模式以基本適用于所有的計(jì)算機(jī),這種標(biāo)準(zhǔn)模式僅僅可以保證計(jì)算機(jī)正常啟動(dòng),但是不能保證最高效的運(yùn)行。
將計(jì)算機(jī)的電源管理模式設(shè)置為StandardPC以后,在部署時(shí),由于我們適用了Longhorn的HAL自動(dòng)判斷,計(jì)算機(jī)將會(huì)在啟動(dòng)時(shí)自動(dòng)修改StandardPC為被部署計(jì)算機(jī)的電源管理模式。
至此,突破了硬件限制的系統(tǒng)映像也被修改了出來(lái),系統(tǒng)映像可以被部署到不同硬件配置的機(jī)器中了。
2.1.3節(jié)中的問(wèn)題被解決。
2.5綜述
在不同硬件配置的機(jī)器中適用系統(tǒng)部署受到種種制約,本章分為3塊解決了映像系統(tǒng)萬(wàn)能部署的3條限制。
Longhron的自動(dòng)HAL判斷,解決了源計(jì)算機(jī)與目標(biāo)計(jì)算機(jī)在不同HAL模式時(shí)不能進(jìn)行部署的問(wèn)題。
S&R&S驅(qū)動(dòng)的集成,解決了系統(tǒng)部署在不同硬盤模式的情況下進(jìn)行部署的問(wèn)題。
驅(qū)動(dòng)的卸載,解決了系統(tǒng)部署在不同硬件配置的計(jì)算機(jī)下進(jìn)行的問(wèn)題。
這3條限制被突破以后,系統(tǒng)部署時(shí),不必再遵循源計(jì)算機(jī)和目標(biāo)計(jì)算機(jī)必須相同配置的原則,真正可以實(shí)現(xiàn)無(wú)限制的“萬(wàn)能部署”。3.Auto自動(dòng)封裝與部署的實(shí)現(xiàn)
3.1自動(dòng)封裝與部署的意義和理論實(shí)現(xiàn)
3.1.1自動(dòng)封裝的意義
1>封裝測(cè)試需要很多次的重復(fù)
封裝一個(gè)可以部署的系統(tǒng)映象并不難,但是封裝一個(gè)比較完美的可以滿足各項(xiàng)要求的系統(tǒng)映象卻是一個(gè)特別花費(fèi)時(shí)間和精力的工作,需要很多次的重復(fù)制作。僅上一章中所提到的各種限制的突破,如果每次測(cè)試都時(shí)候都做一次,也會(huì)消耗很多的時(shí)間。
能不能讓這些手工的機(jī)械化的操作變成自動(dòng)的?
2>頻繁的手工操作容易造成錯(cuò)誤
即使是一個(gè)對(duì)封裝十分了解的人,在多次的執(zhí)行封裝中,也難免會(huì)出現(xiàn)遺漏和失誤,畢竟封裝的步驟一環(huán)扣一環(huán),雖然不繁瑣也難免會(huì)造成錯(cuò)誤。
怎么讓封裝的流程變的自動(dòng)而無(wú)需人手工參與?
3>封裝的普及
很多IT工作者并不十分了解封裝與部署,卻一樣想做出自己的系統(tǒng)映象用來(lái)部署,由于工作等原因?qū)嵲跊](méi)有時(shí)間去系統(tǒng)的學(xué)習(xí),難道封裝只能掌握在少數(shù)人手中?
怎么讓封裝更為普及化,讓沒(méi)有太多封裝知識(shí)和經(jīng)驗(yàn)的人也能迅速的進(jìn)行系統(tǒng)封裝?
3.1.2系統(tǒng)封裝和部署的詳細(xì)流程
1>系統(tǒng)安裝、補(bǔ)丁、軟件等;
[封裝]:
2>在系統(tǒng)光盤上找到Deploy.cab,解壓到%system%\Sysprep;
3>運(yùn)行Setupmgr.exe創(chuàng)建無(wú)人職守部署應(yīng)答文件Sysprep.inf;
4>突破HAL限制,把于HAL相關(guān)的文件都放置在%windir%下相應(yīng)位置,提取Longhorn的ntldr1,修改boot.ini;
5>突破S&R&S限制,把所有串口磁盤和磁盤陣列驅(qū)動(dòng)都放置在%systemdrive%\Drivers下,在Sysprep.inf中的[SysprepMassStorage]段下添加磁盤驅(qū)動(dòng)位置等信息;
6>卸載各種驅(qū)動(dòng),修改IDE控制器為標(biāo)準(zhǔn)雙通道,修改計(jì)算機(jī)電源管理為StandardPC;
7>運(yùn)行Sysprep.exe進(jìn)行系統(tǒng)封裝;
8>關(guān)閉封裝源計(jì)算機(jī);
9>DOS模式啟動(dòng)封裝源計(jì)算機(jī),使用GHOST備份下封裝完的系統(tǒng)映象;
[部署]:
10>使用GHOST恢復(fù)系統(tǒng)映象到部署目標(biāo)計(jì)算機(jī);
11>部署目標(biāo)計(jì)算機(jī),系統(tǒng)運(yùn)行%windir%\system32\setup.exe來(lái)部署計(jì)算機(jī)映象。
3.1.3自動(dòng)封裝的理論實(shí)現(xiàn)
縱觀流程,封裝過(guò)程基本上可以分為相關(guān)文件的復(fù)制、對(duì)文件的調(diào)整、相關(guān)軟件的運(yùn)行、對(duì)系統(tǒng)的調(diào)整四部分。
相關(guān)文件的復(fù)制,簡(jiǎn)單說(shuō),就是把應(yīng)該放在哪兒的文件放在哪兒,這些文件都是特定的,進(jìn)行封裝必然要用到這些文件,所以,可以預(yù)先把這些文件提取出來(lái)放置在一個(gè)另外的文件夾中,然后用WinRAR壓縮為自解壓文件并設(shè)定解壓位置,這樣到用這些文件的時(shí)候直接雙擊自解壓包,這些要用到的文件就會(huì)各自解壓到自己應(yīng)該在的位置上。
對(duì)文件的調(diào)整,主要是替換Longhorn的ntldr,以及修改boot.ini,這個(gè)我們可以用命令行修改系統(tǒng)自身的ntldr為ntldr.bak,修改系統(tǒng)自身的boot.ini為boot.ini.bak,然后把Longhorn的ntldr和修改好的boot.ini復(fù)制到原系統(tǒng)ntldr和boot.ini的位置。當(dāng)系統(tǒng)部署完畢后再把原始的ntldr和boot.ini替換回來(lái),雖然替換回原有的不是必須的,但是個(gè)人認(rèn)為,保持原系統(tǒng)的原始性一定程度上有利于系統(tǒng)的穩(wěn)定性。
相關(guān)軟件的運(yùn)行,這個(gè)主要是Sysprep,如果每次要為Sysprep設(shè)置相同的執(zhí)行方式,那么Sysprep提供很多的運(yùn)行參數(shù),添加參數(shù)運(yùn)行Sysprep,就免去了每次都要去點(diǎn)擊封裝選項(xiàng)的問(wèn)題。
對(duì)系統(tǒng)的調(diào)整,主要是卸載驅(qū)動(dòng)以及調(diào)整計(jì)算機(jī)電源管理和IDE控制器。雖然這個(gè)可以使用自動(dòng)化實(shí)現(xiàn),但是個(gè)人認(rèn)為這個(gè)手工還是比較保險(xiǎn)。
3.2實(shí)現(xiàn)自動(dòng)封裝與部署
3.2.1文件的自動(dòng)復(fù)制
建立如下目錄,以D:\ES文件夾為例:
D:\ES\Sysprep\cvtarea.exe
D:\ES\Sysprep\
D:\ES\Sysprep\Setupcl.exe
D:\ES\Sysprep\Sysprep.exe
D:\ES\Sysprep\Sysprep.inf
D:\ES\Sysprep\SetACL.exe
D:\ES\Sysprep\AutoSysprep.cmd
D:\ES\Sysprep\cmdline.reg
D:\ES\WINDOWS\inf\dtecthal.inf
D:\ES\WINDOWS\system32
D:\ES\WINDOWS\system32\halaacpi.dll
D:\ES\WINDOWS\system32\halacpi.dll
D:\ES\WINDOWS\system32\halapic.dll
D:\ES\WINDOWS\system32\halmacpi.dll
D:\ES\WINDOWS\system32\halmps.dll
D:\ES\WINDOWS\system32\halstnd.dll
D:\ES\WINDOWS\system32\mscomctl.ocx
D:\ES\WINDOWS\system32\ntkrnlmp.exe
D:\ES\WINDOWS\system32\ntkrnlpa.exe
D:\ES\WINDOWS\system32\ntkrnlup.exe
D:\ES\WINDOWS\system32\ntkrpamp.exe
D:\ES\WINDOWS\AllUsrRun.cmd
D:\ES\Drivers
D:\ES\bootL.ini
D:\ES\ntldrL
說(shuō)明:
1>ES文件夾模擬C盤根目錄,所有文件排布和此后要復(fù)制到C盤中的排布是一樣的;
2>Sysprep中的所有文件在第一章中介紹過(guò),Sysprep文件夾將在系統(tǒng)部署最小化安裝時(shí)自動(dòng)刪除,SetACL.exe是提升權(quán)限以修改注冊(cè)表的工具,AutoSysprep.cmd是自動(dòng)進(jìn)行封裝所用的批處理,cmdline.reg將在3.2.3中詳細(xì)說(shuō)明;
3>inf和system32文件夾中的各文件在第二章中介紹過(guò),用于Longhorn的自動(dòng)HAL判斷;
4>AllUsrRun的用處后面詳細(xì)介紹;
5>bootL.ini是為HAL自動(dòng)判斷所寫好的boot.ini文件,內(nèi)容為:
[bootloader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operatingsystems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindowsXPProfessional"/fastdetect/detecthal
6>ntldrL是Longhorn的系統(tǒng)引導(dǎo)文件,同樣用于自動(dòng)HAL判斷。
7>Drivers中放置串口磁盤和磁盤陣列驅(qū)動(dòng)
文件打包:
選擇最常用的壓縮工具WinRAR來(lái)進(jìn)行打包ES文件夾中的所有文件,設(shè)定默認(rèn)解壓縮路徑為C:\并且設(shè)置解壓模式為“隱藏啟動(dòng)對(duì)話框”和“覆蓋所有文件”,這幾個(gè)選項(xiàng)的設(shè)定可以保證文件不會(huì)復(fù)制到錯(cuò)誤的位置。
3.2.2自動(dòng)封裝的實(shí)現(xiàn)
AutoSysprep.cmd的內(nèi)容如下(以封裝XP系統(tǒng)為例):
rem自動(dòng)封裝,靜默模式、最小化、不重置激活事件、清空事件查看器日志、不重啟計(jì)算機(jī)
start/waitc:\sysprep\sysprep.exe-quiet-mini-activated-reseal-noreboot
rem導(dǎo)入cmdline.reg鍵值(3.2.3中介紹)
start/waitregedit.exe/sc:\Sysprep\cmdline.reg
rem取消XP的ntldr權(quán)限,改名為ntldrXP,再恢復(fù)其權(quán)限
attribc:\ntldr-h-s-r
renc:\ntldrntldrxp
attribc:\ntldrxphsr
rem取消Longhron的ntldrL的權(quán)限,改名為ntldr,再恢復(fù)其權(quán)限
attribc:\ntldr1-h-s-r
renc:\ntldr1ntldr
attribc:\ntldrhsr
rem取消XP的boot.ini權(quán)限,改名為bootXP.ini,再恢復(fù)其權(quán)限
attribc:\boot.ini-h-s-r
renc:\boot.inibootxp.ini
attribc:\bootxp.inihsr
rem取消Longhron的bootL.ini的權(quán)限,改名為boot.ini,再恢復(fù)其權(quán)限
attribc:\boot1.ini-h-s-r
renc:\boot1.iniboot.ini
attribc:\boot.inihsr
rem進(jìn)入Sysprep文件夾內(nèi)
cd\
cd\sysprep
rem使用SetACL來(lái)取消有關(guān)源計(jì)算機(jī)HAL的注冊(cè)表信息的權(quán)限,以便隨后的修改
setaclMACHINE\SYSTEM\ControlSet001\Enum\ACPI_HAL/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet002\Enum\ACPI_HAL/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet002\Enum\Root\ACPI_HAL/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet003\Enum\ACPI_HAL/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet003\Enum\Root\ACPI_HAL/registry/granteveryone/full
setaclMACHINE\SYSTEM\CurrentControlSet\Enum\ACPI_HAL/registry/granteveryone/full
setaclMACHINE\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL/registry/granteveryone/full
rem刪除源計(jì)算機(jī)的HAL注冊(cè)表信息
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI_HAL/f
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL/f
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\ACPI_HAL/f
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\Root\ACPI_HAL/f
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\ACPI_HAL/f
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\Root\ACPI_HAL/f
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI_HAL/f
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL/f
rem以下用于IntelCPUIntel主板的源計(jì)算機(jī),Intel的這兩組鍵值容易造成部署到非Intel硬件計(jì)算機(jī)中的藍(lán)屏事故
rem使用SetACL來(lái)取消有關(guān)當(dāng)前Intel主板的注冊(cè)表信息的權(quán)限,以便隨后的修改
setaclMACHINE\SYSTEM\ControlSet001\Services\IntelIde/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet002\Services\IntelIde/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet003\Services\IntelIde/registry/granteveryone/full
setaclMACHINE\SYSTEM\CurrentControlSet\Services\IntelIde/registry/granteveryone/full
rem使用SetACL來(lái)取消有關(guān)當(dāng)前IntelCPU的注冊(cè)表信息的權(quán)限,以便隨后的修改
setaclMACHINE\SYSTEM\ControlSet001\Services\intelppm/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet002\Services\intelppm/registry/granteveryone/full
setaclMACHINE\SYSTEM\ControlSet003\Services\intelppm/registry/granteveryone/full
setaclMACHINE\SYSTEM\CurrentControlSet\Services\intelppm/registry/granteveryone/full
rem刪除有關(guān)Intel主板的注冊(cè)表信息
regdeleteMACHINE\SYSTEM\ControlSet001\Services\IntelIde/f
regdeleteMACHINE\SYSTEM\ControlSet002\Services\IntelIde/f
regdeleteMACHINE\SYSTEM\ControlSet003\Services\IntelIde/f
regdeleteMACHINE\SYSTEM\CurrentControlSet\Services\IntelIde/f
rem刪除有關(guān)IntelCPU的注冊(cè)表信息
regdeleteMACHINE\SYSTEM\ControlSet001\Services\intelppm/f
regdeleteMACHINE\SYSTEM\ControlSet002\Services\intelppm/f
regdeleteMACHINE\SYSTEM\ControlSet003\Services\intelppm/f
regdeleteMACHINE\SYSTEM\CurrentControlSet\Services\intelppm/f
3.2.3部署過(guò)程的調(diào)整
部署過(guò)程,其實(shí)就是系統(tǒng)映象恢復(fù)到目標(biāo)計(jì)算機(jī)上,目標(biāo)計(jì)算機(jī)啟動(dòng),系統(tǒng)會(huì)自動(dòng)運(yùn)行%windir%\system32\Setup.exe來(lái)部署系統(tǒng)。
如果我們想在Setup.exe前或者后運(yùn)行點(diǎn)什么,該怎么辦?例如,我們要在Setup.exe運(yùn)行后將原來(lái)系統(tǒng)的ntldr和boot.ini恢復(fù)回來(lái),而不是使用Longhorn的,怎么辦?
經(jīng)過(guò)對(duì)比封裝前和封裝后的注冊(cè)表,發(fā)現(xiàn)目標(biāo)計(jì)算機(jī)啟動(dòng)后,將要進(jìn)行部署時(shí)并非是一定要運(yùn)行%windir%\system32\Setup.exe,而是運(yùn)行系統(tǒng)注冊(cè)表中“HKEY_LOCAL_MACHINE\SYSTEM\Setup”分支下的“CmdLine”鍵值所指定的應(yīng)用程序。在系統(tǒng)封裝完成時(shí),“HKEY_LOCAL_MACHINE\SYSTEM\Setup”分支下“CmdLine”鍵值被修改為“setup.exe”,這就是為什么目標(biāo)計(jì)算機(jī)啟動(dòng)后會(huì)運(yùn)行setup.exe來(lái)部署系統(tǒng)的原因。
我們自己寫一個(gè)批處理,批處理的內(nèi)容包括運(yùn)行setup.exe和恢復(fù)原有ntldr、boot.ini,把這個(gè)批處理的名字定名為“AllUsrRun.cmd”,并且把“HKEY_LOCAL_MACHINE\SYSTEM\Setup”分支下“CmdLine”的鍵值由“setup.exe”修改為“AllUsrRun.cmd”。這樣源計(jì)算機(jī)啟動(dòng)的時(shí)候并非運(yùn)行setup.exe來(lái)部署系統(tǒng),而是運(yùn)行AllUsrRun.cmd。
AllUsrRun.cmd的內(nèi)容如下:
rem把我們修改的CmdLine鍵值重新置空
regdeleteHKEY_LOCAL_MACHINE\SYSTEM\setup/vcmdline/f
rem部署系統(tǒng),全新安裝、最小化執(zhí)行
setup.exe-newsetup–mini
rem修改Longhorn的ntldr權(quán)限,并刪除
attribc:\ntldr-h-s-r
delc:\ntldr
rem修改先前備份的XP的ntldrXP權(quán)限,改名回ntldr,恢復(fù)權(quán)限
attribc:\ntldrXP-h-s-r
renc:\ntldrXPntldr
attribc:\ntldrhsr
rem修改Longhorn的boot.ini權(quán)限,并刪除
attribc:\boot.ini-h-s-r
delc:\boot.ini
rem修改先前備份的XP的bootXP.ini權(quán)限,改名回boot.ini,恢復(fù)權(quán)限
attribc:\bootXP.ini-h-s-r
renc:\bootXP.iniboot.ini
attribc:\boot.inihsr
rem修改多啟動(dòng)菜單等待時(shí)間為5秒
bootcfg/timeout5
這樣部署過(guò)程就被我們調(diào)整的如我們所愿了。
3.3綜述
經(jīng)過(guò)3.2節(jié)中的幾步,自動(dòng)封裝和部署基本被我們實(shí)現(xiàn)。
3.1.2中[封裝]段的步驟被簡(jiǎn)化為:
1>運(yùn)行自動(dòng)解壓縮,把文件解壓到相應(yīng)位置;
2>卸載驅(qū)動(dòng),手動(dòng)修改IDE控制器和計(jì)算機(jī)電源管理;
3>運(yùn)行%systemdrive%\Sysprep文件夾中的AutoSysprep.cmd封裝系統(tǒng);
4>重啟計(jì)算機(jī),使用GHOST備份系統(tǒng)映象。
3.1.2中[部署]段的步驟變?yōu)椋?/p>
1>恢復(fù)系統(tǒng)映象到目標(biāo)計(jì)算機(jī);
2>目標(biāo)計(jì)算機(jī)啟動(dòng),自動(dòng)運(yùn)行AllUsrRun.cmd部署系統(tǒng)并還原系統(tǒng)原始的ntldr和boot.ini。
如此以來(lái),系統(tǒng)封裝將變的十分簡(jiǎn)單,不僅給多次測(cè)試封裝系統(tǒng)帶來(lái)很大的方便,還能讓沒(méi)有太多封裝經(jīng)驗(yàn)的人迅速封裝系統(tǒng)。
系統(tǒng)自動(dòng)化封裝和部署完美實(shí)現(xiàn)。
結(jié)論
全文分3章講述了封裝部署方法快速安裝和部署操作系統(tǒng)的方法。
從第一章的基本實(shí)現(xiàn)到第二章的萬(wàn)能實(shí)現(xiàn),再到第三章自動(dòng)實(shí)現(xiàn),一步步實(shí)現(xiàn)了從最基本封裝部署到全自動(dòng)封裝部署。
從覆蓋面上講,從最原始的微軟所規(guī)定的“源計(jì)算機(jī)與目標(biāo)計(jì)算機(jī)必須有相同的HAL”到最終的任意HAL源計(jì)算機(jī)部署到任意HAL目標(biāo)計(jì)算機(jī),覆蓋面被有效的提高。理論上講,部署方法,可以適用于任何計(jì)算機(jī)。
從易用性上講,從最早的手工復(fù)制文件、手工修改注冊(cè)表、手工修改各種配置文件,到最終的“EasySysprep”只需在圖形界面設(shè)置好然后單擊一下“開(kāi)始封裝”即可封裝系統(tǒng),不可說(shuō)不是個(gè)比較大的進(jìn)步和跨越。
經(jīng)過(guò)本文中3章的研究工作,封裝部署已經(jīng)變的擁有更大的適用性并擁有更簡(jiǎn)單的可用性,系統(tǒng)封裝部署這種可以有效的提高計(jì)算機(jī)維護(hù)人員工作效率的方法,必將得到最廣泛的認(rèn)可與應(yīng)用作者:roar版權(quán)所有
- 上一篇:CD-ROM編程研究論文
- 下一篇:P2P技術(shù)及資源發(fā)展論文