kWatanabe 記事一覧へ

kWatanabe の 技術帖

某企業でOSや仮想化の研究をやっているインフラ系エンジニア。オンプレとクラウドのコラボレーションなど、興味ある技術を綴る。

KVMでTPMをエミュレートしてWindows11を動かす

  • KVM (Proxmox VE) で TPM 2.0 をエミュレートする環境を構築した
  • KVM (Proxmox VE) で TPM 2.0 をエミュレートしたVMを作り、Windows11を動かしてみた

Windows11のシステム要件

先日、Windows11がリリースされたが、その動作条件の厳しさに一部で話題になっている。

www.microsoft.com

上記の Microsoft のWebサイトから一部引用すると以下の通り。

項目 要件
CPU 1GHz で 2コア以上
Intel なら Coffee Lake 以降
AMD なら Zen+ 以降
RAM 4GB 以上
Storage 64GB 以上
Firmware UEFI / Secureboot 対応
TPM 2.0 以降

CPUの世代は、KabyLake も Zen も 5年前 のものだし、Windows10も継続提供されるので、「新しいOSを使いたければ、新しいマシンを使ってください」という主張はまぁ良しとする。(なんだかんだで動くでしょうし)

ただ、TPM が必須となっている点はちょっと気になるところ。VMTPMのエミュレーションって、可能だったかな。

VMでのTPMエミュレーション

ざっと調べてみただけでも、イマドキのハイパーバイザでは vTPM のサポートに特に問題はなさそう。

QEMU/KVM

QEMU/KVM では、swtpm というモジュールで vTPM をサポートしている。

qemu-project.gitlab.io

Hyper-V

Hyper-V では、Windows Server 2016 以降で vTPM をサポートしている。

docs.microsoft.com

VMware vSphere

VMware vSphere では、vSphere 6.7 以降で vTPM をサポートしている。

docs.vmware.com

検証

QEMU/KVM ( Proxmox VE ) でvTPM をエミュレートできる環境を構築して、Windows11 を動かしてみる。

…つもりだったのだけれども、モタモタしていたら、先日の ProxmoxVE のアップデートで vTPM が標準でサポートされてしまった。哀しみ。

手順

元々やろうとしていたこと

本来は以下のような手順で vTPM 環境を構築するつもりだった。

# swtpm socket --tpmstate dir=/var/run/tpm --tpm2 --ctrl type=unixio,path=/var/run/tpm/sock
  • QEMUの起動オプションに TPM 用のオプションを追加して起動
...
-bios ビルドしたUEFIファーム
-chardev socket,id=tpmc,path=/var/run/tpm/sock
-tpmdev emulator,id=tpm,chardev=tpmc
-device tpm-tis,tpmdev=tpm
...
今やればいいこと

しかし、最近のProxmox VEのアップデートで、vTPMを追加するメニューが追加されたので、今ならここをポチーするだけで終了。ポコペン

f:id:kWatanabe:20211009173605p:plain

一応、注意点としては以下。

  • BIOSOVMF(UEFI) にする
  • マシンは q35 にする
  • TPMバージョンは 2.0 にする

結果

f:id:kWatanabe:20211009181530j:plain
KVM上のWindows11

f:id:kWatanabe:20211009181551j:plain
vTPM2.0も有効

とんだ肩透かしだったけど。まぁ、こんな感じ。