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

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

次のファイルが存在しないかまたは壊れているため、

Windowsを起動できませんでした:

\system32\hal.dll.

上記のファイルをインストールし直してください。

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

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

原因

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

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

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

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

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

 

参考

Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。