第2回 Windows Update のたびに起動しなくなる?(BCD と回復環境の修復メモ)

:第1回から23年ぶりのコラムです(^^;

自宅のデスクトップPC(Windows 11)で、毎月の Windows Update のあとの再起動で、 ブートエラーが出て起動しなくなる、ということが続いていました。
そのたびに USB のインストーラーから起動して直していたのですが、さすがに毎月はつらい。。
そこで、「せめて回復環境(Windows RE)を有効にして、USB なしで直せるようにしよう」と思ったのが今回の作業のきっかけです。

結果的には、回復環境は有効になり、BCD(ブート構成データ)の不整合も直って、 その後の Windows Update でもエラーは出ていません。 途中でかなり遠回りしたので、その失敗も含めてメモとして残しておきます。 作業は生成AI(Gemini と Claude)に相談しながら進めました。

※ご注意!!ここに書いてあることを試みてうまくいかなかった、とか データが消えたとか、PCが起動しなくなったとか、起こっても私は責任を負えません。 特に BCD やパーティションの操作は、失敗すると Windows が起動しなくなります。 みなさんの責任において行う作業の参考にしてください。

環境

症状

遠回り編:パーティションをいじり続ける

最初は Gemini に相談しました。 「回復環境の置き場所(回復パーティション)が正しく設定されていないのが原因」という見立てで、 次のような作業を順番に案内されました。

  1. Winre.wim(回復環境のイメージ、約632MB)を探して、別のパーティション(パーティション5、898MB)にコピー
  2. diskpart でパーティション5に回復パーティションの種類(de94b829-42c1-4f5d-a45f-0077d00ce020)と非表示属性を設定
  3. ReAgent.xml(回復環境の設定ファイル)を削除して、reagentc /setreimage → /enable

……が、何度やっても Disabled のまま。
途中で online volume がエラーになったところで、 「パーティション5が OEM パーティションになっているので、一度削除して作り直しましょう」と案内され、次を実行しました。

diskpart
select disk 0
select partition 5
delete partition override
create partition primary
format fs=ntfs quick label=Recovery

結果、format は「パラメーターが間違っています」で失敗。 そして、パーティション5に入っていたメーカーの OEM データは消えてしまいました(´ヘ`;)
delete partition override は、保護されているパーティションでも強制的に消すコマンドです。元には戻せません。

後から考えると、案内された手順を「中に何が入っているか」を確かめないまま実行した自分が悪いです。 回復環境は結局 C: ドライブ上で動いているので、今のところ実害はありませんが、 diskpart の delete は取り返しがつかない、というのが今回いちばんの教訓です。

原因を調べる編:ログを見たら BCD だった

パーティションの初期化がうまくいかなかったので、Claude にも相談してみました。 こちらは、いきなり直すのではなく「まず状態とログを見ましょう」という進め方でした。 調べて分かったことは次のとおりです。

reagentc /enable は、BCD の「今の Windows」のエントリに回復環境への道筋(recoverysequence)を書き込もうとします。 ところが、その「今の Windows」が BCD から見つからないので、登録に失敗して Disabled に戻っていた、というわけです。 パーティションの設定は関係なかったんですね。。
毎月の Update のたびにエラーが出ていたのも、BCD がこういう不完全な状態だったところに、 Update が回復環境の設定を書き換えようとして壊れていたのでは、と考えています(ここは推測です)。

復旧手順

管理者権限の PowerShell で作業しました。

  1. BCD をバックアップしておきます。(これ大事)
    bcdedit /export C:\bcd_backup_20261007
  2. 古い回復環境のエントリを削除します。 bcdedit /enum all で一覧を出して、場所が [unknown] になっている回復環境(Windows Recovery Environment)のエントリの ID を確認してから消します。
    bcdedit /delete '{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'
    ※これだけでは recoverysequence は作られませんでした。
  3. BCD を作り直します。diskpart で EFI システムパーティション(ESP、100MB くらいの FAT32 のボリューム)に一時的にドライブ文字を付けて、bcdboot を実行しました。
    diskpart
    list volume
    select volume 2      ← ESP の番号(環境によって違います)
    assign letter=Z
    exit
    
    bcdboot C:\Windows /s Z: /f UEFI /l ja-JP
    ※使い終わったドライブ文字は、diskpart でもう一度 ESP を選んで remove letter=Z で外しておくと安心です。
  4. 再起動したところ……0xc0000098 で起動しなくなりました(゚Д゚;)
    いつもの月次 Update 後と同じエラーです。
  5. USB インストーラーから復旧します。 USB から起動して「コンピューターを修復する」→「トラブルシューティング」→「コマンド プロンプト」を開き、 ESP(100MB くらいの FAT32 のボリューム)にドライブ文字を付けて、bcdboot で BCD を作り直します。
    diskpart
    list volume
    select volume 2      ← ESP の番号(環境によって違います)
    assign letter=S
    exit
    
    bcdboot C:\Windows /s S:
    ※回復用のコマンドプロンプトでは、Windows のドライブが C: になっていないことがあります。 dir C:\Windows などで確かめてから実行してください。
    手順は Microsoft のサポートブログ(下の参考)と同じです。
  6. Windows が起動したら、{current} が見えるか確認して、回復環境を有効にします。
    bcdedit /enum '{current}'
    reagentc /enable
    reagentc /info
    今度は Enabled になりました!
  7. ついでに、ファームウェアの起動順を Windows ブートマネージャーが先頭になるように直しました。 (古い起動項目は消さずに、後ろに下げただけです。)
    bcdedit /set '{fwbootmgr}' displayorder '{bootmgr}' /addfirst
  8. 最後に、正常な状態の BCD をバックアップしておきます。
    bcdedit /export C:\bcd_backup_good_20261007

手順3で一度起動しなくなったのは焦りましたが、USB からの bcdboot で作り直した BCD のほうはその後ずっと正常です。 手動で作り直した直後の再起動で壊れた理由は、まだよく分かっていません。

直ったかの確かめ方

正常なときは、こんな感じになります。(ID は伏せています)

PS> bcdedit /enum '{current}'

Windows ブート ローダー
--------------------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 11
recoverysequence        {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows

PS> reagentc /info
    Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

見るところは3つです。

作業前は recoverysequence の行自体がありませんでした。 なお、回復環境の場所は専用の回復パーティションではなく C: ドライブの中ですが、Windows 11 はこれでも問題なく動きます。

その後

とはいえ、まだ Update 1回分なので、「直った」と言い切るのはもう1〜2回様子を見てからにします。

Windows Update のあとに確認すること(自分用メモ)

Update が終わって再起動する前に、管理者の PowerShell で実行します。

bcdedit /enum '{current}'
reagentc /info
bcdedit /export C:\bcd_backup_after_update

振り返り

以上、です。

参考

← コラム一覧へ