uefi-repair1
update 2022-04-06

要約
ESP (EFI System Partition) を作成していない場合に新規作成する。
削除してしまったESP (EFI System Partition) を作り直す。

環境
win11 / 10 / 8 / 7
uefi-repair1-1.jpg
作業手順
※インストールDVDでPC起動してコマンドプロンプトで作業する。
X:\Sources> diskpart
DISKPART> list disk
DISKPART> select disk # // # は 削除してしまったEFIシステムpartitionのdisk番号
DISKPART> list partition //partitionの確認
DISKPART> create partition efi size=128//EFI partitionを作成
DISKPART> format quick fs=fat32 //fat32でformat
DISKPART> list partition //partitionの確認
DISKPART> list volume //Windows OSがインストールされているvolumeを確認
---必要に応じてvolumeにドライブレターを割り当て直しておく。(後続作業でbcdbootコマンド実行時に指定する)
DISKPART> select volume #  // # はWindows ブート・パーティションのvolume番号
DISKPART> assign letter C
DISKPART> select volume #  // # は上記で作成したEFIシステムpartitionのvolume番号
DISKPART> assign letter I
---
DISKPART> exit //diskpart終了
bcdbootコマンドでブート情報(BCDストア)を作成する
X:\Sources> bcdboot C:\windows /l ja-jp /s I: /f UEFI
※bcdbootはWindows partitionからbootファイルをコピーして EFI system partitionにBCDストア(システムファイル)を作成する
C は上記でassignしたWindows ブート・パーティションのドライブ・レター、I はEFIシステムpartitionのドライブ・レター
/l はlocale ,/s はシステムpartition ,/f はfirmware

PC再起動してWindowsが正常に起動することを確認する。
※BIOS/UEFI 設定にて、UEFIデバイスとして認識されていることを確認してブートする。

参考
WindowsのEFIフォルダの構成
uefi-repair1-2.jpg


GPTディスクにESP(EFIシステムパーティション)を新規作成する例
diskpartコマンドによる作成
X:\Sources> diskpart
DISKPART> select disk 0
DISKPART> clean
DISKPART> convert gpt
DISKPART> create partition efi size=128
DISKPART> format quick fs=fat32 label="System" //EFI System partition
DISKPART> assign letter="I"
DISKPART> create partition msr size=256  //MSR:Microsoft reserved partition (Microsoft 予約パーティション)なので、ドライブレターは割り当てない。
DISKPART> create partition primary
DISKPART> format quick fs=ntfs label="Windows" //Windowsをインストールするpartition
DISKPART> assign letter="C"
DISKPART> exit



MBR HDDをGPTに変換してUEFI HDDに移行する方法

事前準備
・gptgen をダウンロードして展開。
https://sourceforge.net/projects/gptgen/
gptgen.exeだけが必要なのでC:\Windows\System32に置いておく。
・USBブートのwindows10インストールメディア
USBで起動してコマンドプロンプトを使うために必要である。
Windows 10 のインストールメディアは、メディア作成ツールで簡単に作成できる。
windows10ダウンロードページからUSBインストールメディアを作成。
https://www.microsoft.com/ja-jp/software-download/windows10
windowsインストールDVD(またはwindows修復disc , またはwindows修復USB)で作業してもいい。

