Windows通用複製系統入門基礎知識簡介

來源:互聯網
上載者:User

Windows通用複製系統入門基礎知識簡介

原文地址

 

這裡的Windows是指微軟的Windows 2000/XP/2003(後文中未經說明的,凡是Windows均指這三種系統);所謂的通用複製,俗名萬能複製,又名封裝系統,就是在一台機器上裝好 Windows系統,然後經過一系列的技術處理,然後將它使用複製軟體複製出來,使得這個複製系統能夠在任意的目標PC上恢複。事實上,到目前為止,我還 沒有遇到過真正的萬能複製,做得再好的通用複製系統也會遇到失敗的情況,而從理論上來說,要實現真正的萬能複製也是不太可能的,在後面的敘述中我們會詳細 講一下原因。

最近在很多論壇(龍帝國、無憂啟動、sysoft時空、DOS聯盟)均看到有人關注有關Windows通用複製方面的基礎知識問題,而很多人對於 Windows的通用複製,只知道S&R&S軟體和死性不改,至於S&R&S表示什麼意思,死性不改對通用複製的發展到 底作了哪些貢獻,均不甚了了。更多的人不瞭解通用複製的製做需要解決哪幾方面的問題,甚至還有很多人連一些基礎概念都不清楚。這種對通用複製缺乏瞭解的情 況是很普遍的,導致通用複製這個並不複雜的技術被很多人神秘化,甚至走上了神壇,讓廣大使用者都覺得它是可望而不可及的。實際上,就本人的瞭解和理解,通用 複製的製做原理並不複雜,但如果拋開S&R&S這一類的製做軟體而完全自己手工實現,則在細節上就要麻煩很多,所以,本文只講原理,不深 究技術細節,有興趣的人可以在本文的基礎上進一步窮其本源,而事實上,也只有靠自己的努力探索才能獲得其精髓。

1.通用複製需要解決的技術問題

很多人都知道,一個不經處理的Windows系統直接恢複到另一台機器上,最有可能出現的情況就是藍屏,或者反覆重新啟動。那麼,造成藍屏、重啟等的原因是什麼呢?事實上,這就是通用複製系統所要解決的最基本的技術問題。

1.1 Windows的硬體抽象層(HAL)問題j

我們知道,NT是基於核心的分層設計的作業系統(實際上是類UNIX作業系統),最早的NT系統是支援包括I386(Intel及AMD平台)、 Alpha、Sparc等不同硬體平台的作業系統,共實現原理就是將作業系統分層設計,其中最底層的硬體抽象層(即Hardware Abstract Layer,也就是HAL)直接與硬體相關,高層只與其下一層打交道,不再直接接觸硬體(這也是Windows NT下不允許軟體直接存取硬體的主要原因)。那麼,這裡的HAL層就相當於現在的JAVA虛擬機器、也相當於ISO組織定義的開放互連網路中的OSI七層參 考模型中的物理層的作用。就算是在I386平台下,很顯然,一台P3的機器跟P4的機器所用的硬體差別也是很大的,也即,它們對於Windows來說要使 用不同的核心,也就是不同的HAL。

有了上面這些基礎的概念,我們就可以開始介紹通用複製製做中所謂的電源模式問題了,實際上,電源模式問題就是HAL的問題,又叫電腦類型問題(因為它直接對應裝置管理員中的電腦類型項)。在我們日常接觸的PC中,最經常用到的電腦類型有這麼幾項:
Standard PC
Advanced Configuration and Power Interface (ACPI) PC(簡稱ACPI)
ACPI Uniprocessor PC
ACPI Multiprocessor PC

關於如何理解這些電腦類型之間的區別,請參考龍帝國論壇木鳥朋友的這篇文章:http://nufans.net/dvbbs/dispbbs. ... p;ID=823&page=1。另外,也可以參考我曾經寫的這篇文章《Windows 2000/XP/2003作業系統所支援的電腦類型(HAL)及相關核心檔案的對應關係》來進一步瞭解不同電腦類型之間的區別及更換電腦類型的原理與方法。

基本上,上面所列出的四種HAL類型,後三種都與Standard PC(標準電腦)相容,而如果使用了錯誤的HAL類型啟動目標電腦,系統也有可能正常啟動,但可能會丟失某些功能,例如一台支援ACPI的電腦如果 以Standard PC模式啟動,那麼就會導致關機時不能自動關閉電源。所以,如何正確的選擇目標電腦的HAL類型成為通用複製系統製做發展曆史上的一個重要課題,在前面 所提到的木鳥的文章中也有這個曆史發展過程的簡要介紹(事實上,hyne、chenall、死性不改最早都是從無憂論壇開始討論這個問題的)。那麼解決 HAL問題的曆史中經過了這麼幾個階段:

