システムボリュームの拡張と回復パーティションの移動

## はじめに
Windowsの起動ディスクを容量の大きなSSDに換装した後で、回復パーティションを末尾に移動します。
メーカー製マイグレーションツールが提供されておらず、有料ツールも使用せず、Windowsの機能のみを使用する前提です。

この記事は、将来同じ作業を行う場合に備えたメモです。
また、これは「misskey.dev ユーザー Advent Calendar 2024」6日目の記事です。

https://adventar.org/calendars/10189

### 環境
Windows 11 Pro 23H2

## 想定と方針
- Windowsイメージバックアップ(wbadmin)からの回復を利用して換装、あるいは、クラッシュからの回復時に容量の大きなSSDを使用します。
    - 移行元の起動ディスクでは、起動パーティション(システムボリューム)の後に回復パーティションが存在しました。
    - イメージの回復ではパーティションのサイズを変更できないので、回復後は、システムボリュームと空き領域の間に回復パーティションが存在する状態になります。
- 回復パーティションをいったん削除し、システムボリュームを広げた上で、末尾に回復パーティションを作り直します。

## 手順
### 換装
1. 古いSSDを取り外して、**容量の大きな**新しいSSDを装着します。
必要に応じて、BIOS画面でSSDの認識を確認したり、設定を変更したりします。
1. インストールメディアやリカバリメディアを利用して回復環境を起動します。
1. バックアップイメージからの回復を実施して、新しいSSDにシステムイメージを復元します。

#### 状況の確認
ディスクの管理を使って、回復後の状態を確認すると、システムボリュームの後に、回復パーティションがあり、さらに、空き領域が続いているハズです。
もし、この時点で、システムボリュームと空き領域が隣接している場合は、以降の処置は不要で、単に、システムボリュームを右クリックしてボリュームの拡張を行えば済みます。
あるいは、空き領域が存在しない場合は、そもそも、この記事の前提から外れています。

### 回復パーティションの無効化
回復パーティションを削除する前に、まず、無効化します。
`reagentc`の起動には、管理者権限のあるコマンドプロンプトが必要です。

```
C:\Users\user>reagentc /disable
REAGENTC.EXE: 操作は成功しました。
```
```
C:\Users\user>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

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

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

### 回復パーティションの特定と選択
`diskpart`を使用して、ディスクとパーティションを一覧し、回復パーティションを選択します。
`diskpart`の起動には、管理者権限のあるコマンドプロンプトが必要です。

```
C:\Users\user>diskpart
Microsoft DiskPart バージョン 10.0.22621.1

Copyright (C) Microsoft Corporation.
コンピューター: COMPUTER
```

`diskpart`には、コマンド毎の操作対象の指定がありません。
あらかじめ、`select`コマンドで、操作の対象を指定しておく必要があります。

```
DISKPART> list disk
  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン          7452 GB  1024 KB        *
  ディスク 1    オンライン           931 GB      0 B        *
  ディスク 2    オンライン          1863 GB   931 GB        *
```
```
DISKPART> select disk 2
ディスク 2 が選択されました。
```
```
DISKPART> list part
  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム               100 MB  1024 KB
  Partition 2    予約済み                16 MB   101 MB
  Partition 3    プライマリ              930 GB   117 MB
  Partition 4    回復                 846 MB   930 GB

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

### 回復パーティションの確認
後の復旧に備えて、回復パーティションの状態を確認しておきます。

```
DISKPART> detail part
パーティション 4
種類         : de94bba4-06d1-4d40-a16a-bfd50179d6ac
隠し属性     : はい
必要         : はい
属性         : 0X8000000000000001
オフセット (バイト): 999314948096

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
* Volume 6                      NTFS   Partition    846 MB  正常         非表示
```

