Como configurar o dimensionamento de tela dinâmico para um convidado do qemu windows 10 no ubuntu 18.04?

Como configurar o dimensionamento de tela dinâmico para um convidado do qemu windows 10 no ubuntu 18.04?

Eu tenho uma configuração de inicialização dupla no meu laptop: Ubuntu 18.04 e Windows 10. No Ubuntu, posso inicializar minha partição existente do Windows usando qemu com a ajuda deeste guia. O comando que estou usando é este:

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

A última linha foi apenas para instalar odrivers virtioentão tenho certeza de que não preciso disso sempre.
A segunda linha determina a partição /dev/nvme0n1p1.

O guia menciona SPICE, que éaparentementebom para

redimensionamento dinâmico da tela, área de transferência entre convidado/host, etc.

Gostaria que a tela virtual mudasse de tamanho e adaptasse a resoluçãoquando redimensiono a janela. Tentei seguir o guia emhttps://www.linux-kvm.org/page/SPICEe percebi que isso spicecnão existe mais - isso significa que não consigo me conectar ao convidado com spicec -h 127.0.0.1 -p 5900.
OManual do usuário do Spiceconcorda:

O cliente recomendado é o visualizador remoto (que acompanha o virt-viewer).
GNOME Boxes também pode ser usado como cliente Spice.
Spicec é um cliente legado obsoleto, e picante é apenas uma aplicação de teste.

Então, tentei adicionar -spice port=5900,addr=127.0.0.1,disable-ticketingao meu qemucomando e executar remote-viewero spice://127.0.0.1:5009. Isso realmente abriu uma janela de especiarias - então agoraEu tenho duas janelas que mostram meu convidado win10.
A janela do Spice reage melhor quando é redimensionada, mas mantém a mesma resolução e apenas adiciona bordas brancas quando necessário.

A questão

Como posso obter uma visão sem fronteiras do meu sistema convidado que se adapte bem ao redimensionamento?
E se essa não for uma questão completamente distinta: como posso ter apenas uma janela para isso, em vez da janela qemu e da especiarias?


Detalhes adicionais

Quando me conectei remote-viewer, a janela do console mostrou

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

E a qemusaída mostrou

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:

Responder1

DR
os pontos 3 e 12 podem ser suficientes, dependendo de como outros usuários configuraram sua VM. --kaiya


Ozymandias42sugeridopara tentar usar virt-managercomo frontend e me orientou.

  1. Instale virt-managerno host Ubuntu
  2. Configure um grupo para que você possa usar o virt-manager sem sudo
    sudo groupadd --system libvirt
    sudo usermod -a -G libvirt $(whoami)
    su - $USER
    
  3. Comece virt-managere vá para View -> Edit -> Preferences -> Console. AtivarResize guest with window: On
  4. Use o ícone no canto superior esquerdo para “Criar uma nova máquina virtual”. Eu não tinha certeza porque não queria uma máquina nova, só queria inicializar minha partição dualboot do Windows. Mas esse é o botão. Escolha "Importar imagem de disco existente"
  5. Escolha o tipo e a versão do seu sistema operacional e digite o seu dispositivo como caminho. Eu usei, /dev/nvme0n1
    não tenho certeza se/como é possível conceder acesso à VM apenas a determinadas partições (primeiro tentei fornecer apenas a partição EFI, mas é claro que não funcionou. Talvez seja possível adicionar cada partição necessária para Windows como um disco virtual separado ou talvez usando.confinado)
  6. continue navegando pelas janelas, certifique-se de marcar "Personalizar configuração antes de instalar"
  7. Na janela de customização, escolhi Firmware: UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fdo que já tinha no meu linux. Acho que instalei isso usando, apt install ovmfmas sem garantias.
  8. Seu disco foi adicionado como um "disco IDE", o que é bom, mas me disseram que o virtio é melhor porque não está emulando o disco. Se você quiser usar o virtio, o convidado precisa de suporte para isso. E Ozymandias42 também me disse que é importante ter um dispositivo/controlador configurado que realmente use o driver, no momento da instalação do driver, caso contrário ele não estará disponível na inicialização em um estado semelhante ao intiramfs. Portanto, adicione um segundo disco, torne-o pequeno, apoiado por algum arquivo, e defina seu tipo de barramento de disco como virtio. Você pode removê-lo novamente após instalar as ferramentas virtio guest no guest.
  9. Canto superior esquerdo: Begin Installationnovamente, isso parece assustador. Mas isso não mexe com as janelas instaladas.
  10. Eu já tinha instalado no convidado as ferramentas Qemu Guest e as ferramentas Spice Guest. Presumo que você precise de ambos. Instale também oVirtio Guest Tools exee execute-o.
  11. Reinício. Se tudo funcionar, você pode remover o disco temporário e alterar a NIC para virtio também.
  12. Na máquina VM vá paraView -> Scale Display -> Auto resize VM with window

Responder2

Você precisa adicionar um dispositivo virtio-serial para a VM se comunicar com o cliente Spice no host. Se você tivesse usado o virt-manager com o libvirtd em vez de usar o qemu diretamente, provavelmente teria resolvido isso automaticamente.

Tente adicionar

-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

Se isso não funcionar, sugiro usar o virt-manager como frontend.

informação relacionada