Virtualbox

libvirt 支持哪個版本的 VBOX API?

  • July 3, 2016

我的 Gentoo 系統上安裝了libvirt1.3.5 和virtualbox5.0.20。當我啟動libvirtd服務時,我得到了

Libvirt doesn't support VirtualBox API version 5000020

我在哪裡可以找到需要的 vbox API libvirt

您可以查看原始碼。libvirt 1.3.5 版不支持 VirtualBox 5。

src/vbox/vbox_storage.c

virStorageDriverPtr vboxGetStorageDriver(uint32_t uVersion)
{
   /* Install gVBoxAPI according to the vbox API version.
    * Return -1 for unsupported version.
    */
   if (uVersion >= 2001052 && uVersion < 2002051) {
       vbox22InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 2002051 && uVersion < 3000051) {
       vbox30InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 3000051 && uVersion < 3001051) {
       vbox31InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 3001051 && uVersion < 3002051) {
       vbox32InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 3002051 && uVersion < 4000051) {
       vbox40InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4000051 && uVersion < 4001051) {
       vbox41InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4001051 && uVersion < 4002020) {
       vbox42InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4002020 && uVersion < 4002051) {
       vbox42_20InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4002051 && uVersion < 4003004) {
       vbox43InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4003004 && uVersion < 4003051) {
       vbox43_4InstallUniformedAPI(&gVBoxAPI);
   } else {
       return NULL;
   }
   return &vboxStorageDriver;
}

但版本 2.0.0 可以。在src/vbox/vbox_storage.c

virStorageDriverPtr vboxGetStorageDriver(uint32_t uVersion)
{
   /* Install gVBoxAPI according to the vbox API version.
    * Return -1 for unsupported version.
    */
   if (uVersion >= 2001052 && uVersion < 2002051) {
       vbox22InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 2002051 && uVersion < 3000051) {
       vbox30InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 3000051 && uVersion < 3001051) {
       vbox31InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 3001051 && uVersion < 3002051) {
       vbox32InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 3002051 && uVersion < 4000051) {
       vbox40InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4000051 && uVersion < 4001051) {
       vbox41InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4001051 && uVersion < 4002020) {
       vbox42InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4002020 && uVersion < 4002051) {
       vbox42_20InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4002051 && uVersion < 4003004) {
       vbox43InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4003004 && uVersion < 4003051) {
       vbox43_4InstallUniformedAPI(&gVBoxAPI);
   } else if (uVersion >= 4003051 && uVersion < 5000051) {
       vbox50InstallUniformedAPI(&gVBoxAPI);
   } else {
       return NULL;
   }
   return &vboxStorageDriver;
}

感謝14 天前發布的這個送出。

引用自:https://unix.stackexchange.com/questions/292373