Как подключить автономные сеансы QEMU к пользовательскому сеансу libvirt?

Как подключить автономные сеансы QEMU к пользовательскому сеансу libvirt?

Я хотел бы, чтобы qemu запускал машины, работающие в пользовательском пространстве, но во время разработки я хотел бы отдавать ему команды с помощью virtsh. (обратите внимание, это не потому, что мне нужен virtsh, а потому, что разработчики QEMU предоставляют только API, которые работают с virtsh. Думаю, я мог бы также спросить «как управлять снимками из работающего QEMU через командную строку, а не интерактивные сеансы монитора qemu?» этот вопрос о virtsh следует тому, что рекомендуют документы qemu)

В руководстве не очень ясно, как присоединить qemu к экземпляру libvirt с помощью qemu:///sessionи qemu+unix:///session, оно просто предполагает, что вы позволите libvirt запустить все хуки, поэтому оно ничего не объясняет.

И что ядуматьэто решение, qemu:///embedв нем крайне мало подробностей и оно непонятно для разработчиков, не использующих libvirthttps://libvirt.org/drvqemu.html#встроенный-драйвер

$ 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) ...

Как именно libvirt ищет user-session qemu? И как я могу просто использовать команды virtsh для взаимодействия с запущенным qemu от того же пользователя, как показано выше?

решение1

Хотелось бы ошибаться, но после прочтения их документов:

Ответ: это невозможно.

libvirt — это проект redhat+gnome. Как таковой, он плох по своей сути (и был продвинут сверху вниз, как и systemd). Руководство полно снисходительных отрывков, в которых вместо объяснений они срезают углы, и теперь они боятся, что любое действие, выходящее за рамки их контроля, вызовет ошибки, они ругают пользователя за то, что тот не имеет ничего хорошего в таких базовых вещах, как получение PID работающей виртуальной машины. Более глубокие части руководства полны ссылок 404, указывающих на личные блоги в gnome.org.

Мало документации о том, как написать xml-файл конфигурации для новой виртуальной машины. Предполагается, что вы будете зависеть от программ с графическим интерфейсом или, что еще хуже, от документированных хакерских скриптов virsh-install. Оба они предполагают, что у вас есть полная установка с системой, выделенной для запуска libvirtd и других служб, и наотрез откажутся выполнять какие-либо действия (даже выдавать шаблон xml), если эти службы не запущены. В какой-то момент у них был удобный транслятор из аргументов qemu в их xml, но он давно исчез (уже послужил цели переманить участников из других проектов).

избегайте libvirt, если ваш работодатель его не использует. Пока придерживайтесь фронтендов qemu.

правка: возможно, обходной путь, пока не проверенный:

virt-install --import --connect qemu://session --qemu-commandline '-m ...' для запуска вашей машины qemu без общесистемного libvirtd.

правка 2: нет, это в конечном итоге будет взаимодействовать с гипервизором. Также с 2024 года они удалили документацию для qemu-commandlineparam из docs.

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