昨日まで動いていたWindows XPのパソコンを起動すると
次のファイルが存在しないかまたは壊れているため、
Windowsを起動できませんでした:
<Windows root>\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