Ubuntu 18.04 上の QEMU Windows 10 ゲストに動的な画面サイズを設定するにはどうすればいいですか?

Ubuntu 18.04 上の QEMU Windows 10 ゲストに動的な画面サイズを設定するにはどうすればいいですか?

私のラップトップには、Ubuntu 18.04とWindows 10のデュアルブート設定があります。Ubuntu内から、qemuを使用して既存のWindowsパーティションを起動できます。このガイド私が使用しているコマンドは次のとおりです。

sudo qemu-system-x86_64 --enable-kvm -cpu host -smp 8 -m 8192 \
-drive format=raw,file=/dev/nvme0n1,index=1 \
-bios /usr/share/ovmf/OVMF.fd \
-display sdl -vga qxl \
-device qemu-xhci,id=xhci \
-netdev user,id=vmnic,smb=/home/generic/Downloads \
-device virtio-net,netdev=vmnic -cdrom ~/Downloads/virtio-win-0.1.171.iso

最後の行は、virtio ドライバーだから毎回必要になるわけではないと思います。2
行目はパーティションを決定します/dev/nvme0n1p1

ガイドにはSPICEについて触れられていますが、どうやら良い

動的な画面サイズ変更、ゲスト/ホスト間のクリップボードなど。

仮想画面のサイズを変更し、解像度を調整したいウィンドウのサイズを変更するときに、ガイドに従ってみましたhttps://www.linux-kvm.org/page/SPICEそして、それはspicecもう存在しないことに気づきました。つまり、私はゲストに接続できないということ ですspicec -h 127.0.0.1 -p 5900
Spice ユーザーマニュアル同意します:

推奨されるクライアントは remote-viewer (virt-viewer に同梱) です。GNOME
Boxes も Spice クライアントとして使用できます。
spicecは時代遅れのレガシークライアントです、spicy はテストアプリケーションのみです。

そこで、コマンド-spice port=5900,addr=127.0.0.1,disable-ticketingに を追加しqemuて実行してみremote-viewerましたspice://127.0.0.1:5009。すると、Spiceウィンドウが開きました。私の Windows 10 ゲストを表示するウィンドウが 2 つあります。
Spice ウィンドウはサイズを変更するとより適切に反応しますが、解像度は同じままで、必要なときに白い境界線が追加されるだけです。

質問

サイズ変更にうまく適応するゲスト システムの境界のないビューを取得するにはどうすればよいでしょうか。
また、これがまったく別の質問ではない場合、qemu ウィンドウと spice ウィンドウの両方ではなく、1 つのウィンドウだけを表示するにはどうすればよいでしょうか。


詳細情報

接続するとremote-viewer、コンソールウィンドウに

** (remote-viewer:3066): CRITICAL **: 15:54:52.441: virt_viewer_util_extract_host: assertion 'uri != NULL' failed

そしてqemu出力は

main_channel_link: add main channel client
main_channel_client_handle_pong: net test: latency 0.110000 ms, bitrate 34711864406 bps (33103.813559 Mbps)
inputs_connect: inputs channel client create
red_qxl_set_cursor_peer:

答え1

要約
他のユーザーが VM をどのように設定したかに応じて、ポイント 3 と 12 で十分な場合があります。 --カイヤ


オジマンディアス42提案されたvirt-managerフロントエンドとして使用してみることを勧め、手順を案内してくれました。

  1. virt-managerホストUbuntuにインストールする
  2. sudoなしでvirt-managerを使用できるようにグループを設定する
    sudo groupadd --system libvirt
    sudo usermod -a -G libvirt $(whoami)
    su - $USER
    
  3. 開始しvirt-managerて に進みますView -> Edit -> Preferences -> Console。アクティブ化しますResize guest with window: On
  4. 左上のアイコンを使用して「新しい仮想マシンを作成」します。新しいマシンは必要なく、デュアルブートの Windows パーティションを起動したかっただけなので、ここでは確信が持てませんでした。しかし、それがボタンです。「既存のディスク イメージをインポート」を選択します。
  5. OSの種類とバージョンを選択し、デバイスをパスとして入力します。VMに/dev/nvme0n1
    特定のパーティションへのアクセスのみを許可するかどうかはわかりません(最初はEFIパーティションのみを許可しようとしましたが、もちろんうまくいきませんでした)。Windowsに必要な各パーティションを個別の仮想ディスクとして追加できるかもしれません。または、限定ドライブ
  6. ウィンドウを進み、「インストール前に構成をカスタマイズする」にチェックを入れてください。
  7. カスタマイズ ウィンドウで、Firmware: UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fdLinux にすでにインストールされているものを選択しました。それを使用してインストールしたと思いますapt install ovmfが、保証はありません。
  8. ディスクは「IDE ディスク」として追加されましたが、これは問題ありません。しかし、ディスクをエミュレートしない virtio の方が良いと言われています。ただし、virtio を使用する場合は、ゲストが virtio をサポートしている必要があります。また、Ozymandias42 は、ドライバーのインストール時に、実際にドライバーを使用するデバイス/コントローラーをセットアップしておくことが重要だと教えてくれました。そうしないと、起動時に intiramfs のような状態で使用できなくなります。そのため、2 つ目のディスクを追加し、それを小さくして、何らかのファイルでバックアップし、ディスク バス タイプを virtio に設定します。ゲストに virtio ゲスト ツールをインストールした後、再度削除できます。
  9. 左上:Begin Installationこれも恐ろしい話です。しかし、インストールされているウィンドウには影響しません。
  10. ゲストにはQemuゲストツールとspiceゲストツールがすでにインストールされています。両方必要だと思います。また、virtio ゲスト ツール exeそして実行します。
  11. 再起動します。すべてがうまくいけば、一時ディスクを削除し、NIC を virtio に変更することもできます。
  12. VMマシンでView -> Scale Display -> Auto resize VM with window

答え2

VM がホスト上の spice クライアントと通信するには、virtio-serial デバイスを追加する必要があります。qemu を直接使用するのではなく、libvirtd で virt-manager を使用した場合は、おそらく自動的に処理されていたでしょう。

追加してみてください

-device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0
-chardev spicevms,id=charchannel1,name=vdagent
-device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0

それでもうまくいかない場合は、フロントエンドとして virt-manager を使用することをお勧めします。

関連情報