Determining supported Framebuffer video modes

If you use text mode, as I do, then you will need more than 80 characters by 25 lines to work efficiently. I have found it is always possible to have at least 1024×768 resolution and usually even higher.

Probing the hardware

The best way is to probe the hardware using the SuSE hwinfo tool, available for Gentoo through emerge:

emerge -va hwinfo

Then have it probe the hardware:

hwinfo --framebuffer

The output will look something like this:

$ sudo hwinfo --framebuffer
02: None 00.0: 11001 VESA Framebuffer
  [Created at bios.459]
  Unique ID: rdCR.VWINrtDIJN2
  Hardware Class: framebuffer
  Model: "NVIDIA G86 Board - NV_NB8M"
  Vendor: "NVIDIA Corporation"
  Device: "G86 Board - NV_NB8M"
  SubVendor: "NVIDIA"
  SubDevice:
  Revision: "Chip Rev"
  Memory Size: 14 MB
  Memory Range: 0xd5000000-0xd5dfffff (rw)
  Mode 0x0300: 640x400 (+640), 8 bits
  Mode 0x0301: 640x480 (+640), 8 bits
[snip]
  Mode 0x0364: 1440x900 (+1440), 8 bits
  Mode 0x0365: 1440x900 (+5760), 24 bits

Pick the size you want and put “vga=” followed by the mode on your kernel line in /boot/grub/menu.lst, e.g.,

kernel  /vmlinuz root=/dev/sda7 vga=0x0365 resume=/dev/sda6

Using VGA standards

You can just pick a standard VGA code (or even a common non-standard one and hope it works). Refer to the VESA_BIOS_Extensions Wikipedia page or the table below.

Colours 640×480800×6001024×7681280×8001280×10241600×12001440×900
256 (8-bit) 0x0301 0x0303 0x0305 0x0360 0x0307 0x031C 0x0364
32,768 (15-bit) 0x0310 0x0313 0x0316 0x0319 0x031D
65,536 (16-bit) 0x0311 0x0314 0x0317 0x031A 0x031E
16.8M (24-bit) 0x0312 0x0315 0x0318 0x031B 0x031F 0x0365
4096M (32-bit) 0x361