プロフィール

髭山髭人(ひげひと)

自分の書いた記事が、一人でも誰かの役に立てば...
活動信条の一つとして「貴方のメモは、誰かのヒント」というのがあります。

このサイトについて

本家HP packetroom.net から切り離した いわゆる技術メモ用のブログで、無料レンタルサーバーにて運用しています。広告表示はその義務なのでご容赦。
XREA さんには長年お世話になっています

WindowsUpdate エラーを回復パーティション拡張で回避(KB5034441)(0x80070643)

概要・いきさつ

Windows Update にて
2024-01 x64 ベース システム用 Windows 10 Version 22H2 のセキュリティ更新プログラム (KB5034441)
がうまく通らず、エラーが発生する ( = 0x80070643 )
原因がどうやら「ドライブに通常含まれている回復用パーティション(WinREと呼ばれているらしい)の容量が足りない」との事

フォーラムへの書き込み によると「1 ~ 1.5GB 程度あると好ましい」的な雰囲気だった。
自環境で回復用パーティションを確認したところ 564MB だったので、ここからさらに500MB程増やした時の覚書となります

※ やるなら自己責任で (常套句)

やること(ざっくり)

  1. Cドライブ容量を削って、空き領域を作成
  2. 同ドライブ内にある回復パーティションを一度削除
  3. 1と2を併せた領域に新パーティションを作成

「ディスクの管理」機能 ( タスクバーのWindowsボタン右クリック → ディスクの管理 )を使うと
下記画像と照らし合わせてなんとなくイメージができるかも?

処理の流れ

