[NMLUG] Console Resolution

C. Ulrich nmlug@swcp.com
Wed, 14 Nov 2001 16:45:09 -0700

On Wednesday 14 November 2001 14:36, you wrote:
> Is there a way to get my Linux console to run at 1024x768?  I've tried
> SVGATextMode, but that didn't seem to help, unless I did something
> wrong.

It's pretty easy, but how to configure the kernel for it is not too obvious. 
AFAIK, compiling these options as modules won't work... the code must be in 
the kernel proper to work.

Under the Console Drivers section of the kernel config, you need to say Y to 
"VGA text console". If it's a newer kernel, there will be a subsection 
labeled "Frame-buffer support" that lets you choose your specific device and 
some low level options. Older kernels don't have the subtree, but all of the 
needed options will still be there. This is what I have in mine:

Console drivers --->
	[*] VGA text console
	[*] Video mode selection support
	 Frame-buffer support --->
		[*] Support for frame buffer devices (EXPERIMENTAL)
		[*]   VESA VGA graphics console
		[*]   Advanced low level driver options
		<*>     8 bpp packed pixels support
		<*>     VGA characters/attributes support
		[*]   Select compiled-in fonts
		[*]     VGA 8x16 font

I'm not completely clear on what exactly some of these options do or how they 
work. I also only choose 8 bpp color support because I can't imagine needing 
any more than that for a terminal, which is the only purpose my console has. 
If you need more, enable whichever ones you need.

Next, decide which resolution you want. Your choices are 640x480, 800x600, 
1024x768, and 1280x1024. You clearly indicated that you're looking to use 
1024x768, so we'll go with that. The kernel mode number for that resolution 
at 8-bit color is 0x305. (See below on where to find other mode numbers.) 
Take that number, convert it to decimal (773) and stick it somewhere in 
/etc/lilo.conf before the image sections. Make sure your new kernel is in the 
right place, run /sbin/lilo, reboot, and you are all set.

If you use a different bootloader, simply pass "vga=<modenum>" to the kernel. 
It's worth noting that you can probably pass the hex value (0xXXX)to newer 
versions of lilo and other bootloaders, but decimal is supposedly "safer." 
You can find the mode numbers for other resolutions and depths in 
/Documentation/fb/vesafb.txt in the kernel source tree. Reading of this file 
is highly recommended since it does some explaining of the console 
framebuffer stuff and lists some extra options you may want to pass to the 
kernel for speed or troubleshooting purposes.


If do a lot of your work on the console (in contrast to xterm), you might 
want to avoid using the framebuffer drivers for the console, as it is much 
slower compared to good old plaintext 80x25. In fact, I'm positive there's a 
way to choose your console fontsize without enabling any of this. But I don't 
spend much time on my console (I'm rather addicted to xterms), so the method 
above works fine for me.

Also, the vesa framebuffer is indispensible on my laptop. The characters look 
all scraggly and nasty by default, but with framebuffer I get 
perfectly-formed characters and a whole lot more screenspace as a bonus. I 
installed FreeBSD on my laptop awhile back and switched back over to Linux 
partly because BSD didn't seem to support a framebuffer console (among other 
things). Being able to choose your console size is a huge advantage, in my 
opinion. Does anyone know if there's been any advancement in regards to this, 
in newer FreeBSD releases?

--C. Ulrich
To UNSUBSCRIBE send a message to nmlug-request@swcp.com
with only the word unsubscribe in the body.  More
information can be found at www.nmlug.org/info.html