Hyper-V VMのTPMを後から有効にする

経緯

2年ほど運用している自宅サーバーがある。

HWはASRock Deskmeet B660に12世代i3を載せたもので、(使い始め当時は)Windowsが必要だったからWindows11を入れてファイル共有とHyper-VでたまにVMで遊んでいる。

常時起動しっぱなしにしているVMはWindows11の1台のみなのだが、このVMが今回の相手。

Windows Updateが中々降ってこず、ずっとタブも使えないエクスプローラーで我慢していた。

ふと思い立ってWindows Updateのボタンを押すとあら不思議、画像がなくて申し訳ないのだが赤いエラーアイコンと共に「更新を完了できるようにデバイスを電源に接続してオンにしたままにしてください」とのメッセージが出てWindows Updateが降ってこない。

念の為VMを再起動して試してみても変わらず。検索するとどうやらサポートが切られたWindowsで出ることがあるらしい。(だったらそれらしいメッセージにしておけや)

winverを確認するとなんと21H2。2024/10にサポートは切られている。

なんでそんなバージョンのまま動き続けたのか不思議に思いながら、「まぁアップデートアシスタントだかインストールアシスタントだかを使えばインプレースアップグレードできるべ多分」なんて考えてMSサイトからダウンロードし起動。

ツールを起動すると「PC正常性チェック」とやらでWindows11の対応をチェックしてからじゃないと実行できないとのこと。10時代に使ったことがあるツールで、当時はTPMやCPUの世代やらで話題になっていた覚えがある。

これを使ったところでようやっとこのVMにTPMが無い事が判明し、そのため自動的にWindows Updateされることも無くずっとバージョンが固定されていたらしい。特に危ないことをしているマシンでは無いとはいえ怖すぎる。よく今まで無事だったな…。

というわけでHyper-VマネージャーからVMの設定を開きTPMを追加したが今度は別のエラーが。

「キーの保護機能をラップ解除できませんでした」というエラーメッセージで VMの起動が出来ない 。ここからが今日の本題。

エラーメッセージの内容

  • メッセージで検索した所どうやらエクスポート・インポートしたVMなどで起こるらしい
  • VMを作成した物理マシンで証明書をエクスポートし、新しいホストでインポートする必要がある
  • ただし私の場合VMのインポートは行っていない。このVMのTPMやセキュアブートを昔どうしたかなど記憶の彼方
  • 後からTPMを有効にする方法は無いか?

対応方法

ぱっと思いついたのは、仮想ディスクファイルだけ元のまま使い仮想マシン自体を再登録(再作成)する方法。

どうせ大したものも入っていないのだから仮想マシン自体OSのインストールから作り直しても良いのだけどせっかくだし試してうまく行った。

後からググったが同様の対処をした人もいくつか見つかったので、やっぱりエラーメッセージが死ぬほど分かりづらいせいでマコモVMになりがちなのかもしれない。

一応手順を書いておく

  • VMをシャットダウン
  • VMの設定をメモっておく
    • vNICやvCPUコア数、割当メモリ量など
  • 紐づいている仮想ディスクのパスを確認(VMの設定から確認できる)
  • 念の為、仮想マシンをバックアップ
    • 面倒なので仮想ディスクだけ別のフォルダにコピペしておいた
  • Hyper-VマネージャーからVMを削除
    • 仮想ディスクは残るけど、残るかどうか挙動うろ覚えだったため念の為バックアップしていた
  • 新規VM作成
    • 第2世代
    • 同じVM名でも問題なかった
    • 仮想ディスクは既存を指定
  • 作成後、ウィザードからでは設定できない項目を設定
    • ここでTPMを追加した
  • VMを起動

起動確認後、元々やりたかったインプレースアップグレードのための互換性チェックを行って無事通りアップデートも行えた。

Windows Updateとwinverのスクリーンショット

Windows11のVMはほぼ触ったことが無かったため盲点だった。もうちょいHyper-Vの仮想マシン作成ウィザードがマシになってくれればなぁ。

とはいえ、そもそも有効にも無効にもした覚えがないままずっと動いていただけのVMで後からTPMの追加時にエラーが出るのはどういうことなんだ。記憶失ってるだけ?