✅今回のトラブル
TrueNAS上のWindows仮想マシンで画面解像度が変更できない問題に直面しました。
具体的には、仮想マシンのWindows上で解像度が1280×800に固定されてしまい、「設定 > システム > ディスプレイ > ディスプレイの解像度」の項目がグレーアウトして選択できない状態です。
原因を調べていくと、Windowsに仮想マシン用の画面ドライバーが導入されていなかったことが判明しました。TrueNAS側で解像度を1920×1080に設定していても、それがゲストOSであるWindows側に反映されていない状況のままでした。
解決策として、Windowsにvirtio-win ゲストツール(QEMU/KVM仮想マシン用のWindows向け準仮想化ドライバーおよびゲストエージェント群)をインストールし、再起動を実施しました。
これにより、表示ウィンドウの大きさに合わせて解像度が自動で可変するようになっています。
また、今回のトラブルシューティングの過程で、画面方式としてVNCとSPICEを併用していた構成を見直し、SPICEに一本化する作業も同時に行いました。
親機からの操作には、SPICE専用アプリであるvirt-viewer(SPICEプロトコルに対応した軽量な仮想マシン画面ビューアー)(Remote Viewer)を活用する形に落ち着いています。
以前に際にも感じていましたが、仮想環境での細かい挙動の調整は、地味ながら一つひとつ原因を潰していくしかありません。今回はその備忘録として、一連の手順を記録しておきます。
✅検証環境の構成
今回の検証および作業を行ったNASおよび仮想マシンの構成は以下の通りです。
- 製品: TrueNAS Community Edition
仮想マシンのスペックは以下の構成で運用しています。
- 仮想CPU: 1 / 6コア / 2スレッド
- メモリ: 16 GiB
- 起動方式: UEFI
操作を行う親機側の環境としては、Windows 11 Homeを使用しています。
✅症状の確認と原因の切り分け
TrueNASの管理画面にある「ディスプレイ」ボタン経由で、SPICEのブラウザ版画面を開いて状況を確認しました。
Windowsの「設定 > システム > ディスプレイ」を開いてみたところ、ディスプレイの解像度が1280×800のままで固定されており、グレーアウトして選択できない状態でした。ブラウザ版画面自体の描画領域も1280×800となっていました。
TrueNASの仮想マシン設定側ではVNCおよびSPICEともに1920x1080が指定されているにもかかわらず、それがWindows側に反映されていなかった原因は、ゲストOS側に仮想マシン用の画面ドライバーが導入されていなかったためです。
初期状態のWindowsでは、Microsoft Basic Display Adapter(Windows標準の汎用画面ドライバー。VESA互換の最低限の描画しか行えない)で動作していたと考えられます。
この標準ドライバー環境では解像度の動的な変更ができず、仮想マシンのUEFIファームウェアが初期出力する標準解像度(今回の1280×800)に固定されてしまう仕様です。
✅解決策:virtio-win ゲストツールの導入
画面解像度の問題を解決するため、QEMU/KVM環境向けの統合ドライバーであるvirtio-winゲストツールを導入しました。
インストーラーの入手先は、Fedoraプロジェクトがホストしている配布サーバーとなります。中身はRed Hat社が開発・保守を行っているものです。
実際に実施した導入手順は次の通りです。
- 仮想マシンのWindows上で
virtio-win-guest-tools.exeを実行し、画面に従ってインストールを完了させる。 - Windowsを再起動する。
- 再起動後、ブラウザ版SPICE画面などで表示状態を確認する。
導入後の結果として、Windowsの解像度がブラウザウィンドウの大きさに合わせて自動的に追従・変更されるようになりました。これにより、画面ドライバーおよびSPICE用のゲストエージェントが正常に稼働していることが確認できました。
これで「設定」メニューからの解像度変更も可能になりますが、SPICE接続で表示している最中は、ウィンドウサイズを変更すると自動調整機能によって解像度が上書きされる挙動となります。
✅画面方式の比較とSPICEへの一本化
今回のトラブルシューティングを機に、仮想マシンの画面方式を従来の「VNCとSPICEの併用」から「SPICEへの一本化」へと変更することにしました。それぞれの特性を整理しておきます。
- SPICE: キーボードの「物理的な位置」を送信するため日本語キーボードでもずれにくい。解像度の自動調整や親機とのコピー&ペースト共有が可能。描画効率も良い。
- VNC: キーボードを「文字コード」として送信するため、記号キーや半角/全角の切り替えでずれが生じやすい。解像度の自動調整やコピー&ペーストの共有は基本的にできない。
今回の環境では、VNC接続時のキーボード入力の勝手に不満があったこと、リモートデスクトップではなくハイパーバイザー側から直接画面を覗いて設定を行う用途が中心であることから、SPICEに絞る判断を下しました。
✅稼働中のVNCデバイス削除作業
不要となったVNCの画面デバイスをTrueNASから削除する作業を行いました。
ここで注意すべき点として、仮想マシンが稼働(動作中)の状態でVNCのディスプレイデバイスを削除しようとすると、次のようなエラーが発生して弾かれます。
CallError [EFAULT] Please stop/resume associated VM before deleting VM device.
このエラーが出た時点では設定の変更は適用されません。
削除完了後、親機側からネットワーク経由で各ポートへの接続状態を確認したところ、5900番(VNC)および5901番(VNCブラウザ用)は応答なしとなり、5902番(SPICE)および5903番(SPICEブラウザ用)のみが正常に応答することを確認できました。
仮想環境周りの設定やドライバーの当たり外れは毎回悩まされるポイントですが、これでとりあえず実用的なリモート操作環境が整いました。
また何か仕様変更や調整が必要になったら、随時記録を残しておこうと思います。それでは。