WindowsUpdate KB5034441 がエラー0x80070643の時、回復パーティションサイズを増やす話【これで解決?⇒残念、これだけじゃなかったorz⇒なんとか終焉】

2024年1月10日頃、Windows Update KB5034441のエラー0x80070643が Windows10で起こった。何回再試行しても、成功しない。

 

原因は、回復パーティションのサイズが1GB未満だからとの事。

www.nichepcgamer.com

にある通り、回復パーティションを増やしたら良い、というのが現時点の解法のようだ。そのためには、隣接しているC:ドライブのOSパーティションのサイズを小さくし、それと合わせて1GB以上の回復パーティションを再構築するとの事で、上記のブログで引用されているマイクロソフトの資料ページに具体的にその手順が示されている。

 

※上記ブログで、日本語機械訳に間違いがあるとの指摘があったが、f.の、「shrink desired=250 minimum=250」とのコマンドの一部を文章叙述に間違えて「圧縮 を実行します desired=250 minimum=250」としている点くらいで、英語ページと日本語ページとを注意深く見比べながら実行したら、特に問題はなさそうだった。

 

原文ページはこちら

support.microsoft.com

機械語翻訳ページはこちら

support.microsoft.com

 

 

この手順をまとめようかと思っていたが、既に、きれいにまとめてくれている人が居たので、

qiita.com

にリンクしておく。以下、リンク先が喪失したりしたときのために自分用にメモ。

 

