こんばんは くろねこです。
今回の記事は、
マイクロソフトが2024年1月公開した Windows10 22H2 用の更新プログラムKB5034441で回復パーティションの容量不足に伴う
Windows Update が失敗する問題
に関する追加情報となります。
当ブログでは、
容量を拡大した新しいパーティションを準備し、回復パーティションを再構築する方法をご紹介しました。
しかし、
回復パーティション再構築中に一時的に割り当てたドライブレターを削除すると回復パーティションが無効になる現象
が一部のPCで発生する ということがわかりました。
当ブログを参考に作業されました方からのお問い合わせをいただき、調査を開始しました。くろねこの保有PCや知り合いのPCで KB5034441 でエラーが発生するPCのうち、一部のPCでお問い合わせいただいた現象を確認することができました。
今回の記事は、この現象の回避方法をご紹介します。
ただし、この方法が「正しい回避方法」であるかの確証は現時点(2024年2月25日時点)でとれておりませんが、今回の問題が発生したPCは、この方法で、
・ KB5034441 は正常にインストール
・ 回復パーティションは正常に動作
はできております。
ベストは、マイクロソフトがKB5034441で問題が発生しないように修正プログラムを公開するのが筋と思いますが、残念ながら修正されておりませんので、暫定的な回避方法としてご理解願います。
回復パーティションの再作成
回復パーティションの容量拡大は
・ 新しいパーティション(最低でも1GB程度)を確保
・ 回復パーティションを再構築
・ 古い回復パーティションを削除
の流れで作業しなければなりません。
これらの作業の流れは、下記の記事を参考にされ、問題を回避された方が多くいらっしゃったようです。(当ブログへのご訪問ありがとうございました。お役に立てて何よりです。)
しかし、一部のPCで問題が発生することがわかりました。
注意
これ以降の説明は、くろねこの再現環境のディスク・パーティション構成を例としてご説明します。
ご自身のPCで操作する場合、
・ ディスク番号
・ パーティション番号
・ 新回復パーティションの一時ドライブ名
などをご自身の環境に合わせ、読み替えてください。
また、ディスクの操作は、最悪の場合、システムが起動できなくなる場合もあります。
十分注意のうえ、実施願います。
なお、これらの操作はあくまでも自己責任で実施してください。当ブログでは一切の責任を負いかねます。
新回復パーティションのドライブレターを削除すると
その「問題」とは?
新しい回復パーティションを再構築する段階で
一時的に割り当てたドライブレターの削除後に回復パーティションが無効になる現象です。
文字で説明するよりは再現したPCの画面ショットをご覧いただいたほうがわかりやすいのでご覧ください。
ドライブレター付の新しい回復パーティションの動作状況
新しい回復パーティションを再構築した直後(下記のコマンド実行直後)
※ 一時的なドライブレターは「R」の場合です
reagentc /setreimage /path R:\Recovery\WindowsRE
reagentc /enable
このコマンドのあとに
reagentc /info
を実行した状態です。
上記画像の赤枠部分をご覧ください。この時点の状態は
・ 新回復パーティションの状態 : Enabled
・ 新回復パーティションのディスク上の構成 : Disk=0、Partition=4、Volume=3
・ 新回復パーティションのドライブレター : R (上記のサンプルの場合)
です。
新回復パーティションのドライブレターの削除
この状態から、新回復パーティションの一時ドライブレターを削除するわけですが、念のため、対象のパーティションの番号を確認します。(念には念を入れ)
新回復パーティションのドライブレターを削除し、回復パーティションの状態を確認します。
新回復パーティションのドライブレターを削除すると、
回復パーティションは Disabled になります。
PCを再起動しても、reagentc /enable コマンドを実行しても変化はありません。
この状態が、一部のPCで発生していることがわかりました。
同じドライブレターを再び割り当てると Enabled になります。
ドライブレターの弊害
じゃあ ドライブレター そのままにすれば いいじゃん!
ドライブレターが割り当たったままの場合、
Windowsから普通のドライブとして回復パーティションが見えることです。
普通のドライブとして見えることは、回復パーティション(WindowsRE)を弄ってしまう(削除や変更)可能性が出てくることです。緊急時に必要となる回復パーティションは大事に温存しておくべき環境なので、簡単に触れてしまう状況は好ましくありません。やはり、見えなくしておくべきなんです。
ドライブレター削除と回復パーティションの有効化
何が起きてるのか?
それではどうすればよいのか?
回復パーティションの設定情報は、ディスク番号とパーティション番号です。
したがって、ドライブレターは無関係のはずですが、もしかしたら、ドライブレターが何らかのかたちで残っているとWindowsはドライブレターを使用してアクセスしているのではないか? ということに至りました。
それは、どういうこと?
発生条件は不明ですが、ある一定の条件下で、ドライブレターの削除(diskpartコマンド内の remove コマンド)が完全に削除されておらず、どこかにドライブレターの設定が残っているということです。
なんか、Windows10のバグくさいです!
ドライブレターの管理情報はどこに?
調査を実施したところ、レジストリで管理していることがわかりました。
レジストリパス
コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
以下は問題が発生しているPCのレジストリの状態です。
右側画面内の \DosDevices\ の後ろの一文字が、ドライブレターになります。
上記画面では、ドライブは、C、D、R の3つです。
このサンプルでは「R」が新回復パーティションで割り当てたドライブレターです。
この値をレジストリから削除します。
作業はこれで終了です。PCを再起動します。
動作確認
操作が間違ってなければ、Windows10は正常に起動するはずです。
Windows10が起動したら、ドライブの状態を確認します。
次に、回復パーティションが有効化されていること、ディスクの構成情報を確認します。
上記画像の赤枠部分に注目してください。
・ 新回復パーティションの状態 : Enabled
・ 新回復パーティションのディスク上の構成 : Disk=0、Partition=4、Volume=3
・ 新回復パーティションのドライブレター : なし
おわりに
今回の問題について、解決方法がこれでよいのか? という部分は正直言って不明です。
くろねこの個人的な推測ですが、以下のように考えています。
- diskpartコマンド の removeサブコマンド の動作がある条件下でレジストリのデバイスマップ(※)の値の削除処理が動作していない。(直前の処理が原因で異常終了)
- 回復パーティションの動作はレジストリのデバイスマップ(※)が有効な場合、そのドライブレターを使用して有効化を実施している。
※ レジストリのデバイスマップ情報
コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
いずれにしても、上記2点は、くろねこの世界では「バグ」と言います!
値の名称が「\DosDevice\・・・」というのも互換性を維持するための苦肉の策的なにおいがプンプンします。
Windowsはネットワークまわりでも同一情報を複数の管理情報で持っていたりと複雑怪奇な状態であるので、このようなトラブルも起きてしまうのかもしれません。
2024年2月の三連休の後半はこの問題で費やしてしまいましたが、一定の解決方法が導き出せよかったと思ってます。
いよいよ、2月も最終週になりました。
残り少ない時間で、引継ぎやら挨拶やら、とても忙しくなります。
そして、・・・
ここまで、ご覧いただきありがとうございました。