PCのROMに組み込まれているBIOSは、PCの起動直後に実行され、OSのブートローダーを呼び出す役割を持ちます。BIOSの種類には、古い(旧、レガシー)BIOSと新しいUEFIの2つがあります。エンドユーザーの多くは、BIOSなのか、UEFIなのかを気にすることなく、PCを使っていると思いますが、知る必要がある場面も出てくるでしょう。その方法を幾つかピックアップしてみました。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
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かを知る方法を幾つかピックアップして紹介します。
「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の右)。
Msinfo32が利用できる場合はこれが最も簡単な方法ですが、古いバージョンのWindowsや、Server CoreインストールのWindows Serverでは利用できません。
コマンドプロンプト(または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)。しかしながら、得られる情報はあくまでもヒントであり、決定的なものではありません。
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)。
BIOSかUEFIかを識別するためだけに、第三者が作成したPowerShellモジュールを導入するのはちょっと気が引ける、あるいは大げさ過ぎると思うかもしれません。モジュールをインストールするには管理者権限も必要です。筆者自身、Windows標準のコマンドやツールで確認できた方がよいと思います。
Windows PowerShell 5.1では、Msinfo32のPowerShell版ともいえる「Get-ComputerInfo」コマンドレット(Microsoft.PowerShell.Managementモジュールに含まれる)が利用可能になりました。
Copyright © ITmedia, Inc. All Rights Reserved.