そのPCのファームウェアはBIOSか、それともUEFIか、知りたい?――確認するための6つの方法その知識、ホントに正しい? Windowsにまつわる都市伝説(149)

PCのROMに組み込まれているBIOSは、PCの起動直後に実行され、OSのブートローダーを呼び出す役割を持ちます。BIOSの種類には、古い(旧、レガシー)BIOSと新しいUEFIの2つがあります。エンドユーザーの多くは、BIOSなのか、UEFIなのかを気にすることなく、PCを使っていると思いますが、知る必要がある場面も出てくるでしょう。その方法を幾つかピックアップしてみました。

» 2019年11月27日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

UEFIの利点についてのおさらい(念のため)

 Windowsのインストールをカスタマイズしたり、OSイメージ展開をしたり、起動問題をトラブルシューティングするようなITプロフェッショナルにとっては、そのPCが古い(旧、レガシー)BIOS(Basic Input/Output System)ベースなのか、新しいUEFI(Unified Extensible Firmware Interface) BIOSベースなのかを知ることは重要です(以降、本稿では古いBIOSを「BIOS」、新しいUEFI BIOSを「UEFI」と表現します)。

 しかし、ほとんどのエンドユーザーさんにとっては、日常的なPCの利用において、どちら(BIOS/UEFI)であるかを気にすることはほとんどないし、両者の違いを知らなくても不自由はないでしょう。

 一般的に古いPCはBIOSベース、最近の新しいPCはUEFIベースのものが主流です。UEFIは、Windows(特にWindows 10)のセキュリティ機能のシステム要件になっていたり、起動や再開が高速という利点があったりします。

 UEFIは、より大きなディスクと多数のパーティションをサポートしているという利点もあります(BIOS/MBR《Master Boot Record》システムは最大4パーティション、最大2TBまで。UEFI/GPT《GUID Partition Table》システムは最大128パーティション、最大18E《エクサ》B)。

 WindowsにおけるUEFIの利点について詳しく知りたければ、以下の公式ドキュメントをご覧ください。

 そのPCで既にWindowsが動いている場合は、BIOSまたはUEFIのいずれか適切な方に対応した方法でWindowsがセットアップされています。通常、ユーザーが変更するものではありません。UEFI対応のシステムを意図的にBIOSモードにすることも可能ですが、それはWindowsのインストール前に行うことであり、後から変更するとWindowsが起動できなくなるはずです。何らかの理由(OSが対応していなかったなど)で現状、BIOSモードで利用している場合に、新しいOSを新規インストールするタイミングで本来のUEFIモードに戻すということはあるかもしれません。

 いずれにしろ、まずはBIOSかUEFIかを知ることが必要になる場合があります。今回はBIOSかUEFIかを知る方法を幾つかピックアップして紹介します。

[方法1]システム情報(Windows標準ツール)

 「Windows 8」以降および「Windows Server 2012」以降では、Windowsの標準ツールである「システム情報」(%Windir%\System32\Msinfo32.exe:以下、Msinfo32)を起動すると、「システムの要約」の「BIOSモード」という項目で、BIOSかUEFIかを確認できます。

 BIOSの場合は「レガシ」、UEFIの場合は「UEFI」と表示されます(画面1の左と中央)。なお、「Windows 7」以前および「Windows Server 2008 R2」以前の「システム情報」には、「BIOSモード」という項目は存在しません(画面1の右)。

画面1 画面1 画面左はBIOSのWindows 10、画面中央はUEFIのWindows 8.1、画面右はBIOSのWindows 7 SP1(BIOSモードの項目は存在しない)

 Msinfo32が利用できる場合はこれが最も簡単な方法ですが、古いバージョンのWindowsや、Server CoreインストールのWindows Serverでは利用できません。

[方法2]WMICまたはSysteminfo(Windows標準コマンド)

 コマンドプロンプト(またはWindows PowerShellウィンドウ)で、次のいずれかのコマンドラインを実行すると、BIOSのバージョン情報を取得することができます。

WMIC BIOS GET BIOSVersion

 または

Systeminfo |findstr /i "BIOS"

 「WMIC」はWindows Management Instrumentation(WMI)から情報を取得するコマンド、「Systeminfo」(%Windir%\System32\Systeminfo.exe)はMsinfo32のコマンドライン版のようなものです。取得したBIOSのバージョン情報に「BIOS」または「UEFI」という文字列が含まれていれば、それがヒントになるかもしれません(画面2)。しかしながら、得られる情報はあくまでもヒントであり、決定的なものではありません。

画面2 画面2 WMICやSysteminfoコマンドでBIOSバージョン情報から判断できる場合もあるし、できない場合もある。画面左はBIOSのWindows 7 SP1(BIOSと分かる)、画面右はUEFIのWindows 10(UEFIとは判断できない)

[方法3]Get-FirmwareType(PowerShell Gallery)

 Windowsでファームウェアの種類を確認する方法としては、プログラム的にWin32 APIを利用する方法が用意されています。Windows 8およびWindows Server 2012以降は「GetFirmwareType」、Windows 7およびWindows Server 2008 R2以前は「GetFirmwareEnvironmentVariable」が用意されています。Msinfo32の「BIOSモード」項目は、GetFirmwareTypeが利用可能になったことにより追加されたのでしょう。

 プログラマーではない一般ユーザーがWin32 APIを呼び出すのは容易なことではなく、現実的な方法ではありません。「PowerShell Gallery」で公開されている「GetFirmwareBIOSorUEFI」モジュールを導入し、「Get-FirmwareType」というコマンドレットを実行することで、GetFirmwareTypeまたはGetFirmwareEnvironmentVariableの適切なAPIを使用してBIOSまたはUEFIを識別することができます(画面3)。

画面3 画面3 GetFirmwareBIOSorUEFIモジュールのGet-FirmwareTypeコマンドレットによるBIOSとUEFIの識別(モジュールのインストール/アンインストールには管理者権限が必要)。画面左はBIOSのWindows 7 SP1、画面右はUEFIのWindows 10

 BIOSかUEFIかを識別するためだけに、第三者が作成したPowerShellモジュールを導入するのはちょっと気が引ける、あるいは大げさ過ぎると思うかもしれません。モジュールをインストールするには管理者権限も必要です。筆者自身、Windows標準のコマンドやツールで確認できた方がよいと思います。

[方法4]Get-ComputerInfo(Windows PowerShell 5.1)

 Windows PowerShell 5.1では、Msinfo32のPowerShell版ともいえる「Get-ComputerInfo」コマンドレット(Microsoft.PowerShell.Managementモジュールに含まれる)が利用可能になりました。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。