UEFI 用の BCD システム ストアの設定

一般的な展開シナリオでは、BCD ストアに変更を加える必要はありません。 このトピックでは、変更を加えることのできる BCD ストア内の各種 BCD 設定について取り上げます。 UEFI システム上の次のブート アプリケーションの設定が対象となります。

以降のセクションでは、これらの各ブート アプリケーションに用意されている設定の詳細のほか、UEFI システムの各アプリケーションに変更を加える方法について説明します。

簡潔にするために、このセクションで取り上げる BCDEdit の例では、BCD システム ストアに変更を加えています。 BCD-template のコピーなど、他のストアに変更を加える場合は、コマンド ラインにストア名を含めてください。

UEFI 用の Windows ブート マネージャーの設定

ブート プロセスは、Windows ブート マネージャー ({bootmgr}) によって管理されます。 UEFI ベースのシステムには、NVRAM に格納されている変数に応じた EFI アプリケーションを読み込むファームウェア ブート マネージャー Bootmgfw.efi が存在します。

ファームウェア ブート マネージャーは、Windows ブート マネージャーの device 要素と path 要素の BCD 設定に指定されています。 Windows の BCD-template という名前のテンプレートには、Windows ブート マネージャーに関して次の設定が含まれています。

## Windows Boot Manager

identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager

デバイス設定

Windows ブート マネージャーを含んだボリュームは、device 要素で指定されます。 UEFI システムでは、Windows ブート マネージャーの device 要素が、システム パーティションのボリューム文字に設定されます。 正しいボリューム文字を調べるには、Diskpart ツールを使用してディスク パーティションを表示します。 次の例は、ハード ドライブが 1 台のシステムを想定しています。このハード ドライブには、ドライブ文字として S が割り当てられたシステム パーティションを含め、複数のパーティションが存在します。

次の Diskpart コマンドはディスク 0 を選択したうえで、ボリュームのドライブ文字など、そのディスク上にあるボリュームの詳細を一覧表示します。 ボリューム 2 がシステム パーティションとして表示されています。

DISKPART> select disk 0
DISKPART> list volume

  Volume ###  Ltr  Label   Fs     Type        Size     Status     Info
  ----------  ---  ------  -----  ----------  -------  ---------  ------
  Volume 0     D           NTFS   Partition    103 GB  Healthy
  Volume 1     C           NTFS   Partition     49 GB  Healthy    Boot
  Volume 2     S           FAT32  Partition    200 MB  Healthy    System

システム パーティションにドライブ文字が割り当てられていない場合は、Diskpart assign コマンドを使用して割り当てます。 次の例では、システム パーティションがボリューム 2 であると想定し、ドライブ文字として S を割り当てています。

Diskpart
select disk 0
list volume
select volume 2   // assuming volume 2 is the system partition
assign letter=s

システム パーティション ボリュームを特定したら、Windows ブート マネージャーの device 要素を対応するドライブ文字に設定します。 次の例では、device を S ドライブに設定しています。

Bcdedit /set {bootmgr} device partition=s:// system partition

ヒント

ここまでで Diskpart を使用してドライブ文字を取得し、その後 PC を再起動した場合は、このコマンドを実行する前に、Diskpart を使用して再度ドライブ文字を確認してください。 環境によっては、ドライブ文字が変化する可能性があるため、設定しているパーティションが正しいことを確認してください。

パスの設定

path 要素は、そのボリューム上の Windows ブート マネージャー アプリケーションの場所を指定します。 UEFI システムの場合、path にはファームウェア ブート マネージャーが指定され、そのパスは \EFI\Microsoft\Boot\Bootmgfw.efi になります。

BCD-template のパスが正しいことは、次のようにストア内の値を列挙することによって確認できます。

bcdedit /store bcd-template /enum all

明示的に path\EFI\Microsoft\Boot\Bootmgfw.efi に設定するには、次のコマンドを使用します。

Bcdedit /set {bootmgr} path \efi\microsoft\boot\bootmgfw.efi

その他の設定

Windows ブート マネージャーは、UEFI ファームウェアの表示順における先頭の項目となるように設定する必要があります。その例を次に示します。

Bcdedit /set {fwbootmgr} displayorder {bootmgr} /addfirst

また、Windows ブート マネージャーの表示順における最上位の Windows ブート ローダー アプリケーションも指定する必要があります。 次の例は、特定の Windows ブート ローダーを表示順の先頭に設定する方法を示しています。

Bcdedit /set {bootmgr} displayorder {<GUID>} /addfirst

前の例の <GUID> は、指定する Windows ブート ローダー オブジェクトの識別子です。 この識別子については、次のセクションで詳しく説明します。

Note

