libvirt:如何通過 qemu 命令行參數現在 libvirt 模式是 404
這是我發現將參數傳遞給 qemu 的唯一方法:
<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
不幸的是,url http://libvirt.org/schemas/domain/qemu/1.0現在只是返回一個 404 頁面,並且 libvirt 會自動修剪這部分。我似乎找不到任何關於替代方案的資訊,因為甚至 libvirt 網站都建議添加這個損壞的模式!
是否有另一種方法可以在沒有 qemu 參數的情況下啟用 evdev pass-though?
編輯:
我使用下面標記的解決方案解決了這個問題,但需要注意的重要一點是,
xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'
除非<qemu:[whatever]>
域中某處存在有效標籤,否則 virsh 將始終修剪掉。
即使命名空間的 URL 是 404,在域配置中使用它也確實有效,並且記錄在
libvirt
首頁上:
qemu
此外,以下 XML 添加允許對啟動域時給出的命令行進行微調(自 0.8.3 起)。為了使用 XML 添加,有必要發出一個 XML 命名空間請求(特殊xmlns:name
屬性),它會拉入http://libvirt.org/schemas/domain/qemu/1.0;通常,命名空間的名稱為qemu
. 有了命名空間,就可以<qemu:commandline>
在 domain 下添加一個元素,並根據需要重複以下子元素:
qemu:arg
在啟動域時向程序添加一個額外的命令行參數
qemu
,由屬性值的值給出。
qemu:env
在啟動域時向程序添加一個額外的環境變數
qemu
,給出屬性名稱和可選值中記錄的名稱-值對。這也在以下各個地方進行了測試
libvirt
:
- https://github.com/libvirt/libvirt/blob/0279a51b83e3711c3766cb9503becab3813dee95/tests/qemuxml2argvdata/qemu-ns-no-env.xml
- https://github.com/libvirt/libvirt/blob/0279a51b83e3711c3766cb9503becab3813dee95/tests/qemuxml2argvdata/qemu-ns-commandline.xml
- https://github.com/libvirt/libvirt/blob/0279a51b83e3711c3766cb9503becab3813dee95/tests/qemuxml2argvdata/qemu-ns.xml
- 和別的
我通過將定義的開頭更改為
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <qemu:commandline> <qemu:arg value='-unknown'/> <qemu:arg value='parameter'/> </qemu:commandline>
在
virsh -c qemu:///system edit <domain>
. 在隨後的編輯中,這些更改仍然存在(不過,新元素已移動到文件的末尾)。啟動域也失敗並
qemu
抱怨未知參數:↪ virsh -c qemu:///system start <domain> error: Failed to start domain <domain> error: Interner Fehler: qemu unexpectedly closed the monitor: qemu-system-x86_64: -unknown: invalid option
請注意,XML 命名空間不必是解析為某種東西的 URL…… 可用的。