摘要:在啟動過程的階段只能使用16MB內(nèi)存,Windows 2000的這個設(shè)計缺陷極大地限制了System配置單元大小。在此基礎(chǔ)上,通過分析了Loader error 3錯誤產(chǎn)生的一個主要原因——System配置單元過大,給出了處理錯誤的應(yīng)對策略,并指出卡巴斯基互聯(lián)網(wǎng)安全套裝防火墻/過濾系統(tǒng)的學(xué)習(xí)模式設(shè)計上的BUG是造成System配置單元增長異常的一個主要原因。
關(guān)鍵詞:Loader error 3;System配置單元;KIS;學(xué)習(xí)模式
中圖分類號:TP316文獻標(biāo)識碼:A文章編號:1009-3044(2008)26-1673-03
The Error Caused by the Windows 2000 Design Flaw and the Strategy for It
WANG Juan
(School of Informatics, Guangdong University of Foreign Studies, Guangzhou 510420, China)
Abstract: Only 16MB memory being used in the boot process is the Windows 2000 design flaw which greatly limits the size of system hive. On the base, this paper makes an analysis of excessive size of system hive which is one of the main reasons leads to Loader error 3, and proposes the strategy to cope with error. This paper also presents the bug of KIS' learning mode which is the one of the main reasons leads to abnormal increase of system hive.
Key words: loader error 3; system hive; KIS; learning mode
依照既定的生命周期,微軟于2005年結(jié)束對Windows 2000系列操作系統(tǒng)的“主流支持”。然而,由于Windows 2000的易用性令用戶深深眷戀,使得它在公司、企業(yè)中仍然占據(jù)著十分重要的地位。來自Sunbelt的調(diào)查數(shù)據(jù)表明,在2007年,Windows 2000還是以其頑強的生命力占有企業(yè)操作系統(tǒng)14.88%的份額。但Windows 2000也有很多不穩(wěn)定和不安全的地方,最近,不少人都遇到Windows 2000剛啟動就出現(xiàn)的一個錯誤:
Windows could not start because of an error in the software.
please report this problem as:
Loader error 3.
please contact your support person to report this problem
導(dǎo)致上面Loader error 3錯誤出現(xiàn),大部分都是因為存在下列情況之一:1)驅(qū)動程序不兼容;2)某些16位應(yīng)用程序無法在Win32模式下運行;3)System配置單元過大。
前面兩種情況下Windows無法正常啟動,但可進入到安全模式。如果電腦最近沒有裝過軟、硬件,而且安全模式也進入不了,那就主要考慮第3種情況了。
1 Load error 3錯誤發(fā)生的一個主要原因——System配置單元過大
Windows中,System配置單元大小必須在10.3MB之內(nèi)。為什么有這個限制呢?這得從Windows 2000的啟動過程講起。下面描述了一臺運行Windows 2000 Professional計算機的啟動過程:
Step 1 加電自檢
Step 2 初始啟動過程
Step 3 引導(dǎo)裝入程序過程
Step 4 操作系統(tǒng)選擇(如果這臺計算機存在多引導(dǎo)配置)
Step 5 硬件檢測
Step 6 硬件配置選擇(如果您使用了超過一個的硬件配置文件)
Step 7 內(nèi)核調(diào)用
Step 8 操作系統(tǒng)登錄過程
其中在第7個階段時,系統(tǒng)加載程序NTLDR調(diào)用系統(tǒng)內(nèi)核(Ntolskrnl.exe)和硬件抽象層(hal.dll)進內(nèi)存,接著調(diào)用位于%SystemRoot%\\System32\\Config的System文件(即System配置單元)。這個文件主要記錄了引導(dǎo)系統(tǒng)時需要的系統(tǒng)范圍的配置信息和Windows的硬件的安裝信息,如裝載哪些設(shè)備驅(qū)動程序和啟動哪些服務(wù);這些信息用于初始化計算機的控制設(shè)定,是啟動系統(tǒng)的關(guān)鍵。
但為什么System配置單元大小必須在10.3MB之內(nèi)呢?通過查閱大量資料后,我們發(fā)現(xiàn)這是由于Windows 2000下面這個設(shè)計缺陷引起的:Windows 2000在啟動過程的階段只能使用16MB內(nèi)存,因此,啟動時System配置單元和Microsoft Windows內(nèi)核加起來必須小于16MB,并且System配置單元僅限于大約10.3MB。
看到這里,我們就明白了:System配置單元超過10.3MB后,Windows不能完全加載所需文件,從而導(dǎo)致Loader error 3錯誤的出現(xiàn)。解決的辦法只能是恢復(fù)備份的注冊表,或者通過軟件壓縮注冊表。
2 應(yīng)對策略
2.1 恢復(fù)備份的注冊表
進入Windows 2000 故障恢復(fù)控制臺,然后把備份的注冊表文件覆蓋到%SystemRoot%\\System32\\config下,退出控制臺,重新啟動后就可以正常進入Windows 2000了。
2.2 壓縮注冊表
Veritas的VxScrub utility可以用來刪除注冊表文件中多余和重復(fù)的鍵值,達到對注冊表進行壓縮的目的。運行VxScrub utility(如圖1),重新啟動后,電腦即可正常運行。
3 System配置單元增長過快的一個主要原因——KIS防火墻/過濾系統(tǒng)的學(xué)習(xí)模式
通過恢復(fù)備份的注冊表或壓縮注冊表,電腦就可以正常啟動了,但如果不到幾天時間又出現(xiàn)前面的錯誤,就要考慮為什么System配置單元這么快就增長超過10.3MB呢?一般來說,頻繁地增加或拔除Plug-and-Play設(shè)備會導(dǎo)致System配置單元的增長,但增長過快就得另當(dāng)別論了。下面分析一個案例,希望能對大家有所幫助。
首先運行regedit,進入注冊表,仔細查看HKEY_LOCAL_MACHINE\\SYSTEM下面的鍵,發(fā)現(xiàn)HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\klif\\Parameters\\112\\Filters下面的項特別多、值特別長(如圖2)。將其導(dǎo)出,發(fā)現(xiàn)竟然有十幾MB,估計問題就出現(xiàn)在這里。
圖2 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\klif\\Parameters\\112\\Filters下面的項
其實HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\klif\\Parameters\\112\\Filters記錄的就是KIS防火墻在學(xué)習(xí)模式中自動創(chuàng)建的規(guī)則。KIS(Kaspersky Internet Security, 卡巴斯基互聯(lián)網(wǎng)安全套裝,我們分析的版本是KIS 7.0.0.125)的防火墻一共有五個安全級別,從低到高分別為:
1) 全部允許:計算機中所有網(wǎng)絡(luò)活動都將被允許;
2) 低安全:黑名單模式,只阻止那些明確被規(guī)則禁用的活動;
3) 學(xué)習(xí)模式:防火墻規(guī)則在這里被創(chuàng)建;
4) 高安全:白名單模式,只有存在允許規(guī)則的且被允許的網(wǎng)絡(luò)活動才能活動;
5) 禁止所有:計算機中所有網(wǎng)絡(luò)活動都被阻止。
只有結(jié)合實際情況定制的規(guī)則才是安全與使用最平衡的設(shè)置,因此將防護等級設(shè)為學(xué)習(xí)模式成為KIS推薦使用的模式,也是一般用戶常用的模式。在學(xué)習(xí)模式下,每當(dāng)有程序試圖使用網(wǎng)絡(luò)資源時,防火墻都將對其進行核對,看是否有規(guī)則用于此連接。如果有,防火墻將遵從其指導(dǎo)說明;如果沒有,屏幕上會顯示一條包含網(wǎng)絡(luò)連接的相關(guān)描述的消息(如圖3),您就可以為此連接創(chuàng)建一個規(guī)則。學(xué)習(xí)模式中創(chuàng)建的規(guī)則越來越多,從而導(dǎo)致了System配置單元過快的增長。
我們嘗試用ICESWORD將klif\\Parameters\\112\\Filters里的所有項(約6535)刪除,再用NT Registry Optimizer壓縮,然后重啟,System文件變?yōu)?684KB,確實減少了很多。最后再把KIS防火墻/過濾系統(tǒng)學(xué)習(xí)模式關(guān)閉,一切都恢復(fù)正常了,可是防火墻的功能也減弱了。
看來KIS防火墻/過濾系統(tǒng)的學(xué)習(xí)模式雖然好,但還是要改進:規(guī)則不能記錄到HKEY_LOCAL_MACHINE\\SYSTEM下,不然就浪費了這個功能。
4 結(jié)束語
雖然Windows 2000存在上面的設(shè)計缺陷,但很少時候能夠觸動到這個缺陷,而且Windows 2003已經(jīng)改變了這個設(shè)計,改進了系統(tǒng)配置單元內(nèi)存限制,最大可以達到200MB;也因為如此,越來越多的企業(yè)選擇了Windows 2003。希望KIS能在新的版本中解決上述問題,以保證它在安全防范領(lǐng)域中的地位。
參考文獻:
[1] Russinovich M E, Solomon D A.深入解析Windows操作系統(tǒng)[M].潘愛民,譯.北京:電子工業(yè)出版社,2007.
[2] 黃浩.注冊表大師[M].北京:北京希望電子出版社,2003.