VMWare FusionのWin10をWin11へ上げる

まだ無料アップグレードができるのでやってみる。
Windows 11のシステム要件として64GB以上のシステムDISKとTPMが引っかかったのでまずはこちらを解決しよう。
以下のサイトを参考に実施してみます。

softantenna.com

パーティション拡張する

仮想マシンだから簡単簡単、と思った意外と面倒だった。
VMWare側で拡張は簡単。
設定 > ハードディスク > ディスクサイズ を64GBにするだけ。

ところが起動したら、ブート領域/Cドライブ/回復パーティション/追加領域 になっていて拡張できない…

回復パーティションは設定画面からは消せないので以下のサイトを見ながらやってみる。

pc-karuma.net

C:\WINDOWS\system32>diskpart

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン            64 GB    14 GB
  ディスク 1    オンライン            50 GB  1024 KB        *

DISKPART> select disk 0

ディスク 0 が選択されました。

DISKPART> list partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ              579 MB  1024 KB
  Partition 2    プライマリ               48 GB   580 MB
  Partition 3    回復                 553 MB    49 GB

DISKPART> select partition 3

パーティション 3 が選択されました。

DISKPART> list partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ              579 MB  1024 KB
  Partition 2    プライマリ               48 GB   580 MB
* Partition 3    回復                 553 MB    49 GB

DISKPART> delete partition override

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

DISKPART> list partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ              579 MB  1024 KB
  Partition 2    プライマリ               48 GB   580 MB

DISKPART>

これで消えました。(Windows 11を入れたら復活させるかな)
システムパーティションを拡張できるようになったので全部まとめてしまう。

仮想マシンTPMを追加する

DISKは無事拡張できたので残りはTPMです。 手順としては、

  1. 起動ディスクをMBRからUEFIブートへ変更
  2. VMWareの設定でファームウエアをUEFIへ変更
  3. VMWareの設定でUEFIセキュアブートを有効化にチェック
  4. VMWareの設定で暗号化を有効にするをチェック
  5. Windows 11 インストール

という感じです。

起動ディスクをレガシーBIOSからUEFIへ変更する

VMWareの設定ではレガシーBIOSと出ていますがいわゆる昔ながらのMBRレコードから起動するように仮想マシンを作っていたのでこれをUEFIにするにはディスクをGPTへ変更しなければなりません。
この辺の操作は危険なのでスナップショットを取ってから作業を行います。
仮想マシンを起動したら管理者モードでコマンドプロンプトを起動して、mbr2gptコマンドで実施します。

まず確認ですが早速エラー。

C:\WINDOWS\system32>mbr2gpt /validate /disk:0
ERROR: MBR2GPT can only be used from the Windows Preinstallation Environment. Use /allowFullOS to override.

C:\WINDOWS\system32>mbr2gpt /validate /disk:0 /allowFullOS
MBR2GPT: Attempting to validate disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
Cannot find OS partition(s) for disk 0

answers.microsoft.com

www.diskpart.com

ググってみるとどうやらWindowsのバージョンアップを行った際に残ったBCD構成ファイル内のゴミがいけないとのこと。消してみましょう。

まず不可視のブートパーティションをいじれるようにします。

C:\WINDOWS\system32>diskpart

DISKPART> select disk 0

ディスク 0 が選択されました。

DISKPART> list partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ              579 MB  1024 KB
  Partition 2    プライマリ               63 GB   580 MB

DISKPART> select partition 2

パーティション 2 が選択されました。

DISKPART> assign letter=w:

仮想ディスク サービス エラー:
現在のブート ボリュームまたはページ ファイル ボリュームに対して、
ドライブ文字を割り当てたり、割り当てを解除することはできません。


DISKPART> select partition 1

パーティション 1 が選択されました。

DISKPART> assign letter=b:

DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。

DISKPART> exit

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

元記事ではシステムパーティションをWドライブに退避して作業を行なっていましたが、Cドライブから変えられませんでした。
ブートパーティションはBドライブに変えられたのでこのまま作業を続行します。

