2.12.2010

Windows XP 無法載入 (Hal.dll & vgaoem.fon 損毀)

家裡的 Desktop 說實在真的是到了不敷使用的程度,四年半有餘的老爺機還不時接受我們嚴苛的對待下,各項硬體:e.g., 顯示卡、硬碟、光碟機、電源供應器...早是傷痕累累。


但是今天一早老弟又跟我說:「Windows 又進不去了,上面顯示:

Windows 無法啟動,因為下列檔案遺失或損毀:
\Windows\System32\Hal.dll


囧,是我第一時間的反應,寒假已經來到最後關頭,NB, Netbook 改裝 Win 7 的計畫都還在起步階段,CCNA 教材、Android 都還在等待我的蒞臨,實在沒太多的時間去浪費,沒想到桌機還給我搞這樣的飛機,我真是 !&*&#$#*%...


抱怨歸抱怨,陪著我渡過那許多日子的老朋友有難,我豈會袖手旁觀?而且會就此大驚小怪的我,果然是道行不夠深,老朋友給的考驗,強迫我去請教 Google 大神。


根據大多數網友的經驗,多半是 Hal.dll 的損毀,或是 boot.ini 的損壞,兩者必須動用到 XP 的安裝光碟,透過修復管理員將 i386 下的 Hal.dll 複製到 C:\WINDOWS\system32\ 下取代舊有的檔案(如果還在的話),或是讓其修復 boot.ini


下面就將網路所提供的方法做 keying:


  • 複製 Hal.dll
    1. copy Hal.dll C:\Windows\system32\hal.dll

      這方法我沒試,所以 Hal.dll 確切的目錄的位置就得查一下,沒有意外應該在 i386 下,必要的時候可用 dir hal.* 的 cmd 指令來確認

  • 修復 boot.ini
    1. bootcfg /list

      畫面上會顯示目前 Boot.ini 檔中的項目。如果顯示沒有檔案,就表示 Windows 真的找不到 Boot.ini 或是 Boot.ini 損壞。

    2. bootcfg /rebuild

      開始重製 boot.ini,設定一些參數(identifier 之類),比較重要的是:「Enter OS Load options (輸入 OS 載入選項),當您收到這項訊息時,請輸入 /fastdetect」

      因為我的系統算是半個雙系統(XP + wubi 版 Ubuntu),所以可以在 Ubuntu 裡開啟 boot.ini(in C:\),看過後不覺得有損壞的情形,因此轉把方向轉向單純特定檔案毀損來考量(在 Ubuntu 看 C:\WINDOWS\ 裡都不準確,system\ 僅看的到 20+ 個檔案,system32\ 是什麼都見不到,因此就不知道 Hal.dll 是損毀還是遺失),將此一解決方案先擱置

  • CHKDSK 修復
    1. CHKDSK C: /R

      這個方法幾乎在 Hal.dll 的 problem 裡沒人提出,就頭痛醫頭,腳痛醫腳的觀念下,這並不是直接 hit the core,但是仔細推敲後我們會發現,Hal.dll 會損毀的原因不外乎應該就是病毒與硬體因素,我家電腦真的老舊,且過去硬碟也曾有過一些問題,所以 CHKDSK 是我願意率先採用的方法,當然如果確實為硬體毀損因素,也不一定能修復,到時我再轉向手動複製 Hal.dll,但是如果成功某種程度上是 least effort,另外順便讓硬碟做一下健檢也不錯。

      而檢測結果確實有些檔案損壞,在它嘗試修復重開。
      Yeah! Hal.dll 遺失的問題不見了,but...


But 它生成一個新問題:

下列檔案遺漏或毀損,無法啟動 C:\WINDOWS\system\vgaoem.fon 您可以用原始安裝磁片或光碟片來啟動 WINDOWS 安裝程式後,進行檔案修復。在第一個螢幕畫面中選擇‘r’後開始修護


考驗看來還沒有結束,看來損壞的檔案還不只一個,這下就真的得手動搬移了,進到修復管理員下查看 C:\WINDOWS\system\ 的檔案列表還真的沒有 vgaoem.fon 的蹤跡


根據 Google 大神的指示,這個問題比較單純,解決方案似乎都只有一個:


  • 從光碟複製 vgaoem.fo_ 來取代 vgaoem.fon
    1. copy vgaoem.fo_ C:\WINDOWS\system\

      首先切換到光碟機的磁槽,在進到 I386\ 下

    2. ren vgaoem.fo_ vgaoem.fon

      複製完成後再切到 C:\WINDOWS\system\ 下,對 vgaoem.fo_ 重新命名成 vgaoem.fon


重開機後,終於見到久為的 M$ 四色窗標誌~~


Reference:

遺失HAL.dll檔 - JR.Gemini's Knowledge Base

【图文教程】windows\system\vgaoem.fon损坏或丢失,无法启动windows,不想重做系统,该怎么办? - 焰舞非凡的空间


Read more!