背景と事象
今まで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を抜いて再起動させる。
手順の詳細
-
USB起動とコマンドプロンプトへの入り方
1-1. 起動用USBの作成方法はMicrosoftのページもしくは「windows インストールメディア 作成」で検索。修復にはプロダクト・キーは不要です。
1-2. USB起動してコマンドプロンプトに入るにはこちらの方法が余分なことが書かれていないので良いです。(Windows11ですがUSB起動画面はWindows10も同様です) -
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を終了させます。 -
ブート領域の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 用のインストール メディアを作成する
手順で参照しているページです。マイクロソフトのサイトでWindows11のダウンロードページを探しても同様の記述が見つかりますし、Googleサーチでも多数みつかります。 -
Windows でのブート オプションの概要
再度BCDについて学びました。 -
UEFI 用の BCD システム ストアの設定
Windows11用ですがWindows10でも同じです。 -
Windows RE で Bootrec.exe を使用してスタートアップの問題を解決する
古いWindows REでの記述なのでパスとかは異なりますが、基本的な考え方は同じです。
Microsoft以外のドキュメント
これらのサイトは具体的な手順が図とともにあるのでわかりやすいかもしれません。
-
Windows 11の起動時にコマンドプロンプトを開く方法
手順で参照しているページです。図が新しいので採用しています。 -
デスクトップパソコンのハードディスクをSSDに交換したら動きが快適になりました!
これが探した中では一番参考になりました。 -
Windows が 0xc000000e で起動しない時のチェックポイントと対処法
起動しなくなる理由が図解されていてわかりやすい。 -
UEFI/GPTインストールしたWindowsの「ブート領域」の復旧方法
上と同じ方のページです。不要な手順があるのでそれさえなければこれでも十分です。
おまけ
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)が入手できたので、NVMe->NVMeでクローンしたところ、クローン時間が半減しました。何分もかかるような処理の場合は速さが実感できます。