1) 以Standard PC方式安裝系統,然後手工修改電腦類型。

這種方式是在製做複製系統前將電腦類型手工修改為Standard PC以求得複製系統的最好相容性(同時還會修改IDE控制器為標準雙通道,後面詳述),然後恢複到目標電腦,但會導致裝置管理員的電腦類型中出現兩個 Standard PC,然後手工將其中一個修改為適合於目標電腦的類型(這要靠人工判斷),這種方式的缺點是修改完重新啟動後還要再搜尋一遍硬體驅動,導致系統中出現大 量幽靈硬體。

2) 人工判斷,手工選擇。

這一階段以hyne、chenall、死性不改(我所接觸到的)為代表,通過使用批處理或者VB程式的方式,在複製系統啟動時出現一個選擇菜單讓使用者選擇 適合自己電腦的HAL類型,至於如何判斷自己電腦所使用的HAL類型,基本上是靠安裝人的經驗。這種方法避免了二次搜尋硬體的過程,至於更多的優點, 我已經記不太清楚了。

3) 使用TA.EXE自動判斷,手工確認,BOOT菜單二次修改。

這種方法主要來源於死性不改的創舉,他發明了使用XP Embeded製做工具中的目標電腦剖析器ta.exe再加上使用CPUZ的結果來判斷CPU數量,從而綜合判斷目標電腦可能的HAL類型。當然, 這種判斷方式是不完全準確的,有可能會發生錯誤,所以才會出現手工確認以及BOOT菜單控製法等補充手段,這一階段的最完美產品我覺得是 S&R&S 5.5 Build 1030。

4) 使用WinPE來判斷電腦類型。

這種方式在木鳥的文章中有提及,我不甚了了,所以也無法過多介紹。但可以肯定的是,這種方法根本沒有流行起來。

5) 使用Longhorn的ntldr自動判斷並選擇電腦類型。

這種方法我看到的是由網友“微軟破解中心”在無憂啟動論壇發表的一篇文章中所介紹的,現在這篇文章在網上流傳的很廣,文章寫得也很淺顯易懂,我就不詳細介 紹了,有興趣的去搜尋一下來看看。總之,就是發現longhorn的ntldr有一個新參數,即/detecthal(在boot.ini的啟動項中設 置),通過這個參數,可以實現自動判斷並選擇電腦類型,而且這種技術由於源出於微軟,所以其結果是百分百準確的。基本上,使用Longhorn技術來判 斷正確的hal就是目前最完美的解決辦法。死改不改的S&R&S 9.x版本基本上都使用這種方式。

1.2 大量儲存裝置(MassStorage Device)驅動問題

先解釋一下這個MassStorage Device是什麼東東。所謂的MassStorage Device,說白了就是硬碟控制器,細分的話包括PATA(傳統的硬碟控制器)、SATA、RAID、SCSI等,實際上,死性不改的 S&R&S就是SATA&RAID&SCSI的意思。總之,是指Windows可能安裝於其上的存放裝置的類別,我們一 律以MassStorage來統稱它們。

說起來通用複製的MassStorage問題,應該說這個問題最早是由SATA串口硬碟不斷推廣引起的,在通用複製發展的早期,SATA硬碟還不是很流 行,這個問題還不是很嚴重,因為所有的PATA(IDE)控制器都相容於標準雙通道IDE控制器,所以人們製做複製時只需要將源機器的IDE控制器修改為 標準雙通道即可。但很顯然,SATA並不相容於標準雙通道,所以當時製做的複製系統在SATA硬碟上恢複後重啟時會出現藍屏(錯誤提示就是 Inaccessable_boot_device,即不可訪問的啟動裝置)。其實這個問題的由來已久,在安裝Windows NT時在TextMode安裝模式下通過按F6載入存放裝置驅動磁碟片上的驅動就是這個問題最早的由來。原因很簡單,Windows NT不再依賴於BIOS提供的方式訪問硬碟,而是通過底層的驅動程式,如果沒有載入對應的驅動程式,那麼Windows就會找不到硬碟,找不到硬碟當然就 不可能將Windows啟動起來。而DOS則是通過BIOS來訪問硬碟的,所以這也是為什麼DOS能夠訪問SATA、RAID、SCSI硬碟而 Windows卻不能訪問的主要原因。

