Windows TIPS
[System Environment]
Tips   Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

現在使用されているHALのファイル名を調査する

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2010/06/04
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Window OSでは、ハードウェア・システムのタイプに応じて利用するHALが変わる。
システムを変更すると、HALを変更しなければならないことがある。
現在使用中のHALのタイプはHAL.DLLのプロパティで確認できる。

解説

 ハードウェアの更新や廃棄などのために、既存のWindows OSがインストールされた環境を新しいシステムへ移行させたいことがある。OSを新規インストールせず、既存のディスク(もしくはその内容を丸ごとコピーしたもの)をそのまま新しいシステムへ装着して起動できれば一番簡単だが、ハードウェアの構成によってはシステムの起動に失敗し、いわゆる「ブルー・スクリーン(致命的なエラーの発生を示す青い画面)」が表示されることがある。特に、何年も前のシステムから最新のシステムへ移行させようとした場合に、このような状態になることが多い。

Windows 2000で選択可能なHALのシステム タイプ

 Windows OSではシステムの構成に応じて何種類かのHALが使い分けられている。具体的には次のようなHALタイプがあり、それぞれ別のHALモジュール(DLLファイル)が利用される(TIPS「Windows 2000で選択可能なHALのシステム タイプ」も参照。このTIPSは対象はWindows 2000となっているが、ほかのOSでもほとんど同じである)。

システムのタイプ ファイル名 内容
標準 PC hal.dll ACPIなしで、MPSなし(シングルコア)のPC
MPS ユニプロセッサ PC halapic.dll ACPIなしで、MPSあり(シングルコア)のPC
MPS マルチプロセッサ PC halmps.dll ACPIなしで、MPSあり(マルチコア)のPC
ACPI (Advanced Configuration and Power Interface) PC halacpi.dll ACPIありで、MPSなし(シングルコア)のPC
ACPI ユニプロセッサ PC halaacpi.dll ACPIありで、MPSあり(シングルコア)のPC
ACPI マルチプロセッサ PC halmacpi.dll ACPIありで、MPSあり(マルチコア)のPC
Windows OSでサポートされているシステムのタイプ(主なもの)
システムのタイプに応じて利用するHALが変わる。これはWindows XP Professionalのインストール時などに表示されるシステムのタイプ名。MPSとはマルチプロセッサ・システムを利用するための仕様の名称。

 HALの選択は、基本的にはWindows OSのインストール時に行われる。そのため、ディスク・イメージの丸ごとコピーによるシステム移行ではHALは更新されない(逆に言えば、HALタイプが変わらないような移行ならば、ディスク・イメージのコピーによる移行でも成功する可能性が高いとも言える)。ただし最近のWindows OS(Windows Vista/Windows Server 2008以降)では、起動時に自動的にシステムをチェックして、適切なHALをロード機能があるので、HALの違いによるブルー・スクリーンは発生しにくくなっている。

 HALの違いに起因する起動失敗を避けるには、OSを新規インストールもしくはアップグレード・インストールするのが最も望ましいが、時間や手間がかかる。そこで応急措置的な対応として、HALモジュールを強制的に入れ替えてしまうという方法もある(ただしこのようなアップグレード方法はサポートの対象外となる)。インストール済みのOSイメージに対して、適切なHALモジュールを上書きするのである。

 上の表を見ると分かるように、HALのタイプに応じてそれぞれ別のDLLファイルが用意されている。マルチコア・システムへの移行に起因するエラーならば、マルチコア用のHALに変更すれば、問題を解消できる可能性がある。

 これを行うためには、まず現在どのHALモジュールが利用されているかを知る必要があるだろう。だが現在使用中のHALモジュールは(デフォルトでは)常にHAL.DLLという名前になっている。OSのインストール時に適切なHALモジュールを選択後、HAL.DLLという名前でシステム・フォルダにコピーしているからだ。

 そこで本TIPSでは、オリジナルのHALモジュールの名前を調べる簡単な方法を紹介する。

操作方法

 HAL.DLLのオリジナルのファイル名を知るには、HAL.DLLファイルのプロパティを調べるとよい。まずエクスプローラでWindowsのシステム・フォルダを開き(デフォルトではC:\WINNTやC:\Windowsなど)、System32フォルダの中にあるHAL.DLLファイルを右クリックして、ポップアップ・メニューから[プロパティ]を選択する。そして表示させたプロパティ画面で[バージョン情報]タブを選択し、「項目」の一覧から「正式ファイル名」の値を表示させる。ここに表示されているのが、コピー前のオリジナルのHALのファイル名である。

HAL.DLLファイルのプロパティ例
これは、あるWindows XP Professional SP3システムにインストールされているHAL.DLLファイルのプロパティ画面の例。元々は別のファイル名だったが、OSのインストール時にHAL.DLLという名前でシステム・フォルダにコピーされている。
このタブを選択する。
「正式ファイル名」にはオリジナルのファイル名が記録されている。
これが元のファイル名。このファイルは、Windows OSのインストール・ソースに置かれている。Windows XP Professionalの場合は、「HALAACPI.DL_」という名前で圧縮されて保存されているはず。これを展開してHAL.DLLという名前でコピーしている。ただしService Packや修正プログラムに含まれる形で、より新しいバージョンのものが提供されることもある。

 この例では「halaacpi.dll」と表示されているので、これはシングルコア対応のACPI PCシステムであることが分かる。マルチコア環境へ移行するなら、マルチコア対応のACPI PCシステム向けHALである「halmacpi.dll」を利用すれば、そのまま起動できる可能性が高いといえる。HALの入れ替え方法については、今後別TIPSで紹介する。

 なおHAL.DLL以外にも、NTOSKRNL.EXEというカーネル・モジュールも、システム環境に応じてオリジナル・ファイルをリネームしてコピーされている。これも同様に、ファイルのプロパティを使って確認できる。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間