SATA SSDをNVMe SSD(M.2 SSD)に移行したときにつまづいた箇所

## 背景と事象
今までHDDからSSD、SSDから新しいSSDへHDDやSDDのクローンを何度か実施して何ら問題なく移行してきました。10年ほど前のマザーボードを使用していてWindows11の要件を満たしていないのを機に、今回新しいマザーボートに変えました。SATA接続のSSDやらHDD、DVD/BRドライブはそのまま新しいマザーに繋げました。
ちなみに古いマザーで使用していたのはWindows10でUEFIブートです。
どうせならOSのSSDを新しい規格のSSDにしようということでNVMeのいわゆるM.2 SSDにクローンしました。
しかし、古いOS DISKを外して起動したのですが、以下のメッセージを出してWindowsが起動しませんでした。(いわゆるブルースクリーンというやつです)
```
0xc000000e
```
このエラーコードでサーチしたところ、ごまんとヒットしましたが、以下の理由でぴったりの方法は見つけられませんでした。探せなかっただけなのかもしれませんが。
1.MBRのDISKに対する方法やおまじないとしたコマンド類が書かれており、私の場合何をすれば良いのか読み解けなかった
2.起動を何度かすれば直るという記載があり、理由が記載されていなかったので納得できなかった
3.いろいろ試した方法が記載されていたが結局はクリーンインストールしていた

色々調べて何とか解決できましたので、私の解決方法を記述します。少しでもお役に立てたら幸いです。

# 私が解決した方法
1.　WindowsインストールUSBで起動しコマンドプロンプトに入る。
2.　DISKPARTでブート領域を見つけドライブレターを割りふる。
3.　ブート領域のBCDをrenameまたは削除する。
4.　bootrec /RebuildbcdでBCDを再作成する。
5.　USBを抜いて再起動させる。