C:\WINDOWS\system32>dir /a b:
 ドライブ B のボリューム ラベルは システムで予約済み です
 ボリューム シリアル番号は 3CA5-6110 です

 B:\ のディレクトリ

2022/03/21  22:26    <DIR>          Boot
2022/03/21  21:42           413,880 bootmgr
2019/12/07  18:08                 1 BOOTNXT
2021/06/02  14:50             8,192 BOOTSECT.BAK
2020/12/25  11:02    <DIR>          System Volume Information
               3 個のファイル             422,073 バイト
               2 個のディレクトリ     572,878,848 バイトの空き領域

ブートパーティション見えてますね。

bcdeditコマンドでunknownになっているidentifierを探します。
今回は {1cea4e0a-4655-11eb-b8e8-86cd67d75de6} ですね。

C:\WINDOWS\system32>bcdedit /store B:\boot\bcd /enum all

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=B:
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {default}
resumeobject            {1cea4e07-4655-11eb-b8e8-86cd67d75de6}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {default}
device                  partition=C:
path                    \WINDOWS\system32\winload.exe
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
recoverysequence        {1cea4e0a-4655-11eb-b8e8-86cd67d75de6}
displaymessageoverride  Recovery
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {1cea4e07-4655-11eb-b8e8-86cd67d75de6}
nx                      OptIn
bootmenupolicy          Standard

Windows ブート ローダー
--------------------------------
identifier              {1cea4e0a-4655-11eb-b8e8-86cd67d75de6}
device                  ramdisk=[unknown]\Recovery\WindowsRE\Winre.wim,{1cea4e0b-4655-11eb-b8e8-86cd67d75de6}
path                    \windows\system32\winload.exe
description             Windows Recovery Environment
locale                  ja-JP
inherit                 {bootloadersettings}
displaymessage          Recovery
osdevice                ramdisk=[unknown]\Recovery\WindowsRE\Winre.wim,{1cea4e0b-4655-11eb-b8e8-86cd67d75de6}
systemroot              \windows
nx                      OptIn
bootmenupolicy          Standard
winpe                   Yes

休止状態からの再開
--------------------------------
identifier              {1cea4e07-4655-11eb-b8e8-86cd67d75de6}
device                  partition=C:
path                    \WINDOWS\system32\winresume.exe
description             Windows Resume Application
locale                  ja-JP
inherit                 {resumeloadersettings}
recoverysequence        {1cea4e0a-4655-11eb-b8e8-86cd67d75de6}
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
filedevice              partition=C:
filepath                \hiberfil.sys
bootmenupolicy          Standard
debugoptionenabled      No

Windows メモリ テスター
--------------------------------
identifier              {memdiag}
device                  partition=B:
path                    \boot\memtest.exe
description             Windows メモリ診断ツール
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes

EMS 設定
--------------------------------
identifier              {emssettings}
bootems                 No

デバッガー設定
--------------------------------
identifier              {dbgsettings}
debugtype               Local

RAM 不良
--------------------------------
identifier              {badmemory}

グローバル設定
--------------------------------
identifier              {globalsettings}
inherit                 {dbgsettings}
                        {emssettings}
                        {badmemory}

ブート ローダー設定
--------------------------------
identifier              {bootloadersettings}
inherit                 {globalsettings}
                        {hypervisorsettings}

ハイパーバイザー設定
-------------------
identifier              {hypervisorsettings}
hypervisordebugtype     Serial
hypervisordebugport     1
hypervisorbaudrate      115200

再開ローダー設定
--------------------------------
identifier              {resumeloadersettings}
inherit                 {globalsettings}

こいつを消します。

C:\WINDOWS\system32>bcdedit /store B:\boot\bcd /delete {1cea4e0a-4655-11eb-b8e8-86cd67d75de6}
この操作を正しく終了しました。