### 回復パーティションの削除
:::note warn
**注意**
回復パーティションを削除する前に、[回復パーティションを無効化](#%E5%9B%9E%E5%BE%A9%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E7%84%A1%E5%8A%B9%E5%8C%96)してください。
万が一、無効化せずに削除した場合は、この記事の方法では復旧できず、[回復パーティションの再構築](#%E5%9B%9E%E5%BE%A9%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%86%8D%E6%A7%8B%E7%AF%89)が必要になります。
:::

:::note warn
**注意**
あらかじめ、`select`コマンドで、適切な[パーティションを選択](#%E5%9B%9E%E5%BE%A9%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%A8%E9%81%B8%E6%8A%9E)してください。
間違った対象を削除することのないように、十分注意してください。
:::

再度、回復パーティションの「無効化」と「選択」が正しくできていることを確認してください。
間違いなければ、回復パーティションを削除します。

```
DISKPART> delete part override
DiskPart は選択されたパーティションを正常に削除しました。
```
```
DISKPART> list part
  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム               100 MB  1024 KB
  Partition 2    予約済み                16 MB   101 MB
  Partition 3    プライマリ             1862 GB   117 MB
```

### システムボリュームの拡張

回復パーティションの容量分を残して、システムボリュームのパーティションを拡張します。
`diskpart`でも可能ですが、「ディスクの管理」を使用しました。

### 回復パーティションの生成
残した容量でパーティションを生成し、回復パーティション化します。

```
DISKPART> create partition primary

DiskPart は指定したパーティションの作成に成功しました。
```
```
DISKPART> list part

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム               100 MB  1024 KB
  Partition 2    予約済み                16 MB   101 MB
  Partition 3    プライマリ             1862 GB   117 MB
* Partition 4    プライマリ              847 MB  1862 GB
```
```
DISKPART> format quick fs=ntfs label=Recovery

  100% 完了しました

DiskPart は、ボリュームのフォーマットを完了しました。
```
```
DISKPART> set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"

DiskPart は、パーティション ID を設定しました。
```
```
DISKPART> gpt attributes=0x8000000000000001

選択された GPT パーティションに DiskPart で属性を割り当てました。
```
```
DISKPART> list part

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム               100 MB  1024 KB
  Partition 2    予約済み                16 MB   101 MB
  Partition 3    プライマリ             1862 GB   117 MB
* Partition 4    回復                 847 MB  1862 GB
```
```
DISKPART> exit

DiskPart を終了しています...
```

### 回復パーティションの有効化
回復パーティションを有効化します。

```
C:\Users\user>reagentc /enable
REAGENTC.EXE: 操作は成功しました。
```
```
C:\Users\user>reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Enabled
    Windows RE の場所:         \\?\GLOBALROOT\device\harddisk2\partition4\Recovery\WindowsRE
    ブート構成データ (BCD) ID: 00000000-0000-0000-0000-000000000000
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

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

これで完了です。
お疲れ様でした。

## 資料

https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/reagentc-command-line-options

https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/wbadmin

https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/diskpart

https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/deploy-windows-re

https://www.dell.com/support/kbdoc/ja-jp/000222496/windows-server-%E5%9B%9E%E5%BE%A9%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3-winre-%E9%A0%98%E5%9F%9F%E3%81%AE%E5%86%8D%E7%94%9F%E6%88%90%E6%96%B9%E6%B3%95

### 補足・蛇足
#### 回復パーティションの再構築
上記資料の「Windows RE の展開」と「～再構成の方法」の末尾には、「`reagentc /disable`で無効化せずに回復パーティションを削除するなどして、`reagentc /enable`で有効化できない」場合の再構築方法が記載されています。

#### メーカー製ツール
サムスン電子の自社製品向け管理ツール[`Samsung Magician`](https://semiconductor.samsung.com/jp/consumer-storage/magician/)で、マイグレーションを実施すると、複製先で回復パーティションが先頭に移動されるようです。
つまり、以後は、「ディスクの管理」を使用するだけで、システムボリュームを拡張可能になるわけですね。

## おわりに
最後までお読みいただきありがとうございました。