Wie richte ich eine dynamische Bildschirmgröße für einen QEMU-Windows 10-Gast unter Ubuntu 18.04 ein?

Wie richte ich eine dynamische Bildschirmgröße für einen QEMU-Windows 10-Gast unter Ubuntu 18.04 ein?

Ich habe ein Dual-Boot-Setup auf meinem Laptop: Ubuntu 18.04 und Windows 10. Von Ubuntu aus kann ich mit qemu mithilfe von auf meine vorhandene Windows-Partition bootendieser Leitfaden. Der Befehl, den ich verwende, ist dieser:

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

Die letzte Zeile diente lediglich zur Installation desVirtio-Treiberdaher bin ich ziemlich sicher, dass ich es nicht jedes Mal brauche.
Die zweite Zeile bestimmt die Partition /dev/nvme0n1p1.

Der Leitfaden erwähnt SPICE, dasscheinbargut für

dynamische Bildschirmgrößenanpassung, Zwischenablage zwischen Gast/Host usw.

Ich möchte, dass der virtuelle Bildschirm seine Größe ändert und die Auflösung anpasstwenn ich die Größe des Fensters ändere. Ich habe versucht, der Anleitung zu folgenhttps://www.linux-kvm.org/page/SPICEund mir wurde klar, dass das spicecnicht mehr möglich ist - das heißt, ich kann mich nicht mit dem Gast verbinden spicec -h 127.0.0.1 -p 5900.
DieSpice-Benutzerhandbuchstimmt zu:

Der empfohlene Client ist Remote-Viewer (der mit Virt-Viewer geliefert wird).
GNOME-Boxen können auch als Spice-Client verwendet werden.
Spicec ist ein veralteter Legacy-Client, und Spicy ist nur eine Testanwendung.

Also habe ich versucht, -spice port=5900,addr=127.0.0.1,disable-ticketingmeinem qemuBefehl etwas hinzuzufügen und remote-vieweres weiter laufen zu lassen spice://127.0.0.1:5009. Das hat tatsächlich ein Spice-Fenster geöffnet - also jetztIch habe zwei Fenster, die meinen Win10-Gast anzeigen.
Das Spice-Fenster reagiert besser, wenn seine Größe geändert wird, behält aber die gleiche Auflösung bei und fügt nur bei Bedarf weiße Ränder hinzu.

Die Frage

Wie kann ich eine randlose Ansicht meines Gastsystems erhalten, die sich gut an Größenänderungen anpasst?
Und falls das keine ganz andere Frage ist: Wie kann ich dafür nur ein Fenster haben, statt sowohl das QEMU- als auch das Spice-Fenster?


Weitere Details

Als ich mich verbunden habe remote-viewer, zeigte das Konsolenfenster

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

Und die qemuAusgabe zeigte

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:

Antwort1

Kurz zusammengefasst
Die Punkte 3 und 12 könnten ausreichend sein, je nachdem, wie andere Benutzer ihre VM eingerichtet haben. --kaiya


Ozymandias42empfohlenvirt-managerum es als Frontend zu verwenden , und hat mich Schritt für Schritt durch den Vorgang geführt.

  1. Installieren Sie virt-managerUbuntu auf dem Host
  2. Richten Sie eine Gruppe ein, damit Sie den virtuellen Manager ohne sudo verwenden können
    sudo groupadd --system libvirt
    sudo usermod -a -G libvirt $(whoami)
    su - $USER
    
  3. Starten Sie virt-managerund gehen Sie zu View -> Edit -> Preferences -> Console. Aktivieren SieResize guest with window: On
  4. Verwenden Sie das Symbol oben links, um „eine neue virtuelle Maschine zu erstellen“. Ich war mir da nicht sicher, weil ich keine neue Maschine wollte, sondern nur meine Dualboot-Windows-Partition booten wollte. Aber das ist der Knopf. Wählen Sie „Vorhandenes Disk-Image importieren“
  5. Wählen Sie Ihren Betriebssystemtyp und Ihre Version und geben Sie Ihr Gerät als Pfad ein. Ich /dev/nvme0n1
    bin mir nicht sicher, ob/wie es möglich ist, der VM nur Zugriff auf bestimmte Partitionen zu gewähren (ich habe zuerst versucht, ihr nur die EFI-Partition zu geben, aber das hat natürlich nicht funktioniert. Vielleicht ist es möglich, jede für Windows benötigte Partition als separate virtuelle Festplatte hinzuzufügen. Oder vielleicht miteingesperrt)
  6. Gehen Sie weiter durch die Fenster und aktivieren Sie „Konfiguration vor der Installation anpassen“.
  7. Im Anpassungsfenster habe ich das ausgewählt Firmware: UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fd, was ich bereits auf meinem Linux hatte. Ich glaube, ich habe es installiert, apt install ovmfaber keine Garantie.
  8. Ihre Festplatte wurde als „IDE-Festplatte“ hinzugefügt, was in Ordnung ist, aber mir wurde gesagt, dass Virtio besser ist, weil es die Festplatte nicht emuliert. Wenn Sie Virtio verwenden möchten, muss der Gast dies allerdings unterstützen. Und Ozymandias42 hat mir auch gesagt, dass es wichtig ist, ein Gerät/einen Controller einzurichten, der den Treiber tatsächlich verwendet, wenn der Treiber installiert wird, weil er sonst beim Booten in einem intiramfs-ähnlichen Zustand nicht verfügbar ist. Fügen Sie also eine zweite Festplatte hinzu, machen Sie sie klein, sichern Sie sie mit einer Datei und stellen Sie ihren Festplattenbustyp auf Virtio ein. Sie können sie wieder entfernen, nachdem Sie die Virtio-Gasttools im Gast installiert haben.
  9. Oben links: Begin InstallationAuch das klingt beängstigend. Aber es hat keine Auswirkungen auf die installierten Fenster.
  10. Ich hatte auf dem Gast bereits die Qemu Guest Tools und die Spice Guest Tools installiert. Ich gehe davon aus, dass Sie beide benötigen. Installieren Sie auch dieVirtio Gasttools exeund führen Sie es aus.
  11. Neustart. Wenn alles funktioniert, können Sie die temporäre Festplatte entfernen und auch die Netzwerkkarte auf Virtio ändern.
  12. Gehen Sie in der VM-Maschine zuView -> Scale Display -> Auto resize VM with window

Antwort2

Sie müssen ein virtuelles serielles Gerät hinzufügen, damit die VM mit dem Spice-Client auf dem Host kommunizieren kann. Hätten Sie virt-manager mit libvirtd verwendet, anstatt qemu direkt zu verwenden, hätte es das höchstwahrscheinlich automatisch für Sie erledigt.

Versuchen Sie hinzuzufügen

-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

Wenn das nicht funktioniert, würde ich vorschlagen, virt-manager als Frontend zu verwenden.

verwandte Informationen