## 手順の詳細
1. USB起動とコマンドプロンプトへの入り方
1-1.　起動用USBの作成方法は[Microsoftのページ](https://support.microsoft.com/ja-jp/windows/windows-%E7%94%A8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB-%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-99a58364-8c02-206f-aa6f-40c3b507420d)もしくは「windows インストールメディア　作成」で検索。修復にはプロダクト・キーは不要です。
1-2. USB起動してコマンドプロンプトに入るには[こちらの方法](https://www.billionwallet.com/windows11/windows-terminal/open-command-prompt-boot-windows-11/)が余分なことが書かれていないので良いです。(Windows11ですがUSB起動画面はWindows10も同様です)

2. DISKPARTでドライブレターの割り振り
ここが注意が必要な手順です。入力するコマンドは`command`で表記しています。大文字でも小文字でもかまいません。
2-1.　コマンドプロンプトから`diskpart`を入力します。
2-2.　`list volume`を入力して、Volumeのltrの部分はブランクとなっていてボリュームレターが割り振られていない数100MBのFAT32のVolumeを探します。私の場合は100MBでしたが、別のWindows11を導入したPCでは750MBでした。
2-3.　2-2.で見つけたVolume番号nを選択するために`select volume n`を入力します。nは数値です。
2-4.　確認のため、`list volume`を入力します。2-2で選択したVolumeの左はじにアスタリスク(*)が表示されていることを確認します。
2-5.　ボリュームラベルとしてBを使用したいので、`assign letter=b`を入力します。
2-6.　確認のため、`list volume`を入力します。2-2で選択したVolumeのltrがBと表示されていることを確認します。
2-7.　`exit`と入力してDISKPARTを終了させます。

3. ブート領域のBCDをrenameまたは削除する
これも注意が必要です。コマンドプロンプトから入力するコマンドは`command`で表記しています。スラッシュ`/`は円記号`¥`でかまいません。表示はバックスラッシュ`＼`(実際には半角)になります。
3-1. `b:`で2-5.で設定したBボリュームに入ります。
3-2. `cd /efi/microsoft/boot`でBCDのあるディレクトリーに移動します。このコマンドが失敗するようであればボリュームの選択が間違っていた可能性があります。
3-3. `ren bcd bcd.bak`でBCDをrenameします。削除しても良いのですが、後で検証するためにbcd.bakで保管しておきました。

4.BCDの再作成
3の続きのコマンドプロンプトから`bootrec /rebuildbcd`を入力し、BCDを再作成します。
以下のメッセージが出力されていればOKです。
```
Windowsのインストールとして認識された合計数：1
```
以下の表示がされた場合、BCDのrenameが失敗していた可能性があります。BCDの有無を`dir bcd*`で確認してください。すでにBCDがあるとコマンドが失敗しました。
```
Windows のインストールとして認識された合計数：0
```

5.再起動
この後は`exit`でコマンドプロンプトを終了させ、画面の指示に従い一度シャットダウンを行い、USBを抜いて再起動させればWindowsは立ち上がるはずです。

# クローン後起動できなかった理由
WindowsのBCD(Boot Configuration Data、ブート構成データ)にはWindowsを起動するためのブートローダーの場所が記載されています。これがpartition=xという形式で記載されていて、partitionはH/Wが認識するDISKとその中のパーティションの順番で決まります。
今までHDD/SDDをクローンした時は元のHDD/SSDを繋いでいたSTATケーブルで新しいSSDを接続したため、この順番は狂いませんでした。
ところが今回SATA SSDからNVMe SSDに変更したため、その順番が狂いました。他のマザーボードでも同じかもしれませんが、少なくとも私のマザーボード(ASROCK Z690 Pro RS)ではSATAのDISK、NVMeのDISKの順番でDISKが接続されているので、クローン元のpartitionではcとなっていても、NVMeの他にSATA SSDが接続されている環境ではpartionはd以降でないと起動すべきwindowsが見つからないという事態になります。
SATA SSDからNVMe SSDにクローンしてもSSDが一つであれば何の問題もなかったのですが、SSDを複数繋げている環境ではかならずBCDの変更が必要となるので、今回の手順が必要だったわけです。

たまにしかPCを組み立てないと、忘れてしまうものですね。

# 参考にしたドキュメント
## Microsoftのドキュメント
+ [Windows 用のインストール メディアを作成する](https://support.microsoft.com/ja-jp/windows/windows-%E7%94%A8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB-%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-99a58364-8c02-206f-aa6f-40c3b507420d)
手順で参照しているページです。マイクロソフトのサイトでWindows11のダウンロードページを探しても同様の記述が見つかりますし、Googleサーチでも多数みつかります。
+ [Windows でのブート オプションの概要](https://learn.microsoft.com/ja-jp/windows-hardware/drivers/devtest/boot-options-in-windows)
再度BCDについて学びました。
+ [UEFI 用の BCD システム ストアの設定](https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/bcd-system-store-settings-for-uefi?view=windows-11) 
Windows11用ですがWindows10でも同じです。
+ [Windows RE で Bootrec.exe を使用してスタートアップの問題を解決する](https://support.microsoft.com/ja-jp/topic/windows-re-%E3%81%A7-bootrec-exe-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%AE%E5%95%8F%E9%A1%8C%E3%82%92%E8%A7%A3%E6%B1%BA%E3%81%99%E3%82%8B-902ebb04-daa3-4f90-579f-0fbf51f7dd5d) 
古いWindows REでの記述なのでパスとかは異なりますが、基本的な考え方は同じです。

## Microsoft以外のドキュメント 
これらのサイトは具体的な手順が図とともにあるのでわかりやすいかもしれません。

+ [Windows 11の起動時にコマンドプロンプトを開く方法](https://www.billionwallet.com/windows11/windows-terminal/open-command-prompt-boot-windows-11/)
手順で参照しているページです。図が新しいので採用しています。
+ [デスクトップパソコンのハードディスクをSSDに交換したら動きが快適になりました！ ](https://perpetua.co.jp/archives/115) 
これが探した中では一番参考になりました。
+ [Windows が 0xc000000e で起動しない時のチェックポイントと対処法](https://freesoft.tvbok.com/tips/does_not_boot/error-0xc000000e.html) 
起動しなくなる理由が図解されていてわかりやすい。
+ [UEFI/GPTインストールしたWindowsの「ブート領域」の復旧方法](https://freesoft.tvbok.com/tips/efi_installation/uefi_bootrec.html)
上と同じ方のページです。不要な手順があるのでそれさえなければこれでも十分です。

# おまけ
Windowsが起動できるようになってから確認した私の環境のBCDの内容は以下のとおりでした。
ブートマネージャーのパーティションにBをアサインした後のbcdeditコマンド結果です。
```
Windows ブート マネージャー 
-------------------------------- 
identifier              {bootmgr} 
device                  partition=B: 
path                    \EFI\Microsoft\Boot\bootmgfw.efi 
description             Windows Boot Manager 
locale                  ja-JP 
default                 {default} 
displayorder            {default} 
timeout                 30 
 
Windows ブート ローダー 
-------------------------------- 
identifier              {default} 
device                  partition=G: 
path                    \Windows\system32\winload.efi 
description             Windows 10 Pro 
locale                  ja-JP 
osdevice                partition=G: 
systemroot              \Windows 
resumeobject            {69686e35-e97f-11ed-9c69-806e6f6e6963} 
bootmenupolicy          Standard 
```

* list diskの結果
元のSSDはフォーマットしSATAポートを変えてDISK 4として接続しています。
```
ディスク      状態           サイズ   空き   ダイナ GPT 
  ###                                          ミック 
  ------------  -------------  -------  -------  ---  --- 
  ディスク 0    オンライン          5589 GB  1024 KB        * 
  ディスク 1    オンライン           931 GB      0 B 
  ディスク 2    オンライン           931 GB      0 B 
  ディスク 3    オンライン           149 GB      0 B 
  ディスク 4    オンライン           465 GB  1024 KB        * 
  ディスク 5    オンライン           465 GB    25 MB        *  
```

* list volumeの結果 
元のSSDはフォーマットし直してVolume 5になっています。
なぜか回復パーティションが2つ(Vol.7とVol.9)もできていました。今後もUSBブートする予定なのでどちらも使用可能にしていないです。
```
Volume ###  Ltr Label        Fs    Type        Size     Status     Info 
  ----------  --- -----------  ----  ----------  -------  ---------  -------- 
  Volume 0     F                       DVD-ROM         0 B  メディアなし         
  Volume 1     Z   BKUP6T       NTFS   Partition   5589 GB  正常                 
  Volume 2     E   E-DISK       NTFS   Partition    931 GB  正常                 
  Volume 3     D   D-DISK       NTFS   Partition    931 GB  正常                 
  Volume 4     Y   INTELSSD     NTFS   Partition    149 GB  正常                 
  Volume 5     X   WDSSD25      NTFS   Partition    465 GB  正常                 
  Volume 6     C   M2SSD        NTFS   Partition    463 GB  正常         ブート 
  Volume 7                      NTFS   Partition    670 MB  正常         非表示 
  Volume 8                      FAT32  Partition    100 MB  正常         システ ム 
  Volume 9                      NTFS   Partition    893 MB  正常         非表示 

```

# おまけ2
SATA SSDからNVMe SSDに変えましたがWindowsの起動時間は気持ち早くなったかなというぐらいで、驚くほど短くはなりませんでした。
無事Windows11にもupgradeできましたし、マザーボートを変えても古いWindows 8.1のライセンスで認証はできています。
この後、もっと速度の速いNVMe([HIKSEMIのPCIe4のseq.readが7000MB/s超のSSD](https://www.hiksemitech.com/en/hiksemi/all-products/solid-state-drive/hs-ssd-future.html))が入手できたので、NVMe->NVMeでクローンしたところ、クローン時間が半減しました。何分もかかるような処理の場合は速さが実感できます。