かつて山市良と呼ばれたおじさんのブログ

vol.6 回復パーティションをディスクの先頭から最後に移動するには(後編)

2024年04月24日配信
2024年04月30日更新
執筆者:山内 和朗

 前回(vol.5)は、Windows Server 2019(デスクトップエクスペリエンス)のディスクの最初にある回復パーティションをディスクの最後に移動するために、現在のシステムのベアメタル回復用バックアップを取得するまで進みました。リストアの際にはC:ドライブのバックアップだけを使う予定なので、WinREを無効化して、C:ドライブに退避しておくことがポイントでした。今回は前回の続きです。


現在のWinREで再起動してパーティションを作り直す

 

 前回の最後、バックアップの成功後、WinREを有効化しました。続いて、この現在のWinREでシステムを再起動し、WinRE(WinPE)のコマンドプロンプトを開始します。それには、[Shift]キーを押しながら再起動操作を実行するか(Win+Xメニュー※1の「シャットダウンまたはサインアウト>再起動」をクリックするなど)、次のコマンドラインを実行します(画面1)。reagentcの/boottoreコマンドは、次回の起動または再起動時にWinREで起動するするようにシステムを構成(1回限り)するものです。

reagentc /enable
reagentc /boottore
shutdown /r /t 0

 

※1 [Windows]+[X]キーのショートカット、またはタスクバー上のWindowsアイコンを右クリックすると出現するあのメニュー、クイックアクセスメニューとも呼ばれるみたいです。

画面1
画面1 現在の回復パーティションでWinREを有効化し、そのWinREを使用して再起動する

 WinREの「オプションの選択」画面が表示されたら「トラブルシューティニング」を選択し、次の「詳細オプション」で「コマンドプロンプト」を選択します(画面2)。Administratorを選択してパスワードを入力すると、「管理者:X:¥Windows¥System32¥cmd.exe」というウィンドウタイトルのコマンドプロンプトが開きます。

 

画面2
画面2 現在のWinREで再起動して、WinRE(WinPE)のコマンドプロンプトを起動する

 WinRE(WinPE)のコマンドプロンプトでカスタムパーティションを作成する手順については、このブログのvol.4で説明したのと同じ手順です。Microsoftは、汎用的なDISKPARTクリプト「CreatePartitions-UEFI.txt(外部サイト)」を以下のドキュメント内のリンク先で提供しているので、それを利用するのが早道です。

注:このブログのこのシリーズではUEFIベースのシステムのみを対象としています。BIOSベースのシステムの場合は手順が若干異なりますが、説明しません。

UEFI/GPT ベースのハード ドライブ パーティション
https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions#to-partition-hard-drives-and-prepare-to-apply-images

 「CreatePartitions-UEFI.txt」の内容をそのまま利用した場合、バックアップからのリストアは失敗するでしょう。バックアップ前に確認したパーティション構成(画面3)に合わせて、以下の3行を調整しました。

create partition efi size=99
create partition msr size=16
shrink minimum=499

 

画面3
画面3 バックアップ前にDISKPARTコマンドで確認した古いパーティション構成。C:ドライブのボリューム(この例ではパーティション4)のサイズは同じか、それ以上のサイズで作成するのがポイント

 「CreatePartitions-UEFI.txt」を調整したら、上書き保存し、次のコマンドラインを実行してパーティションを作成します。

DiskPart /s <パス>¥CreatePartitions-UEFI.txt

 パーティションを再作成すると、現在のWinREを含めてディスクの内容はクリアされますが、現在実行中のWinREのバイナリはRAMディスクであるX:ドライブにロードされているため、再起動しない限り作業を続行できます。

 

WBADMINコマンドでC:ドライブのみをリストアする

 

 WindowsやWindows Serverのベアメタル回復(システムイメージのリストア)は、WinREの「詳細オプション」にある「イメージでシステムを回復」を使用してリストアできます。しかし、今回はC:ドライブのバックアップのみをリストアするため、「イメージでシステムを回復」は使用しません。代わりに、引き続きWinRE(WinPE)のコマンドプロンプトから、Windows標準の「バックアップコマンドラインユーティリティ」(WBADMIN.EXE※2)を使用します。

 以下の例は、バックアップディスクがD:の場合の例です。wbadmin getコマンドでC:ドライブを含むバックアップのバージョン識別子やC:ドライブのボリューム情報を取得し、wbadmin start recoveryコマンドを実行してC:ドライブの内容をW:ドライブ(※3)にリストアします(画面4)。

wbadmin get versions -backuptarget:D:
wbadmin get items -version:<バージョン識別子> -backuptarget:D:
wbadmin start recovery -version:<バージョン識別子> -itemtype:Volume -items:\\?\Volume{<ボリュームID>}\ -backuptarget:D: -recoveryTarget:W:

 

※2 「WBADMIN(外部サイト)」(C:¥Windows¥System32¥wbadmin.exe)は、OS、ボリューム、ファイル、フォルダー、アプリケーションをコマンドプロンプトからバックアップおよびリストアすることができる、Windows 10/11およびWindows Server共通のコマンドラインツールです。

※3 DISKPARTスクリプト「CreatePartitions-UEFI.txt」の実行により、このコマンドプロンプトのセッションでは、Windowsパーティションにドライブ文字W:が割り当てられます。