複数のオペレーティング システムがインストールされたマルチブート システムには、Windows ブート ローダーのインスタンスが複数存在します。 Windows ブート ローダーのインスタンスにはそれぞれ独自の識別子が割り当てられます。 そのいずれかの識別子を既定の Windows ブート ローダー ({default}) に設定できます。

Windows ブート ローダーの設定

BCD ストアには、Windows ブート ローダーのインスタンスが少なくとも 1 つ存在します。複数のインスタンスが存在することもあります。 各インスタンスは、個々の BCD オブジェクトによって表されます。 インストールされているいずれかのバージョンの Windows が各インスタンスによって読み込まれ、オブジェクトの要素によって指定された構成が Windows に割り当てられます。 Windows ブート ローダー オブジェクトにはそれぞれ独自の識別子が割り当てられ、そのオブジェクトの device 設定と path 設定によって、正しいパーティションとブート アプリケーションが指定されます。

Windows の BCD-template には、次の設定を含んだ Windows ブート ローダー オブジェクトが 1 つ存在します。

## Windows Boot Loader

identifier              {9f25ee7a-e7b7-11db-94b5-f7e662935912}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Microsoft Windows Server
locale                  en-US
inherit                 {bootloadersettings}
osdevice                partition=C:
systemroot              \Windows

この Windows ブート ローダーの識別子は {9f25ee7a-e7b7-11db-94b5-f7e662935912} です。 お使いのシステムには、この GUID を使用するか、または BCDEdit ツールを使用して新しい GUID を自動的に生成することができます。

BCDEdit コマンドを単純化するために、BCD システム ストア内のいずれかの Windows ブート ローダーを既定のローダーとして指定できます。 そうすれば完全な GUID の代わりに標準の識別子 ({default}) を使用できます。次の例では、BCD-template にある GUID 識別子を使用するという前提で、EFI の Windows ブート ローダーを既定のブート ローダーとして指定しています。

Bcdedit /default {9f25ee7a-e7b7-11db-94b5-f7e662935912}

デバイスと OSDevice の設定

キーの場所は、次の要素によって指定されます。

  • device 要素は、ブート アプリケーションがあるパーティションを指定します。
  • osdevice 要素は、システム ルートがあるパーティションを指定します。

EFI の Windows ブート ローダーでは、どちらの要素も通常は、Windows システム パーティションのドライブ文字に設定されます。 ただし、BitLocker が有効になっている場合やコンピューターに複数のバージョンの Windows がインストールされている場合、osdevicedevice が異なるパーティションに設定されることもあります。BCD-template では、どちらの要素も、標準の値である C ドライブに設定されています。 また、osdevicedevice の値を明示的に設定することもできます。その例を次に示します。 この例も、EFI の Windows ブート ローダーが既定のブート ローダー オブジェクトとして指定されていることを前提としています。

Bcdedit /set {default} device partition=c:
Bcdedit /set {default} osdevice partition=c:

パスの設定

Windows ブート ローダーの path 要素は、そのボリューム上のブート ローダーの場所を指定します。 UEFI システムの場合、path には EFI の Windows ブート ローダーが指定され、そのパスは \Windows\System32\Winload.efi になります。

BCD-template の path が正しいことは、ストア内の値を列挙することによって確認できます。 また、path の値を明示的に設定することもできます。その例を次に示します。

Bcdedit /set {default} path \windows\system32\winload.efi

Windows メモリ テスターの設定

Windows メモリ テスター ({memdiag}) は、ブート時にメモリの診断を実行します。 正確なアプリケーションは、アプリケーションの device 要素と path 要素の BCD 設定で指定されます。

Note

Intel Itanium コンピューターには Windows メモリ テスターは含まれていないため、{memdiag} の設定は不要です。

Windows の BCD-template には次の設定があります。

## Windows Memory Tester

identifier              {memdiag}
device                  partition=\Device\HarddiskVolume1
path                    \boot\memtest.exe
description             Windows Memory Diagnostic

デバイス設定

UEFI システムでは、Windows メモリ テスターの device 要素がシステム パーティションのドライブ文字に設定されます。 次の例では、システム パーティションが、前出の例で使用した S ドライブであることを想定しています。

Bcdedit /set {bootmgr} device partition=s:  // system partition

パスの設定

path 要素は、device 要素で指定されたボリューム上の Windows Test Manager の場所を指定します。 UEFI システムの場合、path には EFI バージョンのアプリケーション (\EFI\Microsoft\Boot\Memtest.efi) が指定されます。

BCD-template の path が正しいことは、ストア内の値を列挙することによって確認できます。 また、BCDEdit ツールを使用して、path の値を明示的に設定することもできます。その例を次に示します。

Bcdedit /set {memdiag} path \efi\microsoft\boot\memtest.efi