VESA framebuffer
Posted: 2020-02-02 Filed under: system | Tags: boot, elilo.conf, nvidia, vesa Leave a commentI never really cared about VESA framebuffer. Since Slackware 13.0, the system would automatically switch to the native screen resolution when booting. That is, if I used the open source video drivers. When using the proprietary drivers of NVIDIA for example, the system will boot into the default low resolution console. I do not particularly like that, so I decided to investigate the options.
My Dell Latitude E6400 has a NVIDIA G98M Quadro NVS 160M which works fine out of the box, but when browsing some websites with a lot of images, the browser would occasionally hang up. The performance seems to be better with the proprietary drivers. I installed nvidia-legacy340-kernel and nvidia-legacy340-driver, then installed xf86-video-nouveau-blacklist package from /extra. Rebooted and everything seems to be fine, except that the console no longer changes to the native 1440×900 resolution.
If you check /etc/lilo.conf
, it has the following options:
# Normal VGA console vga = normal # Ask for video mode at boot (time out to normal in 30s) # vga = ask # VESA framebuffer console @ 1024x768x64k # vga=791 # VESA framebuffer console @ 1024x768x32k # vga=790 # VESA framebuffer console @ 1024x768x256 # vga=773 # VESA framebuffer console @ 800x600x64k # vga=788 # VESA framebuffer console @ 800x600x32k # vga=787 # VESA framebuffer console @ 800x600x256 # vga=771 # VESA framebuffer console @ 640x480x64k # vga=785 # VESA framebuffer console @ 640x480x32k # vga=784 # VESA framebuffer console @ 640x480x256 # vga=769
Detailed information can be found in /etc/lilo.conf_example
and reads:
# Specifying the VGA text mode that should be selected when booting. # The following values are recognized (case is ignored): # vga=normal 80x25 text mode (default) # vga=extended 80x50 text mode (abbreviated to 'ext') # vga=ask stop and ask for user input: choice of text mode # vga= use the corresponding text mode number. A list of # available modes can be obtained by booting with # 'vga=ask' and then pressing [Enter]. # # Another way is the use of frame buffer mode. Then the kernel # will switch from the normal vga text mode (80x25) to the frame # buffer (if frame buffer support is in the kernel): # 16bit: 32bit: # 640x480 : 0x311 0x312 # 800x600 : 0x314 0x315 # 1024x768 : 0x317 0x318 # 1280x960 : 0x365 0x366 # 1280x1024: 0x31A 0x31B # 1400x1050: 0x345 0x346 # 1600x1200: 0x333 0x334 # 1680x1050: 0x3D2 0x3D4 # 1920x1440: 0x337 0x338 #vga = ask vga = normal #vga = 0x317
If you choose vga = ask
, the system will offer a list of resolutions to choose from upon boot. Here, among the different options are:
Type: Mode: Resolution VESA 364 1440x900x8 VESA 365 1440x900x32
What do the numbers mean? These are hexidecimal values that have to be passed as vga=0xHHH
or converted to decimal values and passed as vga=XXX
in the lilo.conf
file. Let’s pick 1440x900x32
. It has a hexidecimal value of 0x365
, which corresponds to decimal number 869
and therefore can be passed to lilo
either as
vga = 0x365
or as
vga = 869
The hexadecimal and decimal values are formed by the VESA number plus 0x200
or 512
, respectively. Therefore, for 1440x900x32
the VESA hexadecimal value is 165
and the decimal is 357
. As a reference, there are these discussions in the Gentoo forum.