はじめに
一年ほど前にこういう記事を書きました。
しかし、Windows 11にアップデートしようとしたところ最終的にハングアップしてバージョンアップに失敗しています。
しかし、1年越しでようやく解決しました。結論から言うとTPM全く関係ないです。
せまるWindows10のサポート期限
ご存じの通り、2025年10月でWindows10のサポートが切れ、セキュリティアップデートが提供されなくなります。bhyveのゲストとはいえ、そのままにしておく訳にはいかないしなぁ...と考えてアップデートしてみることにしました。
まずはクリーンインストール
アップデートができないなら、クリーンインストールすればいいじゃない。
ゲストなんてなんぼでも作れるし。
ということで、新しくゲストを作ってみることにします。
以下の操作はvm-bhyveのvmコマンドです。1.6.0を使っています。
# pkg info vm-bhyve-1.6.0
vm-bhyve-1.6.0
Name : vm-bhyve
Version : 1.6.0
Installed on : Thu Nov 28 08:59:17 2024 JST
Origin : sysutils/vm-bhyve
Architecture : FreeBSD:14:*
Prefix : /usr/local
Categories : sysutils
Licenses : BSD2CLAUSE
Maintainer : churchers@gmail.com
WWW : https://github.com/churchers/vm-bhyve
Comment : Management system for bhyve virtual machines
(以下略)
ゲストの作成
# vm create -t windows-zvol -s 1T -m 16G -c 4 windows11
TPMがないとインストーラーで拒否られるので、前回同様設定します。
# vm config windows11
~~~
bhyve_options="-A -K jp -l tpm,passthru,/dev/tpm0"
~~~
インストール
# vm install windows11 Win11_24H2_Japanese_x64.iso
VNCでコンソールに接続すると、後は普通のWindowsのインストーラです。
プロダクトIDないので、期間限定の評価版扱いですが、まあインストールの確認ができればよいので。
途中不安定になってbhyveが落ちることがありましたが、何とかインストールはできました。はて? TPM関係ない???
Windows10ゲストを無理矢理アップデートしてみる
クリーンインストールが無事できることが分かったので、今度はWindows10を無理矢理11にアップデートする方法を使用します。
Flyby11というのを使うと、TPMを無視してアップデートができるようなので、まずはそちらを試してみます。
https://github.com/builtbybel/Flyby11
インストールは進みますが、やはり途中、再起動したところで止まります。
クリーンインストールはOKなのに、アップデートはダメ。さてどういうこと?
と思って、違いを考えました。
PCI passthroughが悪さをしていた
さらにもう1年前ですが、こういう記事を書いていました。
https://qiita.com/yshdsnd/items/0b8c38425a6a3bae289b
そう、普通に使えていたのですっかり忘れていましたが、アップデートしようとしたVMではPCI passthroughの設定を入れていました。新規インストールのVMには付けていません。
設定を外してみましょう。
#passthru0="3/0/0"
#passthru1="4/0/0"
再度アップデートしてみる
この状態でもう一度アップデートしてみました。
すると...
アップデートに時間はかかりますが、無事アップデートが完了しました。
TPM passthroughは設定したままですが、PCI passthroughを無効にしたら無事立ち上がりました。もうずっとPCI paththrough使っていたので、盲点でした。
TPMを有効にしたからその影響だとずっと思っていたので。
まとめ
bhyve + TPM passthrough でWindows11をインストール、あるいはWindows10から11のアップデートは問題なくできます。
結局はFreeBSD(14.0~14.2)のbhyveでWindows11を動かした場合、 PCI passrough は使えないというのが結論です。
原因は何なのかよく分かっていませんが、とりあえずアップデートできたのでよし。ゲスト上でPCI passthrough経由のUSBデバイスが使えないのはとても不便ですが、Windows機は物理マシンも持っているので、とりあえずは我慢します。
同じ現象が起きているという話も以下にありましたが、今のところ解決していない模様。
https://forums.freebsd.org/threads/bhyve-vm-stuck-when-passthru-enabled.92854/
PCI passthroughが使えるようになったらまた記事書きます。