【Win10】任意のディスクにEFIブートローダをインストールする

#経緯
Win10がインストールされたPCをメンテしていたところ、EFIブートローダが何故かバックアップ用のHDDにインストールされていることに気付きました。データのやり取りが多いHDDの上にブートローダがあるのは気持ちが悪いので、CドライブのあるSSD上に移動しようと試みました。

###構成
SSD:　 Cドライブ
HDD:　Dドライブ(データストレージ用) + ***ESP<sup>※</sup>***
※ESP(EFI System Partition)

↓これをこうしたい

SSD:　 Cドライブ + ***ESP***
HDD:　Dドライブ(データストレージ用)

この方が構成的にスマートな気がする。

#やったこと
###ESP用領域の確保
既存ESPの領域は200MBだったのでSSDの領域を200MBだけ縮小しました。今回はGUI(ディスクの管理)からやりましたが、CUI(Diskpart)からでもよいです。
※EFIブートローダを載せるディスクのパーティション形式はGPTである必要があるので注意！

そうするとこうなる
SSD:　 Cドライブ + 空き領域(200MB)
HDD:　Dドライブ(データストレージ用) + ESP

###Diskpartの起動
・Win10のインストールCDを挿入し、ブートする
・言語やキーボードの選択画面が出るので「次へ」をクリック
・左下の方にある「コンピュータを修復する」をクリック
・オプションの選択画面が表示されるので「トラブルシューティング」をクリック
・「詳細オプション」＞「コマンドプロンプト」を選択

```:cmd

X:\Sources>
```

プロンプトが表示されました。

###EFIシステムパーティションの作成
Diskpartを起動します。

```:cmd
X:\Sources>Diskpart
DISKPART>
```
ディスクの一覧を表示します。

```:cmd
DISKPART>List disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン        127 GB      0 B　　　　 *
  ディスク 1    オンライン       1024 GB      0 B　　　　 *
```
ディスク0(対象のSSD)を選択

```:cmd
DISKPART>Select disk 0

ディスク 0 が選択されました。 

DISKPART>List disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン        127 GB      0 B　　　　 *
* ディスク 1    オンライン       1024 GB      0 B　　　　 *
```

パーティションの一覧を表示します。

```:cmd
DISKPART> List partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ             126GB  1024 KB
 ```
元々あったパーティションしか存在していません。

EFIブートローダ用のパーティションをCreate partitionコマンドで作成します。 size指定はメガバイト単位になります。

```:cmd
DISKPART> Create partition EFI size=200

DiskPart は指定したパーティションの作成に成功しました。

DISKPART> List partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ            126 GB  1024 KB
* Partition 2    システム              200 MB   126 GB
```
ボリュームを確認します。

```:cmd
DISKPART> List volume

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
 ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     C                NTFS   Partition    126 GB  正常       ブート
* Volume 1                      RAW    Partition    200 MB  正常       非表示
  Volume 2     D   　　　　　　  NTFS   Partition   1026 GB  正常
  Volume 3        ESP　　　　　　FAT32  Partition    200 MB  正常
```

200MBの新しいボリュームがVolume 1として作成されています。
Volume 3はDドライブ側のHDDに乗っているESPですね。

まだファイルシステムが未設定なので、FAT32に指定します。

```:cmd
DISKPART> Format quick fs=fat32 label="ESP"

  100% 完了しました

DiskPart は、ボリュームのフォーマットを完了しました。

DISKPART> List Volume

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
 ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     C                NTFS   Partition    126 GB  正常       ブート
* Volume 1        ESP           FAT32  Partition    200 MB  正常       非表示
  Volume 2     D   　　　　　　  NTFS   Partition   1026 GB  正常
  Volume 3        ESP　　　　　　FAT32  Partition    200 MB  正常
```
ドライブレターを設定します。今回はなんとなく使わなさそうなPドライブに指定します。

```:cmd
DISKPART> Assign letter=P

DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。

DISKPART> List volume

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
 ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     C                NTFS   Partition    126 GB  正常       ブート
* Volume 1     P  ESP           FAT32  Partition    200 MB  正常       非表示
  Volume 2     D   　　　　　　  NTFS   Partition   1026 GB  正常
  Volume 3        ESP　　　　　　FAT32  Partition    200 MB  正常
```

これで枠が完成。
DiskpartをExitで抜け出し、bcdbootコマンドでブートローダをインストールします。

```:cmd
X:\Sources>bcdboot C:\Windows /s P: /f UEFI
ブート ファイルは正常に作成されました。
```

以上でブートローダのインストールが完了です。

こんなかんじになってます。
SSD:　 Cドライブ + ESP
HDD:　Dドライブ(データストレージ用) + ESP

今回起動の確認はHDDを物理的に引っこ抜いてブートするかどうかで確認しましたが、起動ディスクを選択するなどしてもいいです。
起動の確認出来たら、HDD側に乗ってる古いESPは削除します。GUIでは消せないので、Diskpartで消します。

###参考(HDDの方のESPを消す)

```:cmd
DISKPART>List disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン        127 GB      0 B　　　　 *
  ディスク 1    オンライン       1024 GB      0 B　　　　 *

DISKPART>Select disk 1

ディスク 0 が選択されました。

DISKPART>List disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン        127 GB      0 B　　　　 *
* ディスク 1    オンライン       1024 GB      0 B　　　　 *

DISKPART> List partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ           1023 GB  1024 KB
  Partition 2    システム              200 MB  1023 GB

DISKPART> Select partition 2

パーティション 2 が選択されました。

DISKPART> List partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ           1023 GB  1024 KB
* Partition 2    システム             200 MB   1023 GB

DISKPART> Delete partition override

DiskPart は選択されたパーティションを正常に削除しました。

DISKPART> List partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ           1023 GB  1024 KB
```
消したパーティションの領域がフリーになったので、GUIかextendコマンド等で拡張しちゃいましょう。

これで完成です！
SSD:　 Cドライブ + ESP
HDD:　Dドライブ(データストレージ用)

すっきりしました。

#参考
[Windows10のUEFIブートローダーを修復してみた](https://kazblog.hateblo.jp/entry/2016/07/04/005126)