画面4
画面4 wbadminコマンドを使用して、C:ドライブのバックアップのみをW:にリストアする

 

BCDBOOTコマンドでブート構成(BCD)を作成する

 

 バックアップからC:ドライブの内容をW:ドライブにリストアしたら、次のコマンドラインを実行して、W:¥Windowsのインストールを起動するようにシステムパーティションであるS:(※4)にブート構成をセットアップします。

BCDBOOT W:¥Windows /l ja-jp /s S: /f UEFI

 

※3 DISKPARTスクリプト「CreatePartitions-UEFI.txt」の実行により、このコマンドプロンプトのセッションでは、システムパーティションにドライブ文字S:が割り当てられます。

 

 最後に、次のコマンドラインを実行してWinREから再起動を開始します(※3)。次回起動時にはリストアされたシステムが通常起動するはずです(画面5)。なお、古いWinREはカスタムパーティション作成時に失われました。この時点でこのシステムにWinREはセットアップされていない状態です。

wpeutil reboot

 

画面5
画面5 bcdbootコマンドを使用してS:にブート構成(BCD)をセットアップし、WinREから再起動を開始する

 

※4 「WPEUTIL(外部サイト)」(X:¥Windows¥System32¥wpeutil.exe)は、Windows PE(WinPE)に含まれているコマンドラインツールであり、WinPEのシャットダウンや再起動、ファイアウォールの有効化/無効化、ネットワークの初期化などを行うことができます。例えば、共有フォルダーに取得したバックアップをリストアする場合は、Wpeutil InitializeNetworkを実行してネットワークを利用可能にし、NET USEコマンドを使用して共有に接続します。

 

通常起動できることを確認し、WinREを新たにセットアップ

 

 Windows Server 2019が通常起動したら、コマンドプロンプトで次のコマンドラインを実行して、WinREを新しい回復パーティションに対して有効化します。最初は、パーティション番号が変わるため、reagentcの/setreimageコマンドなどを使用して、WinREの新しい場所を設定してから有効化する必要があると考えていましたが、以下の1行のコマンドラインの実行だけで簡単に済みました(画面6)。

reagentc /enable

画面6
画面6 ディスクの最後に配置された回復パーティション(まだ空っぽ)に、WinREを有効化する

 

回復パーティションが最後にあれば、WinREのパッチにも対応可能

 

 回復パーティションがOSディスクの最後にあれば、Windowsパーティション(C:ドライブ)のサイズを縮小(Shrink)することで、より大きなサイズの回復パーティションにすることが比較的容易になります。その手順については、この連載のvol.3で説明しました。

 また、Windows Server 2019以前にはWinREのセキュリティの更新プログラムは提供されていませんが、以下のKBで提供されているPowerShellサンプルスクリプトを使用することで、現在のWinREにオフラインパッチして脆弱性に対処することもできます。

KB5034957: CVE-2024-20666 のセキュリティの脆弱性に対処するために、展開されたデバイスの WinRE パーティションを更新する
https://support.microsoft.com/ja-jp/help/5034957

 

このシリーズはこれで一段落

 

 ブログ開始から連載形式で進んだ回復パーティションとWinREの話題は、今回で一区切りとしましょう(→最新情報)。必ずしもエンドユーザー向けの内容ではありませんでしたが、システム管理者やシステムの設計・導入に携わる方にとっては、WindowsやWindows Serverのインストール作業のこれまでの当たり前を、改める/改めなければならないような内容だったかもしれません。

 

 

 次回は、PowerShellスクリプトによる情報の取得について取り上げます。実は、次回に予定している内容も回復パーティションやWinREに関連することです。弊社製品であるBOM for WindowsSSD-assistanceもそうなのですが(新人なので間違っていたらごめんなさい)、ディスク/ドライブの監視や情報を取得するツールは、ドライブ文字が割り当てられたボリューム(使用率や空き領域など)や物理ディスクのパフォーマンス/情報を取得するものがほとんどだと思います。回復パーティションの空き領域など、今回のWinREの更新問題がなかったら、気に留めることもなかったのではないでしょうか?

 

 新しい場所でのブログの再スタート、スタートダッシュを決めようと毎回ボリュームのある記事が続きましたが、次回からはもう少しコンパクトに、気軽に読める内容も増やしていこうと思っています。

 

  最新情報(2024年5月1日):
 Microsoftは、2024年4月30日(PT)付けで、今回のWinREのセキュリティ更新プログラム(KB5034440KB5034441KB5034439《外部サイト》)の問題の状態を「Mitigated(軽減)」から「Resolved(解決済み)」に変更しました。しかしながら、これまで「Workaround(回避策)」とされていた部分が、「Resolution: Automatic resolution of this issue won't be available in a future Windows update.Manual steps are necessary to complete the installation of this update on devices which are experiencing this error.(解決策: この問題の自動解決は、将来のWindowsアップデートでは提供されません。このエラーが発生しているデバイスでこの更新プログラムのインストールを完了するには、手動による手順が必要です。)」と変更されただけで、特定の状況下でエラーが発生する状況に変化はありません。

blog_subscribe

blog_comment

最新記事