查看單個文章
舊 2006-01-02, 08:58 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 進行SYSPREP後電腦硬體抽像層HAL(電源模式)的完美解決

微軟官方背景資料:
如何通過Sysprep準備磁牒複製所需的映像
Windows 如何確定 ACPI 相容性
安裝 Windows XP 或 Windows Server 2003 之後的 HAL 選項
眾所周知,微軟原有的系統封裝工具SYSPREP,可以方便快捷地進行企業產品佈署,但是在WINDOWS LONGHORN之前,運用SYSPREP有一個限制,就是僅適用於用於封裝的源電腦和目標電腦必須具有相同硬體抽像層 (HAL),因此,不同的網友均提出了不用的HAL檢測解決方案,如ACPI封包、死性不改的電源模式等等,這些解決方案不同程度存在幾個缺點:
1、檢測的相容性無法達到100%;
2、檢測需要額外的文件,並且可能需要重新啟動電腦,耗費了時間;
有沒有一個最完美的解決方案呢?答案其實就在微軟未公開的技術。
筆者通過對於WINDOWS LONGHORN各內測版本進行分析,現在公開微軟部分未公開的技術:
1、微軟自WINDOWS LONGHORN後,改寫了NTLDR的部分程式碼,提供了/detecthal 接頭
2、BOOT.INI支持/detecthal參數,以實現與NTLDR的結合,並實現開機啟動即自動檢測HAL
3、\INF\dtecthal.inf是一個關鍵性文件,提供各種HAL檔案檔案類型檢測的參數說明

以下為進行SYSPREP封裝後的自動完美檢測HAL具體實現方案:

1、從系統中抽取相應的HAL文件包:(WIN2000在SP4.CAB/WINDOWS XP SP2在SP2.CAB/WINDOWS 2003在SP1.CAB)
halacpi.dll
halapic.dll
halmps.dll
halaacpi.dll
halmacpi.dll
hal.dll---->並更名為halstnd.dll
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe---->並更名為ntkrnlup.exe

2、將上述相應的HAL文件包拷貝到系統\WINDOWS\SYSTEM32\(WINDOWS 2000為\WINNT\SYSTEM32\)

3、將以下程式碼儲存為dtecthal.inf並拷貝到\WINDOWS\INF\(WINDOWS 2000為\WINNT\INF\)
如果不可見,可在資料夾選項裡在「顯示所有的文件和資料夾」打上勾和「隱藏受保護的系統檔案」去掉勾。


[Version]
signature="$Windows NT$"
DriverVer=07/01/2001,5.1.2600.2180

[hal]
acpipic_up = halacpi.dll
e_isa_up = halstnd.dll
mps_up = halapic.dll
mps_mp = halmps.dll
acpiapic_up = halaacpi.dll
acpiapic_mp = halmacpi.dll

;
;
;-------------------------------------------------------------------------
; Auto detecd Computer HAL with BIOS information
;-------------------------------------------------------------------------
; Copyright(R)1980-2005 Microsoft Crack Center MCC(1980-2005)
;
; tesk work by mstest@MCC 20050515
;
; mstested@hotmail.com
;-------------------------------------------------------------------------
;
;
; [ACPIOptions]
; This section lists options that affect the installation of ACPI on x86
;
; ACPIEnable
; 0 - ACPI will be disabled at install time regardless of the BIOS
; 1 - ACPI will be enabled at install time if an ACPI BIOS is present
; 2 - ACPI will be enabled based on the GoodACPIBios list, the NWACL
; and ACPIBiosDate
;
; ACPIBiosDate = mm,dd,yyyy
; Supplies the date that a BIOS must have to be considered good if it is
; not in the GoodACPIBios list. If a BIOS has a date greater than this and
; is not in the NWACL list, then it will be used unless ACPIEnable = 0
;
[ACPIOptions]
ACPIEnable = 2
ACPIBiosDate = 01,01,1999





4、修改BOOT.INI
在準備封裝的系統後面加上 /DETECTHAL參數
如:

[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /detecthal





5、將LONGHORN版本的NTLDR拷貝到從C:\,覆蓋原有的NTLDR

各位也可以參考上傳附件中的mstest.rar文件包(包含NTLDR、DTECTHAL.INF、BOOT.INI示例)

最後,針對死性不改前些天在龍帝國等各大論壇發佈的S&R&SV9.5.0提出一些疑問?
1、不知道這次發佈的S&R&SV9.5.0正式版本是否參考了我在21號發佈的MCC_WIM_XP_BETA_1.0.0.iso中的dtecthal.inf文件?

2、我自己偵錯過這個S&R&SV9.5.0,發現裡面的dtecthal.inf和我自己寫的dtecthal.inf具有相同新增者,就是未知帳戶的那個權限(參考附圖),僅僅是文件內容不同,不知道你該作何解釋?
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
alanyih (2009-12-20)
感謝您發表一篇好文章