A framebuffer device and is it required to obtain a higher resolution

display-settingsframebuffergentookvmxorg

I am running a gentoo guest OS on qemu-kvm. I can only get resolution of 800×600 in it. I want to be able to get a higher screen resolution.

xrandr gives the following output :

xrandr: Failed too get size of gamma for output default

Screen 0: mimimum 640×480, current 800×600, maximum 800×600

Xorg -configure fails with segmentation fault :

open /dev/fb0: No such file or directory

Segmentation fault at address (nil)

I am using default vga settings for qemu and lspci shows :

VGA compatible controller: Cirrus Logic GD 5446

So my question is:

  1. what is this frame buffer ? Is it required to do Xorg -configure?

  2. Is there any other way to increase screen resolution ?

Best Answer

Frame buffers are nothing more than memory regions that are used for graphics.

Modern graphics cards have kernel-native drivers which are used for KMS (kernel mode setting) and can use very high-resolution and high-speed framebuffers even on dual heads.

However, the card emulated by QEMU there does not have such a driver. You’d have to be emulating one of the major supported chipsets in order to get such a thing; otherwise, all you get is the old-style VESA framebuffer, which is very slow though still higher-resolution than 80x25 VGA text mode.

See Wikipedia’s “Framebuffer” article for more information than you’d really ever want or need on them. Also, see this article from Phoronix on KMS with QEMU, but I don’t know what the current status of it is and it appears to depend on QEMU-KVM and not stock QEMU itself.

ETA: Here is another article from Phoronix, from May 2, 2012, on KMS and QEMU. It looks like it is slated to be merged into Linux 3.5, but if you want to use it for now you will have to download, patch and build your own kernel.

Related Question