作業手順
※事前準備
現在のHDDに500MB程度の、「未割り当て領域」を確保しておく。(UFFIパーティション:200MB , MSRパーティション:300MB用である)
適切なvolumeを選択して「ボリュームの縮小」で500MB程度を縮小しておく。
diskpart で行なう場合は下記のようになる。
list volume  (ボリュームを確認)
select volume X  (ボリュームを指定)
shrink querymax  (縮小できるサイズを確認。縮小後のサイズを確認できる)
shrink desirerd=500  (縮小する容量をMBで指定)
1)
「ディスクの管理」でGPT に変換したいディスクの番号を確認
ここでは「ディスク 0」であるとする。
2)
管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行。
処理は瞬時に終わる。
physicaldrive0 の 番号「0」は「ディスク 0」の番号である。
C:\Windows\System32\>gptgen.exe -w \\.\physicaldrive0
この時点でMBRディスクとしての起動はできない状態になっている。
3)
UEFI起動用のパーティションを作成する。
Windows 10 のインストールメディア(USB メモリ)から起動する。
起動はUEFIデバイスのUSBを指定する。
起動したら【コンピューターを修復する】→【トラブルシューティング】→【コマンド プロンプト】と選択してコマンドプロンプトを起動する。
コマンドプロンプトで diskpart を起動する。
DISKPART>list disk
DISKPART>select disk 0
DISKPART>list partition
---UEFI システムパーティションと MSR(Microsoft Reserved Partition=システム予約済みパーティション)を新規作成する。
DISKPART>create partition EFI size=200
DISKPART>format quick fs=fat32
DISKPART>assign letter=I
---MSR を作成
DISKPART>create partition msr size=300  (サイズを指定しなければ残り全領域を指定したことになる)
DISKPART>list partition
---ドライブレターを確認(後続のbcdbootコマンド処理に備えて、必要ならばドライブレターを変更する)
DISKPART>list volume
DISKPART>select volume #  //Windowsのブートパーティションのvolume番号
DISKPART>assign letter=C
DISKPART>exit
4)
ブートローダーを設定する
X:\Sources>bcdboot C:\Windows /l ja-JP /s I: /f UEFI
/s オプションの引数として UEFI システムパーティションに割り当てたドライブレター(今回の場合は I:)を指定する。
5)
上記の作業終了後に PC起動すれば UEFI 環境で起動する。



BCDbootのコマンドライン オプション
日本語サイト
https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/bcdboot-command-line-options-techref-di?view=windows-11
英語サイト
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/bcdboot-command-line-options-techref-di?view=windows-11
コマンドライン  オプション
BCDBOOT <source> [/l <locale>] [/s <volume-letter> [/f <firmware type>]] [/v] [/m [{OS Loader GUID}]] [/addlast or /p] [/d] [/c]

<source>
ブート環境ファイルのコピー元として使用する Windows ディレクトリの位置を指定します。
(例)C:\Windows フォルダーにある BCD ファイルを使ってシステム パーティションを初期化します。
bcdboot C:\Windows

/l <locale>
ロケールを指定します。既定値は英語 (米国) です (en-us)。
(例)既定の BCD ロケールを日本語に設定します。
bcdboot C:\Windows /l ja-jp

/s <volume letter>
システム パーティションのボリューム文字を指定します。

UEFIシステムの場合
・BCDboot は、EFI システム パーティションまたは /s オプションで指定されたパーティションに、ブート ファイルをコピーします。
・BCDBoot は、同じパーティション内に BCD ストアを作成します。

BIOSシステムの場合
・BCDboot は、プライマリ ハード ドライブ上のアクティブ パーティションまたは /s オプションで指定されたパーティションに、ブート ファイルをコピーします。
・BCDBoot は、同じパーティション内に BCD ストアを作成します。

(例)C:\Windows フォルダーにある BCD ファイルを、別のコンピューターで起動するセカンダリ ハード ドライブ上のシステム パーティションにコピーします。
セカンダリ ドライブ上のシステム パーティションには、ボリューム文字 I が割り当てられているものとします。
bcdboot C:\Windows /s I:

/f <firmware type>
/f オプションを指定した場合は、/s オプションも指定して、システム パーティションのボリューム文字を識別する必要があります。
ファームウェアの種類を指定します。有効な値は、UEFI、BIOS、ALL です。

・BIOS/MBR ベースのシステムでは、既定値は BIOS です。このオプションは、システム パーティションに \Boot ディレクトリを作成し、必要なすべてのブート環境ファイルをこのディレクトリにコピーします。
bcdboot C:\Windows /s I: /f BIOS
 

・UEFI/GPT ベースのシステムでは、既定値は UEFI です。このオプションは、\Efi\Microsoft\Boot ディレクトリを作成し、必要なすべてのブート環境ファイルをこのディレクトリにコピーします。
bcdboot C:\Windows /s I: /f UEFI

ALL を指定すると、BCDboot は \Boot と \Efi\Microsoft\Boot の両方のディレクトリを作成し、BIOS と UEFI に必要なすべてのブート環境ファイルをこれらのディレクトリにコピーします。
(例)C:\Windows フォルダーにある、UEFI ベースのコンピューターまたは BIOS ベースのコンピューターでの起動をサポートする BCD ファイルを、ボリューム文字 I が割り当てられたドライブにコピーします。
bcdboot C:\Windows /s I: /f ALL


end of list