如何在 ubuntu 18.04 上为 qemu windows 10 来宾设置动态屏幕大小?

luc*_*rot 8 virtualization qemu spice

我的笔记本电脑上有一个双引导设置: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
Run Code Online (Sandbox Code Playgroud)

最后一行只是安装virtio 驱动程序,所以我很确定我每次都不需要它。
第二行确定分区/dev/nvme0n1p1

该指南提到了 SPICE,这显然

动态屏幕调整大小,来宾/主机之间的剪贴板等。

我希望在调整窗口大小时让虚拟屏幕改变其大小并调整分辨率。我试图按照https://www.linux-kvm.org/page/SPICE上的指南进行操作,并意识到这spicec不再是一回事 - 这意味着我无法通过spicec -h 127.0.0.1 -p 5900.
香料用户手册同意:

推荐的客户端是 remote-viewer(随 virt-viewer 一起提供)。
GNOME Boxes 也可以用作 Spice 客户端。
spicec 是一个过时的遗留客户端,而spicec只是一个测试应用程序。

因此,我不得不用增加一个去-spice port=5900,addr=127.0.0.1,disable-ticketing到我的qemu指挥和运行remote-viewerspice://127.0.0.1:5009。这实际上打开了一个香料窗口 - 所以现在我有两个窗口显示我的 win10 来宾。
Spice 窗口在调整大小时反应更好,但它保持相同的分辨率,并在必要时添加白色边框。

问题

我怎样才能获得我的来宾系统的无边界视图,以适应调整大小?
如果这不是一个完全不同的问题:我怎么能只有一个窗口,而不是 qemu 和 spice 窗口?


更多细节

当我连接时remote-viewer,它的控制台窗口显示

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

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:
Run Code Online (Sandbox Code Playgroud)

luc*_*rot 3

TL;DR
第 3 点和第 12 点可能就足够了,具体取决于其他用户如何设置其 VM。——凯亚


Ozymandias42建议尝试将其用作virt-manager前端并引导我完成它。

  1. virt-manager在主机ubuntu上安装
  2. 设置一个组,以便您无需 sudo 即可使用 virt-manager
    sudo groupadd --system libvirt
    sudo usermod -a -G libvirt $(whoami)
    su - $USER
    
    Run Code Online (Sandbox Code Playgroud)
  3. 开始virt-manager并转到View -> Edit -> Preferences -> Console。启用Resize guest with window: On
  4. 使用左上角的图标“创建新虚拟机”。我在那里不确定,因为我不想要一台新机器,我只是想启动我的双启动 Windows 分区。但这就是按钮。选择“导入现有磁盘映像”
  5. 选择您的操作系统类型和版本,然后输入您的设备作为路径。我已经使用过,/dev/nvme0n1
    我不确定是否/如何可以只允许虚拟机访问某些分区(我首先尝试只给它 EFI 分区,但这当然不起作用。也许可以添加所需的每个分区对于 Windows 作为单独的虚拟磁盘。或者可能使用confinedrv
  6. 继续浏览窗口,确保选中“安装前自定义配置”
  7. 在定制窗口中,我选择了Firmware: UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fd我的 Linux 上已有的。我想我安装了它apt install ovmf,但没有保证。
  8. 您的磁盘被添加为“IDE 磁盘”,这没关系,但我被告知 virtio 更好,因为它不模拟磁盘。如果您想使用 virtio,则访客需要对其的支持。Ozymandias42 还告诉我,在安装驱动程序时设置一个实际使用该驱动程序的设备/控制器非常重要,因为否则它在启动时将无法以类似 intiramfs 的状态可用。因此,添加第二个磁盘,使其变小,由某些文件支持,并将其磁盘总线类型设置为 virtio。您可以在来宾中安装 virtio guest 工具后再次将其删除。
  9. 左上:Begin Installation同样,这听起来很可怕。但它不会扰乱已安装的窗口。
  10. 我已经在来宾上安装了 Qemu 来宾工具和 SPICE 来宾工具。我想你两者都需要。还要安装virtio guest tools exe并运行它。
  11. 重启。如果一切正常,您可以删除临时磁盘并将网卡也更改为 virtio。
  12. 在VM机器中转到View -> Scale Display -> Auto resize VM with window