C:\WINDOWS\system32>bcdedit /store B:\boot\bcd /enum all

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=B:
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {default}
resumeobject            {1cea4e07-4655-11eb-b8e8-86cd67d75de6}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {default}
device                  partition=C:
path                    \WINDOWS\system32\winload.exe
description             Windows 10
locale                  ja-JP
inherit                 {bootloadersettings}
displaymessageoverride  Recovery
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {1cea4e07-4655-11eb-b8e8-86cd67d75de6}
nx                      OptIn
bootmenupolicy          Standard

休止状態からの再開
--------------------------------
identifier              {1cea4e07-4655-11eb-b8e8-86cd67d75de6}
device                  partition=C:
path                    \WINDOWS\system32\winresume.exe
description             Windows Resume Application
locale                  ja-JP
inherit                 {resumeloadersettings}
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
filedevice              partition=C:
filepath                \hiberfil.sys
bootmenupolicy          Standard
debugoptionenabled      No

Windows メモリ テスター
--------------------------------
identifier              {memdiag}
device                  partition=B:
path                    \boot\memtest.exe
description             Windows メモリ診断ツール
locale                  ja-JP
inherit                 {globalsettings}
badmemoryaccess         Yes

EMS 設定
--------------------------------
identifier              {emssettings}
bootems                 No

デバッガー設定
--------------------------------
identifier              {dbgsettings}
debugtype               Local

RAM 不良
--------------------------------
identifier              {badmemory}

グローバル設定
--------------------------------
identifier              {globalsettings}
inherit                 {dbgsettings}
                        {emssettings}
                        {badmemory}

ブート ローダー設定
--------------------------------
identifier              {bootloadersettings}
inherit                 {globalsettings}
                        {hypervisorsettings}

ハイパーバイザー設定
-------------------
identifier              {hypervisorsettings}
hypervisordebugtype     Serial
hypervisordebugport     1
hypervisorbaudrate      115200

再開ローダー設定
--------------------------------
identifier              {resumeloadersettings}
inherit                 {globalsettings}

もうmbr2gptを一回実行してみます。

C:\WINDOWS\system32>mbr2gpt /validate /disk:0 /allowFullOS
MBR2GPT: Attempting to validate disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
MBR2GPT: Validation completed successfully

うまくいったようです。

ではGPTへ変換してみましょう。

C:\WINDOWS\system32>mbr2gpt /convert /disk:0 /allowFullOS

MBR2GPT will now attempt to convert disk 0.
If conversion is successful the disk can only be booted in GPT mode.
These changes cannot be undone!

MBR2GPT: Attempting to convert disk 0
MBR2GPT: Retrieving layout of disk
MBR2GPT: Validating layout, disk sector size is: 512 bytes
MBR2GPT: Trying to shrink the OS partition
MBR2GPT: Creating the EFI system partition
MBR2GPT: Installing the new boot files
MBR2GPT: Performing the layout conversion
MBR2GPT: Migrating default boot entry
MBR2GPT: Fixing drive letter mapping
MBR2GPT: Conversion completed successfully
Call WinReReapir to repair WinRE
MBR2GPT: Failed to update ReAgent.xml, please try to  manually disable and enable WinRE.
MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode!

回復パーティションを消したから怒られてるみたいだけど、一応GPTにはできたっぽいですね。
シャットダウンしてVMWareの設定を変えます。

VMWareの設定を変更する

VMWare Fusionの設定をレガシーBIOSUEFI

セキュアブートにする前に起動して確認します。

うまくいったのでシャットダウンしてからセキュアブートにします。

お次は、暗号化を有効にする にチェックです。
これをしないとTPMを追加できません。
DISK容量が足りないと暗号化できません。

最後にTPMモジュール追加です。

バイスを追加するだけですが、元には戻せないと言われます。

Windows 11のインストール

正常性のチェックは通るのに、WindowsUpdateの画面を開くとシステム要件を満たしてないと言われたので、WindowsUpdateしてみましたが変わらず。

でも、Windows11 インストール アシスタントを実行してみたところインストールできました!

追記

Windows 11にしたら自動的に回復パーティションが作成されていました。
作り直す必要なかったですね。
さらにEFIシステムパーティションというものも追加されています。
BドライブにしていたのはGUIからドライブレターの削除ができました。