windows server 2012 resolution woes with vga
I have two windows vms, windows server 2012 and windows server 2008. Both use kvm and libvirt. I recently decided I wanted to increase my screen resolution options, which required changing from the default "cirrus" video card to the "vga" option. This worked like a charm for my windows server 2008 VM, giving me several resolution options from 800x600 up to 2560x1600. However, this doesn't work for windows server 2012.
Here's the code from my xml template pertaining to the video card:
<video>
<model type='vga' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
I suspect that this is a driver issue. I tried to figure out what drivers would be compatible with KVM's emulated VGA card, but all I found about the card was that it was a " dummy VGA card with Bochs VESA extensions" and googling that plus "drivers" turned up nothing useful.
In my windows 2008 vm, the driver is a "Standard VGA Graphics Adapter" which seems like window's generic driver and would explain why I didn't need to download anything new to get the vga card working for windows 2008. However, in windows 2012 the driver just shows up as the "Microsoft Basic Display Adapter" and attempted driver updates result in windows telling me that everything's up to date. Under this driver, I only get a resolution of 1024x768, which is even worse than it was with the cirrus card, which at least went to 1280x1024.
Based on this question, I understand the poor behavior with the VGA card to be a result of the basic display adapter's very basic capabilities: Stuck at low resolution: Monitor as well as display adaptor not recognized in Windows Server 2012
As far as I can tell, I need one of two things. A) a better driver, one that'll give better resolution support to the dummy card. B) a new dummy card with fancier capabilities (can KVM do this?)
One last possibility is that C) http://support.microsoft.com/kb/2855505 suggests this may be because my GPU doesn't support directx9 but I have no idea how to check on that.
Any help would be greatly appreciated.
Solution 1:
Install the SPICE Guest Tools in your Windows guest to obtain (almost) all the various virtio drivers. (If it fails, install them from the virtio-win package instead.)
Then shut down the VM and reconfigure it so that it uses a SPICE channel and QXL video.
The corresponding XML is:
<controller type='virtio-serial' index='0'>
<alias name='virtio-serial0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<alias name='channel0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<video>
<model type='qxl' ram='65536' vram='65536' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
After you restart, go to Device Manager, select the Microsoft Basic Display Adapter and Update Driver. Point it at the latest QXL WDDM driver.
Though installing the driver will reset your resolution to 1024x768, you can then change your resolution and use the full Desktop Experience at any resolution you wish, up to 2560x1600.
You'll even be able to do things you couldn't before with the VGA driver... like watch YouTube.