
Ich möchte, dass QEMU Maschinen startet, die im Benutzerbereich laufen, aber während der Entwicklung möchte ich Befehle an QEMU senden, indem ich virtsh
. (Beachten Sie, dass dies nicht daran liegt, dass ich virtsh brauche, sondern dass die QEMU-Entwickler nur APIs bereitstellen, die mit virtsh funktionieren. Ich könnte wohl auch fragen: „Wie manipuliert man Snapshots von einem laufenden QEMU über die Befehlszeile, nicht über interaktive QEMU-Monitorsitzungen?“ Diese Virtsh-Frage folgt den Empfehlungen der QEMU-Dokumentation.)
Aus dem Handbuch ist nicht ganz klar ersichtlich, wie man QEMU mit und an eine Libvirt-Instanz anschließt. qemu:///session
Es qemu+unix:///session
wird einfach davon ausgegangen, dass Sie Libvirt alle Hooks starten lassen, daher werden keine Erklärungen gegeben.
Und was ichdenkenist die Lösung, qemu:///embed
ist extrem detailarm und kryptisch für Nicht-Libvirt-Entwicklerhttps://libvirt.org/drvqemu.html#embedded-driver
$ ps aux | grep qemu
gcb ... qemu-system-x86_64 -machine pc...
$ virsh -c qemu+unix:///session list --all
Id Name State
--------------------
$ virsh -c qemu:///session list --all
Id Name State
--------------------
$ id
uid=1000(gcb) ...
Wie genau sucht libvirt nach QEMU-Benutzersitzungen? Und wie kann ich einfach Virtsh-Befehle verwenden, um eine Schnittstelle zu einem laufenden QEMU desselben Benutzers herzustellen, wie oben gezeigt?
Antwort1
Ich wünschte, ich liege falsch, aber nachdem ich ihre Dokumente gelesen habe:
Antwort: Das ist nicht möglich.
libvirt ist ein Redhat+Gnome-Projekt. Daher ist es von Natur aus schlecht (und wurde von oben nach unten gepusht, genau wie systemd). Das Handbuch ist voller herablassender Passagen, die, anstatt zu erklären, dass sie Abstriche gemacht haben und nun Angst haben, dass jede Aktion außerhalb ihrer Kontrolle Fehler verursacht, den Benutzer beschimpfen, weil er mit grundlegenden Dingen wie dem Abrufen einer PID einer laufenden VM nichts anfangen kann. In tieferen Teilen des Handbuchs befinden sich voller 404-Links, die auf persönliche Blogs auf gnome.org verweisen.
Es gibt nur wenig Dokumentation darüber, wie man die Konfigurations-XML für eine neue VM erstellt. Sie müssen sich auf GUI-Programme oder noch schlechter dokumentierte Hack-Skripte wie virsh-install verlassen. Beide setzen voraus, dass Sie eine vollständige Installation mit einem System haben, das ausschließlich für die Ausführung von libvirtd und anderen Diensten vorgesehen ist, und weigern sich schlichtweg, irgendetwas zu tun (und geben nicht einmal eine XML-Vorlage aus), wenn Sie diese Dienste nicht aktiviert haben. Irgendwann hatten sie einen praktischen Übersetzer von QEMU-Argumenten in ihre XML, aber der ist längst verschwunden (hat bereits den Zweck erfüllt, Mitwirkende aus anderen Projekten anzulocken).
Vermeiden Sie Libvirt, sofern Ihr Arbeitgeber es nicht verwendet. Bleiben Sie vorerst bei QEMU-Frontends.
edit: vielleicht ein Workaround, bisher ungetestet:
virt-install --import --connect qemu://session --qemu-commandline '-m ...'
um Ihre QEMU-Maschine ohne das systemweite Libvirtd zu starten.
Bearbeitung 2: Nein, dies wird letztendlich mit dem Hypervisor interagieren. Außerdem haben sie ab 2024 die Dokumentation für qemu-commandline
Parameter aus den Dokumenten entfernt.