
Я хотел бы, чтобы 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-commandline
param из docs.