Как настроить динамическое изменение размера экрана для гостевой ОС QEMU Windows 10 в Ubuntu 18.04?

Как настроить динамическое изменение размера экрана для гостевой ОС QEMU Windows 10 в Ubuntu 18.04?

У меня на ноутбуке установлена ​​двойная загрузка: Ubuntu 18.04 и Windows 10. Из Ubuntu я могу загрузить существующий раздел Windows, используя QEMU с помощьюэто руководство. Я использую следующую команду:

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так что я почти уверен, что мне это не нужно каждый раз.
Вторая строка определяет раздел /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 — устаревший клиент, а острое — это всего лишь тестовое приложение.

Так что я попробовал добавить -spice port=5900,addr=127.0.0.1,disable-ticketingк своей qemuкоманде и запустить remote-viewerна spice://127.0.0.1:5009. Это фактически открыло окно spice - так что теперьУ меня есть два окна, в которых отображается гостевая ОС Win10.
Окно Spice реагирует более корректно при изменении размера, но сохраняет то же разрешение и просто добавляет белые рамки при необходимости.

Вопрос

Как мне получить вид без границ моей гостевой системы, который хорошо адаптируется к изменению размера?
И если это не совсем отдельный вопрос: как мне сделать так, чтобы у меня было только одно окно для этого, вместо окна qemu и spice?


Более подробная информация

Когда я подключился 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

TL;DR
Пункты 3 и 12 могут быть достаточными, в зависимости от того, как другие пользователи настроили свои виртуальные машины. --кайя


Озимандия42предложенныйпопробовать использовать его virt-managerв качестве интерфейса и провел меня через все этапы.

  1. Установить virt-managerна хост ubuntu
  2. Создайте группу, чтобы можно было использовать virt-manager без sudo
    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. Выберите тип и версию ОС и введите свое устройство в качестве пути. Я использовал /dev/nvme0n1
    Я не уверен, возможно ли/как можно предоставить виртуальной машине доступ только к определенным разделам (сначала я попробовал предоставить ей только раздел EFI, но это, конечно, не сработало. Возможно, можно добавить каждый раздел, необходимый для Windows, как отдельный виртуальный диск. Или, может быть, используяограниченный)
  6. Продолжайте просмотр окон, обязательно отметьте галочкой «Настроить конфигурацию перед установкой».
  7. В окне настройки я выбрал Firmware: UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fdто, что у меня уже было на linux. Думаю, я установил его, apt install ovmfно никаких гарантий.
  8. Ваш диск был добавлен как "IDE Disk", что нормально, но мне сказали, что virtio лучше, потому что он не эмулирует диск. Если вы хотите использовать virtio, гостевой системе нужна его поддержка. И Ozymandias42 также сказал мне, что важно иметь настроенное устройство/контроллер, которое фактически использует драйвер, во время установки драйвера, потому что в противном случае он не будет доступен при загрузке в состоянии, подобном intiramfs. Поэтому добавьте второй диск, сделайте его маленьким, подкрепленным каким-нибудь файлом, и установите его тип шины диска на virtio. Вы можете снова удалить его после установки гостевых инструментов virtio в гостевой системе.
  9. Вверху слева: Begin Installationопять же, это звучит страшно. Но это не портит установленные окна.
  10. Я уже установил на гостевой системе Qemu Guest Tools и spice guest tools. Я предполагаю, что вам нужны оба. Также установитегостевые инструменты virtio exeи запустите его.
  11. Перезагрузитесь. Если все работает, вы можете удалить временный диск и также изменить NIC на virtio.
  12. На виртуальной машине перейдите вView -> Scale Display -> Auto resize VM with window

решение2

Вам нужно добавить устройство virtio-serial для VM, чтобы общаться с клиентом spice на хосте. Если бы вы использовали virt-manager с libvirtd вместо использования qemu напрямую, он, скорее всего, позаботился бы об этом автоматически.

Попробуйте добавить

-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 в качестве интерфейса.

Связанный контент