なお、自分は、(この時点までMBRのケースしかこれまで扱っていない。

 

この手順で、一番引っかかったのは、

(回復)パーティションを作成し、

その後、フォーマットする。

そうすると、なぜか、プライマリパーティションタイプになってしまっていた

 

この状態で、「reagentc /enable」すると、操作は成功するものの、「reagentc /info」で調べるとWinREのパーティション、作成したもの(回復パーティションを作ったつもりで実はプライマリパーティションを作ってしまっていたやつ)ではなく、C:ドライブのOSパーティションになっていた!

 

これに気づかず、この状態で、Windows Update KB5034441 を実行したところ、エラーなく完了した。

 

だから、このエラーって、もしかしたら、回復パーティションのサイズを変えなくても、プライマリタイプに変更して、WinREシステム設置場所をOSパーティションに移動するだけで、Windows Update KB5034441 をやり過ごすだけだったらOKなのかも知れない。

 

以下、覚え書き。

「ディスクの管理」を開いておくと良い。リアルタイムで情報が更新されて便利。

diskmgmt.msc

作業は主に管理者権限のコマンドプロンプト

管理者権限でコマンドプロンプトを開く【以下コマンドプロンプト中の操作】

WinREの状況を把握する。(例;ディスク0のパーティション4、パーティション3はC:OSパーティション

reagentc /info

C:\WINDOWS\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:     Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: be4d8d56-68db-11ea-9ca3-bcc11e69a784
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0 REAGENTC.EXE: 操作は成功しました。

WinREを無効化する

reagentc /disable

C:\WINDOWS\system32>reagentc /disable
REAGENTC.EXE: 操作は成功しました。

次から「diskpart」コマンドでの作業。プロンプトが「DISKPART>」に変わる。

diskpart

C:\WINDOWS\system32>diskpart
Microsoft DiskPart バージョン 10.0.19041.3636
Copyright (C) Microsoft Corporation.
コンピューター: 【デバイス名】 DISKPART>

回復パーティションのあるディスクを選ぶために、ディスクのリストを表示する。「ディスクの管理」画面の情報も活用する(例;回復パーティションのディスクは「0」)

list disk

DISKPART> list disk
  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン           465 GB  1024 KB        *

WinREと同じディスクを選択する(例;選択するディスクは「0」)

ちなみに、「GPT列」アスタリスク(*)があるかどうかを確認する。
あればGPT、なければMBR

GPT GUIDパーティションテーブル
MBR マスターブートレコード

今回はGPTのケース(初めて経験する)。

念のため、ディスクの管理(diskmgmt.msc)画面で、disk0を右クリックしてプロパティーを開き、ボリュームタブで、パーティションのスタイルを確認できる。

ディスクを開いて、パーティション構成を確認する

sel disk 0

list part

DISKPART> sel disk 0
ディスク 0 が選択されました。
DISKPART> list part
  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム              1024 MB  1024 KB
  Partition 2    予約                 128 MB  1025 MB
  Partition 3    プライマリ              461 GB  1153 MB
  Partition 4    回復                 627 MB   462 GB
  Partition 5    回復                3074 MB   462 GB

OSパーティションを選択して、サイズを圧縮する(例;C:OSパーティションは「3」)

sel part 3

DISKPART> sel part 3
パーティション 3 が選択されました。
DISKPART> list part
  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム              1024 MB  1024 KB
  Partition 2    予約                 128 MB  1025 MB
* Partition 3    プライマリ              461 GB  1153 MB
  Partition 4    回復                 627 MB   462 GB
  Partition 5    回復                3074 MB   462 GB

 

マイクロソフトの資料では、250MB圧縮する例となっていたが、回復パーティションが不足するサイズは、約373MBないし397MBなので、400MB以上、キリ良く500MB圧縮することにする。そのため、資料の数字250を両方とも500に変更。

圧縮したい量(desired)、縮小する最小量(minimum)

shrink desired=500 minimum=500

DISKPART> shrink desired=500 minimum=500
ボリュームは、次の方法で正常に縮小されました:  500 MB

DISKPART> list part   Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム              1024 MB  1024 KB
  Partition 2    予約                 128 MB  1025 MB
* Partition 3    プライマリ              460 GB  1153 MB
  Partition 4    回復                 627 MB   462 GB
  Partition 5    回復                3074 MB   462 GB

「desired」と「minimum」の違いが分かりにくい。

  1. desiredが指定されていない場合、minimumが指定されていればminimumだけ縮小しようとする。
  2. minimumが指定されていない場合、desiredが指定されていればdesiredだけ縮小しようとする。
  3. desiredもminimumも指定されていない場合、「使用可能な空き領域の最大容量」だけ縮小しようとする。
  4. minimumが指定されていても、十分な空き容量がない場合、コマンドはエラーになる。

WinRE回復パーティションを選択(例;最初WinREのあった回復パーティションは「4」)

sel part 4

DISKPART> sel part 4
パーティション 4 が選択されました。

DISKPART> list part   Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム              1024 MB  1024 KB
  Partition 2    予約                 128 MB  1025 MB
  Partition 3    プライマリ              460 GB  1153 MB
* Partition 4    回復                 627 MB   462 GB
  Partition 5    回復                3074 MB   462 GB

これを削除

delete partition override

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

DISKPART> list part   Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム              1024 MB  1024 KB
  Partition 2    予約                 128 MB  1025 MB
  Partition 3    プライマリ              460 GB  1153 MB
  Partition 5    回復                3074 MB   462 GB

ここで、回復パーティションを作成するコマンドを打つことになるが、GPTMBRとでコマンドが異なる。(今回はGPT

GPTの場合(引き続いた2つのコマンドを投入する)

create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac

gpt attributes =0x8000000000000001

DISKPART> create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
DiskPart は指定したパーティションの作成に成功しました。
DISKPART> gpt attributes =0x8000000000000001
選択された GPT パーティションに DiskPart で属性を割り当てました。

DISKPART> list part   Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム              1024 MB  1024 KB
  Partition 2    予約                 128 MB  1025 MB
  Partition 3    プライマリ              460 GB  1153 MB
* Partition 4    回復                1128 MB   461 GB
  Partition 5    回復                3074 MB   462 GB

 

MBRの場合(前回のログより)

create partition primary id=27

DISKPART> create partition primary id=27
DiskPart は指定したパーティションの作成に成功しました。

DISKPART> list part   Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    回復                  20 GB  1024 KB
  Partition 2    プライマリ              200 MB    20 GB
  Partition 3    プライマリ              444 GB    20 GB
* Partition 4    回復                1065 MB   464 GB

新たに作成されたパーティションが選択されていることを確認して、フォーマットを行なう

GPTの場合

format quick fs=ntfs label="Windows RE tools"

DISKPART> format quick fs=ntfs label="Windows RE tools"
  100% 完了しました
DiskPart は、ボリュームのフォーマットを完了しました。

DISKPART> list part   Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム              1024 MB  1024 KB
  Partition 2    予約                 128 MB  1025 MB
  Partition 3    プライマリ              460 GB  1153 MB
* Partition 4    回復                1128 MB   461 GB
  Partition 5    回復                3074 MB   462 GB

GPTの場合は、フォーマットで属性が変わってしまったりしないようだ

 

MBRの場合(前回のログより)

DISKPART> list part
  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    回復                  20 GB  1024 KB
  Partition 2    プライマリ              200 MB    20 GB
  Partition 3    プライマリ              444 GB    20 GB
  Partition 4    プライマリ             1065 MB   464 GB

ここで、MBRの時には異変が起きた。選択したパーティションが回復パーティションではなくなってしまったのだ。MBRの場合には、ここであらためて、パーティションタイプを変更するコマンドが必要だった。

set id=27

DISKPART> sel part 4
パーティション 4 が選択されました。
DISKPART> set id=27
DiskPart は、パーティション ID を設定しました。

また、ドライブレターの属性を削除するためには

ボリュームまたはパーティションを選んで

remove letter=<ドライブ文字> (今回はFの例)

DISKPART> remove letter=F
DiskPart はドライブ文字またはマウント ポイントを正常に削除しました。

か、あるいは単に

remove

とすれば良いようだ。後者の情報は次のページより。

learn.microsoft.com

 

出来たボリュームを確認する。

list vol

DISKPART> list vol
  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     D                       DVD-ROM         0 B  メディアなし
  Volume 1     C                NTFS   Partition    460 GB  正常         ブート
  Volume 2                      FAT32  Partition   1024 MB  正常         システム
  Volume 4                      NTFS   Partition   3074 MB  正常         非表示
* Volume 5         Windows RE   NTFS   Partition   1128 MB  正常         非表示

ここまでがdiskpartでの作業。exitで抜ける

exit

DISKPART> exit
DiskPart を終了しています...
C:\WINDOWS\system32>

WinREの再有効化

reagentc /enable

C:\WINDOWS\system32>reagentc /enable
REAGENTC.EXE: 操作は成功しました。

最後に、WinREがインストールされている場所を確認する。

reagentc /info

C:\WINDOWS\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:     Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: e612c280-b05c-11ee-9ce4-7c5cf8c03928
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0 REAGENTC.EXE: 操作は成功しました。

ここまでで作業は終了です。お疲れさまでした。

これで、Windws Update KB5034441 が成功するようになると思われます。

 

ここまでメモしておけば、コピペで作業できるので、数をこなすことが可能と思います。

とは言え、アップデートプログラム自体が改良されて、この作業自体が不要になることを願っています。

 

※追記1:2024.1.13Sat. これだけではこのエラーによる失敗が解消されないケースが1件確認された。現在解決法を追求中。現時点で、再起動、トラブルシューティングSFCスキャンDIMSコマンド、Windows Update データのクリアでダメな事は把握している。(あと試してないのは、.NET Frameworkのインストールくらいか‥)もう少し粘ってみるつもり。

 

※追記2:結局、.NET Frameworkのインストールは行わなかった。パーティションサイズを10GB超えにしても成功しないため、サイズ増加による方向はあきらめた。回復パーティションを生じさせず、C起動ドライブにWinREシステムを置いても失敗するからサイズの問題でなさそう。

 

※追記3:WindowsUpdateに失敗した後、更新の履歴ページを表示させて、「インストールに失敗しました」という行の一つ前にリンクされているページが意外と充実していることが分かった。

KB5034441: Windows 10 バージョン 21H2 および 22H2 用 Windows 回復環境の更新プログラム: 2024 年 1 月 9 日 - Microsoft サポート

 

※追記4:別のシステムで、「reagentc /enable」しようとすると、「Windows RE イメージは見つかりませんでした。」というメッセージが出て、WinREシステムが喪失してしまった事例にぶつかった。こちらの結論は、過去の自システムから再構築する方法

www.palm84.com

は使えず、結局、新規にWinREを作成する方法で解決した。

windows-waza.com

 

追記5:これに気を良くして、先の何度やっても失敗するケースに応用できないかと考えた。すなわち、現在のものと入れ替えて『Windows.isoから新規にWinRE.wimを入れてしまう方法』。最終的に手順は以下の通り。

 

  1. 7ZIPのインストール。
  2. Windows10のダウンロードページからツール「MediaCreationTool22H2.exe」をダウンロードしWindows.isoを作成
  3. install.esdから「Winre.wim」を抽出(Windows Proは「3」)。隠しフォルダ「C:¥Recovery」に設置する。元あったもの(一見無いように見えるが隠しファイルなので隠しファイルを表示する)は、避けておく
  4. この状態で、「reagentc /enable」すると、C:ドライブのOSパーティションにWinREシステムが稼働してしまう
  5. そこから、回復パーティションへWinREシステムを移すのは厄介だったので、もしやと思い、この状態でウィンドウズアップデートを実行したら、ようやっと成功した!

 

※追記6:最後に残されたのは、せっかく整備した回復パーティションへ、WinREシステムを移す方法。基本的に、

atmarkit.itmedia.co.jp

の資料によるが、Typoのようなものがあって悩まされた後、最終的に次の資料を参考にした。

www.kuronekofreedom.com

 

回復パーティションへdiskpartでドライブレターを割り当てる

assign letter=R

removeする前に、フォーマットや削除してしまった場合、そのドライブ文字は再起動しないと使えなくなるので注意

この割り当てによって、回復パーティションコマンドプロンプトエクスプローラーで扱えるようになる

 

フォルダーを作る(⇒WinRE.wimをコピーする)

md r:\Recovery\WindowsRE

ここで、RecoverなのかRecoveryなのかWindowsREなのかWinREなのかで混乱した。

最初、コピーがうまくいかず、WinREの稼働をCドライブのOSパーティションで運用している状態でとりあえずウィンドウズアップデートに臨んでしまった理由もここにある。

最終的に、コピーはコマンドプロンプトでやらずに、エクスプローラーで操作して、間違って作ったりコピーしたのモノを、消したり移動したりして整えるのが結果的に良かった。

 

一旦 reagentc /disable して、イメージの設置場所を回復パーティションへ指定する

reagentc /setreimage /path R:\Recovery\WindowsRE

C:\WINDOWS\system32>reagentc /setreimage /path R:\Recovery\WindowsRE
ディレクトリは次に設定されています: \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE REAGENTC.EXE: 操作は成功しました。
C:\WINDOWS\system32>reagentc /enable
REAGENTC.EXE: 操作は成功しました。
C:\WINDOWS\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:     Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: f10e0622-b1a2-11ee-89ae-00dbdf44f4d9
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0 REAGENTC.EXE: 操作は成功しました。
C:\WINDOWS\system32>

無事WinREシステムは回復パーティションへ移動した。

後はdiskpartでドライブレターをremoveするのを忘れずに。(了)