※ 「回復パーティション」「WinRE」といった表記ブレがありますが、どちらも同じような意味で捉えてください

  • コマンドプロンプトを 管理者権限 で実行

  • reagentc /info で確認

    C:\Windows\system32>reagentc /info
    Windows 回復環境 (Windows RE) およびシステム リセット構成
    情報:
    
      Windows RE の状態:         Enabled
      Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE
      ブート構成データ (BCD) ID: 1c8bf20d-c23c-11ee-8541-b188004d79bc
      回復イメージの場所:
      回復イメージ インデックス: 0
      カスタム イメージの場所:
      カスタム イメージ インデックス: 0
    
    REAGENTC.EXE: 操作は成功しました。
  • reagentc /disable で WinRE を無効にしておく

  • diskpart で diskpart を起動
    ※ ここからは (exit等のコマンドで抜けるまでは) diskpart に対する操作コマンドとなる

  • list disk でディスクをリストアップ
    筆者環境の場合、メインCドライブとして使っているSSD内に 回復パーティションがあるので
    操作対象 は 「ディスク 0」 となる ( ※ 環境に応じて番号=操作対象 は変えてください )

    DISKPART> list disk
    
    ディスク      状態           サイズ   空き   ダイナ GPT
    ###                                          ミック
    ------------  -------------  -------  -------  ---  ---
    ディスク 0    オンライン           465 GB      0 B        *
    ディスク 1    オンライン           476 GB  1024 KB        *
    ディスク 2    オンライン            29 GB    28 MB
  • sel disk (番号) で操作するディスクを選択
    ( 筆者環境なら sel disk 0 )

    DISKPART> sel disk 0
    
    ディスク 0 が選択されました。
  • 選択したディスク内にあるパーティションを 更に list part でリストアップ

    Partition ###  Type                Size     Offset
    -------------  ------------------  -------  -------
    Partition 1    システム               100 MB  1024 KB
    Partition 2    予約                  16 MB   101 MB
    Partition 3    プライマリ              465 GB   117 MB
    Partition 4    回復                 564 MB   465 GB

    自環境だと「C ドライブとして使っている領域」 が Partition 3 表記なので、
    パーティション 3を選択したうえで「君、ちょっと空き容量分けてくれない?」と後々操作を行う

    ※ すでにCドライブの空き容量がカツカツな状態だと、多分ろくでもないことになるかもしれないので注意
    エラーで処理はじいてくれるかもしれないし、なんかおかしくなっちゃうかもしれない。 試したことがないので知らんけど。

  • sel partition (番号) で操作する Cドライブ パーティションを選択
    前述の通り、筆者環境では sel partition 3 とした

    DISKPART> sel partition 3
    
    パーティション 3 が選択されました。
  • shrink desired=500 minimum=500 を実行
    選択中の操作対象 (つまり ディスク1 の中にある パーティション 3) に対し、
    「最大500MB ~ 最小 500MB の条件にて、可能な部分を削って 空き容量を作ってくれ」と処理させる
    Microsoft Learn - shrink

  • sel partition (番号) で操作する WinRE パーティションを選択
    筆者環境だと、対象は前述リスト「partition 4 回復」の部分なので sel partition 4 となった

    DISKPART> sel partition 4
    
    パーティション 4 が選択されました。
  • delete partiton override で WinRE パーティション 削除
    今選んだ回復(WinRE)パーティションに対し、このコマンドで削除操作を行う。
    ( 💀 無関係なディスクやパーティション選んだ状態でこれをやってしまうとデータ吹っ飛んだりする 💥 )

    DISKPART> delete partition override
    
    DiskPart は選択されたパーティションを正常に削除しました
  • 回復パーティション割り当て
    ディスクパーティションスタイルと呼ばれる形式が環境によって異なるらしい。
    GPT か MBR のどちらかがあり、それぞれに応じたコマンドが必要 との事

    • 確認方法
      diskpart 上で list disk を実行
      リストの 「GPT」列に * マークがあれば → GPT / 無ければ → MBR
      下記スクショなら、ディスク 0 および 1 が GPT で ディスク 2 が MBR
    • GPT の場合
      ( 筆者環境はこっちだった )
      まず create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac を実行し、
      未割当てとなった領域にパーティションを再構築する。
      なお、 次に gpt attributes =0x8000000000000001 を実行し、同パーティションに属性を与える。
      Microsoft Learn - gpt
    • MBR の場合
      create partition primary id=27 のコマンドを実行するらしい
  • GPT環境でのパーティション作成
    create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac を実行

    DISKPART> create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
    
    DiskPart は指定したパーティションの作成に成功しました。

    そのままの流れで、次に gpt attributes =0x8000000000000001 を実行

    DISKPART> gpt attributes =0x8000000000000001
    
    選択された GPT パーティションに DiskPart で属性を割り当てました。
  • WinRE パーティションの作成を確認
    diskpart上で list vol を実行
    筆者環境では以下のようになりました

    DISKPART> list vol
    
    Volume ###  Ltr Label        Fs    Type        Size     Status     Info
    ----------  --- -----------  ----  ----------  -------  ---------  --------
    Volume 0     C                NTFS   Partition    464 GB  正常         ブート
    Volume 1                      FAT32  Partition    100 MB  正常         システム
    Volume 3     D   ボリューム        NTFS   Partition    476 GB  正常
    Volume 4     E                FAT32  リムーバブル        29 GB  正常
    * Volume 5                      RAW    Partition   1065 MB  正常         非表示

    ( ↑ この時点で「ディスクの管理」機能でも 約 1GBの回復パーティション表記がなされていることを確認しました )

  • exit で Diskpart を抜ける(終了状態にする)

  • WinRE を再び有効にする
    exit で抜けた後、最後に再びコマンドプロンプト上から
    reagentc /enable を実行し、WinRE を有効 にしてフィニッシュです 😋

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

余談など

reagentc /info を実行すると、WinRE の構成情報が出てくる

C:\Windows\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition3\Recovery\WindowsRE
    ブート構成データ (BCD) ID: ec0fa2fe-c88f-11ee-826f-7085c280ddfb
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。

ちなみに 回復パーティションを割り当てた直後 ( reagentc /enable 実行前 ) の状態で
reagentc /info を実行したときは、以下の表示となっていた

C:\Windows\system32>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Disabled
    Windows RE の場所:
    ブート構成データ (BCD) ID: 00000000-0000-0000-0000-000000000000
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。

というわけで

再び Windows Update にて
2024-01 x64 ベース システム用 Windows 10 Version 22H2 のセキュリティ更新プログラム (KB5034441)
をインストールさせようとすると、うまく通りました😎 やったぜ