スタンドアロン QEMU セッションを libvirt ユーザーセッションに接続するにはどうすればよいですか?

スタンドアロン QEMU セッションを libvirt ユーザーセッションに接続するにはどうすればよいですか?

qemu で起動したマシンをユーザー空間で実行したいのですが、開発中は を使用してコマンドを発行したいと思いますvirtsh。(注意: これは virtsh が必要なためではなく、QEMU 開発者は virtsh で動作する API のみを公開しています。「対話型 qemu モニター セッションではなく、コマンド ライン経由で実行中の QEMU からスナップショットを操作する方法」も質問できると思います。この virtsh の質問は、qemu ドキュメントの推奨事項に従っています)

qemu:///sessionマニュアルでは、 とのどちらかを使用して qemu を libvirt インスタンスに接続する方法があまり明確ではなくqemu+unix:///session、libvirt がすべてのフックを開始することを前提としているため、何も説明されていません。

そして私が考える解決策ですが、qemu:///embed詳細が極めて不足しており、libvirt 開発者以外の人にとっては難解です。https://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 はユーザーセッションの qemu を具体的にどのように検索するのでしょうか? また、上記のように、同じユーザーから実行中の qemu とインターフェイスするために、virtsh コマンドを使用するにはどうすればよいでしょうか?

答え1

間違っていたらいいのですが、彼らのドキュメントを読んだ後:

答え:それは不可能です。

libvirt は redhat+gnome プロジェクトです。そのため、設計上良くありません (systemd と同様に上から下まで押し進められました)。マニュアルには、手抜きをした結果、制御できないアクションがバグを引き起こすことを恐れていることを説明する代わりに、実行中の仮想マシンの PID を取得するなどの基本的な事柄について何も良いことをしていないとユーザーを叱責する、見下したような文章が満載です。マニュアルのより深い部分には、gnome.org の個人ブログを指す 404 リンクが満載です。

新しい VM の構成 xml を作成する方法に関するドキュメントはほとんどありません。GUI プログラム、またはさらにひどいドキュメント化されたハッキー スクリプト virsh-install に頼らなければなりません。どちらも、libvirtd やその他のサービスを実行するための専用システムを備えた完全なインストールがあることを前提としており、それらのサービスが起動していない限り、アクション (xml テンプレートの出力さえも) をまったく実行しません。ある時点では、qemu 引数から xml への便利なトランスレータがありましたが、それはずっと前になくなりました (他のプロジェクトからの貢献者を引き付けるという目的はすでに果たしました)。

雇用主が使用しない限り、libvirt は使用しないでください。今のところは qemu フロントエンドを使用してください。

編集: 回避策があるかもしれないが、今のところテストされていない:

virt-install --import --connect qemu://session --qemu-commandline '-m ...' システム全体の libvirtd なしで qemu マシンを起動します。

編集 2: いいえ、これは最終的にはハイパーバイザーと対話します。また、2024 年現在、qemu-commandlineドキュメントから param のドキュメントが削除されています。

関連情報