講清楚了這個問題的原因,我們簡單講一下解決辦法,其實也很簡單:那就是搜集儘可能多的MassStorage裝置的驅動程式,然後使用Windows的 方式將它們一次性都載入進系統,這樣就不會存在找不到硬碟的問題(事實上,Windows自己也是這麼做的,大家可以仔細觀察一下Windows NT的安裝過程,在字元模式(TEXTMODE)安裝介面,你會看到它載入了一系列的驅動程式,其中包括很多本機所沒有的MassStorage裝置驅 動,但微軟自己也不可能在安裝程式中整合所有的MassStorage裝置驅動,所以它提供了F6方式通過磁碟片載入額外的驅動)。什麼是Windows的 方式呢?基本上就是將驅動檔案複製到%windir%"system32"drivers目錄下,然後修改註冊表,將相應的驅動程式所對應的服務及硬體識別碼寫入合適的登錄機碼。這些寫入的內容通過分析對應的驅動程式的inf檔案就可以獲得,為此,rui網友還曾經寫過一個inf2reg的程式來自動根據 驅動的inf檔案產生對應的需要加入註冊表的內容,實際上,驅動的inf檔案的書寫是有嚴格的規範的,從微軟的TeckNet上可以找到很多有關的內容, 有興趣的朋友可以自己搜尋並研究一下。

很顯然,以我們個人的能力是不可能搜集到所有的MassStorage裝置的驅動的,同時儲存技術在不斷髮展,新硬體也層出不窮,這是通用複製不可能實現 萬能的原因之一。還有一個原因,就是這些驅動之間有可能存在不相容問題,驅動的不相容會導致同時載入時直接死機,例如intelide與viaide的不 相容問題,這是導致複製不能萬能的原因之二,也是最主要的同時也很難解決的問題。目前,死性不改正在探索在DOS下啟動並執行S&R&S軟 件,目的就是解決這個問題,其實現原理就是根據目標機器的硬體情況在DOS下只載入適合目標機器的對應的驅動,這樣就可以有效避免驅動程式的不相容問題, 當然,這個產品還在測試階段,有興趣的可以訪問龍帝國論壇S&R&S封裝專區下載產品進行測試。

Acronis True Image最新版本所具有的Universal Restore功能,實現了在恢複複製後類似於Windows安裝時的F6載入使用者自訂驅動功能,這應該是解決通用複製恢複的一個好方向,當然,這需要更多的有志之士致力於研究它、推廣它。

除了MassStorage裝置的驅動問題以外,新型的CPU以及USB鍵盤、滑鼠等裝置驅動也要使用這種方式解決,例如AMD K8 CPU的驅動問題等。而木鳥所推出的ASR Tools系列封裝軟體,相對於S&R&S系列軟體來說,最大的區別就在於所整合的驅動,由於木鳥對硬體驅動骨灰級的專家水平,所以它的 封裝軟體中整合的驅動要遠遠優於S&R&S早期的軟體,當然,由於木鳥和死性不改私下裡是很親密的戰友,新版的 S&R&S軟體也採用了木鳥所提煉的驅動包,因此,從本質上來說,兩個封裝軟體並沒有什麼大的區別,當然,細微的區別還是有的。我個人更 喜歡用ASR Tools來製做通用複製系統,但其操作步驟相對繁瑣。

由於複製系統在製做前需要整合大量的驅動程式,而在複製安裝完成後,這些驅動檔案及對應的登錄機碼並不會被系統自動清除,而是隨著系統每次都要啟動,再加 上驅動間的相容性問題,因此給複製系統帶來了不小的隱患,同時也耗費了不小的系統資源,這也是很多人不提倡對複製系統進行二次封裝的主要原因。因應這種情 況,在木鳥的指導下,由我操刀編寫了ASRClean程式來配合ASR Tools系列封裝軟體進行安裝完成後的驅動清理工作(同時還要感謝rui朋友提供的檢測系統當前使用的MassStorage驅動的方法)。經過 ASRClean清理的系統再進行二次封裝,原則上應該是沒有任何隱患的。

基本上,上面所講的兩個問題就是通用複製系統所需要解決的兩個核心技術問題。其它問題基本上都屬於細枝末節問題,並不影響大局。

從我最近的幾次裝機經驗來看,在複製中整合大量的MassStorage存放裝置驅動,在某些機器上真的會導致相容性問題而導致複製恢複失敗,我遇到的一 例失敗就是在一個使用SiS晶片集的清華紫光筆記本上,複製恢複完成後重啟時系統不斷藍屏重啟,我的解決辦法是將失敗的system註冊表檔案提取出來, 然後在另一台Windows機器上使用reg load載入註冊表檔案,再使用ASRClean清理掉除SISIDE外的其它多餘的MassStorage裝置驅動(ASRClean 1.1支援這種功能,但你要自訂清理列表,詳細用法看協助),再將system檔案複製回去,果然恢複成功。我想這個辦法可以供大家作為借鑒。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.