XPで「hal.dll」が壊れた?boot.iniとMBRの修復方法

昨日まで動いていたWindows XPのパソコンを起動すると

次のファイルが存在しないかまたは壊れているため、
Windowsを起動できませんでした:
<Windows root>\system32\hal.dll.
上記のファイルをインストールし直してください。

と表示され、正常に起動しない事態に陥りました。

再インストールをしたくないので、正常なWindowsXPのパソコンのhal.dllを起動しないディスクに上書きしても同じ症状でした。

原因

実際はhal.dllは壊れておらず、boot.iniの破損でした。

boot.iniには起動の際、どのドライブのどのパーテーションを読み込めばいいかが記載されており、これが破損すると、どこにシステムがいるかわからなくなり、なぜか「hal.dllが壊れている」とエラーを出すようです。

これ以外にはMBRの破損ということもあるようです。

MBR(マスターブートレコード)とboot.iniの修復方法

  1. WindowsXPのインストールディスクを入れてCDから起動
  2. 「セットアップの開始」という画面でrを押して修復を選択
  3. 「以下のいずれかのキーを押して、キーボードの種類を特定してください。」という画面が表示されたら半角/全角を押す
  4. 「よろしいですか?」と聞かれたらキーボードの種類を確認しyを押す
  5. 「どのWindowsインストールにログインしますか?」と聞かれるので1を押してEnter
  6. 「Administratorのパスワードを入力してください」と聞かれるのでパスワードを入力してEnter(パスワードを設定していない場合はそのままEnter)
  7. 「c:\>」が現れたらfixbootと入力しEnter
  8. 「新しいブートセクタをパーチションC:に書き込みますか?」と聞かれるのでyを押しEnter
  9. fixmbrと入力しEnter
  10. 「新しいMBRを書き込みますか?」と聞かれるのでyを押しEnter
  11. Windows XPのBoot.iniまで修復する場合はbootcfg /rebuildと入力しEnter
  12. 「インストールをブート一覧に追加しますか?」と聞かれるのでyを押しEnter
  13. 「読み込み識別子を入力してください」と聞かれるのでMicrosoft Windows XP Home Editionと入力しEnter
  14. 「読み込みオプションを入力してください」と聞かれるので/fastdetectと入力しEnter
  15. exitと入力しEnterを押して再起動

 

これで治りました!

 

修復後のboot.iniの内容

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

 

参考