在使用openstack创建虚拟机后,一开始并未发现声音设备,于是在代码中强制加了一个声卡设备

    diff -aruN nova-2015.1.0.org/nova/virt/libvirt/config.py nova-2015.1.0/nova/virt/libvirt/config.py
--- nova-2015.1.0.org/nova/virt/libvirt/config.py   2015-10-29 15:01:39.819057624 +0800
+++ nova-2015.1.0/nova/virt/libvirt/config.py   2015-10-29 15:03:36.093143274 +0800
@@ -1329,7 +1329,14 @@

 return dev

-
+class LibvirtConfigGuestSound(LibvirtConfigGuestDevice): #wz
+    def __init__(self, **kwargs):
+        super(LibvirtConfigGuestSound, self).__init__(root_name="sound",**kwargs)
+        self.type = "ich6" 
+    def format_dom(self):
+        dev = super(LibvirtConfigGuestSound, self).format_dom()
+        dev.set("model", self.type)
+        return dev
 class LibvirtConfigMemoryBalloon(LibvirtConfigGuestDevice):
 def __init__(self, **kwargs):
     super(LibvirtConfigMemoryBalloon, self).__init__(
@@ -1426,13 +1433,14 @@
                     self.slot = sub.get('slot')
                     self.function = sub.get('function')

 class LibvirtConfigGuestCharBase(LibvirtConfigGuestDevice):

diff -aruN nova-2015.1.0.org/nova/virt/libvirt/driver.py nova-2015.1.0/nova/virt/libvirt/driver.py
--- nova-2015.1.0.org/nova/virt/libvirt/driver.py   2015-10-29 15:01:39.819057624 +0800
+++ nova-2015.1.0/nova/virt/libvirt/driver.py   2015-10-29 15:03:25.752317678 +0800
@@ -3889,6 +3889,9 @@
     if max_vram and video_ram:
         video.vram = video_ram * units.Mi / units.Ki
     guest.add_device(video)
+        sound = vconfig.LibvirtConfigGuestSound()
+        guest.add_device(sound)    
+

 def _add_qga_device(self, guest, instance):
     qga = vconfig.LibvirtConfigGuestChannel()

经过测试发现,
win7中使用ich6驱动也可以自动匹配,
但是在XP中无法安装驱动
使用ac97则XP和WIN7中都可以使用,所以可改为ac97

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