<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>The Linux keyboard and console HOWTO: Changing the video mode</TITLE>
 <LINK HREF="kbd.FAQ-17.html" REL=next>
 <LINK HREF="kbd.FAQ-15.html" REL=previous>
 <LINK HREF="kbd.FAQ.html#toc16" REL=contents>
</HEAD>
<BODY>
<A HREF="kbd.FAQ-17.html">Next</A>
<A HREF="kbd.FAQ-15.html">Previous</A>
<A HREF="kbd.FAQ.html#toc16">Contents</A>
<HR>
<H2><A NAME="s16">16. Changing the video mode</A></H2>

<P>
<!--
console!changing video modes
-->

<!--
video modes, changing
-->

<!--
resolution, changing
-->
<P>As far as I know there are 6 ways to change resolution:
<P>1. At compile time: change the line
<BLOCKQUOTE><CODE>
<PRE>
        SVGA_MODE=      -DSVGA_MODE=NORMAL_VGA
</PRE>
</CODE></BLOCKQUOTE>

in <CODE>/usr/src/linux/Makefile</CODE>.
<P>1A. After compilation: use <CODE>rdev -v</CODE> - a terrible hack, but it exists.
<P>2. At boot time: put <CODE>vga=ask</CODE> in the lilo config file, and lilo will
ask you what video mode you want. Once you know, put <CODE>vga=</CODE>mypreference.
<P>3. At run time:
A. Use the <CODE>resizecons</CODE> command. (This is a very primitive wrapper around
the VT_RESIZE ioctl.)
B. Use the <CODE>SVGATextMode</CODE> command. (This is a less primitive wrapper around
the VT_RESIZE ioctl.)
<P>4. Not "on the console":
Under <CODE>dosemu</CODE>, or with svgalib etc. you can change the hardware video mode
without the console driver being aware of it. Sometimes this is useful in
getting <CODE>resizecons</CODE> or <CODE>SVGATextMode</CODE> set up: use <CODE>dosemu</CODE> and some
DOS program to get into the desired videomode, dump (say from another VT) the
contents of all video hardware registers, and use that in the initialization
that <CODE>resizecons</CODE> and <CODE>SVGATextMode</CODE> require.
In some cases where the video mode has gotten into some unusable state,
starting <CODE>dosemu</CODE>, relying on the BIOS to set up the video mode, and then
killing <CODE>dosemu</CODE> (with <CODE>kill -9</CODE>), is the easiest way to get into shape
again.
<P>
<H2><A NAME="ss16.1">16.1 Instructions for the use of resizecons</A>
</H2>

<P>
<!--
resizecons program
-->
<P>Get svgalib and compile the program <CODE>restoretextmode</CODE>.
Boot up your machine in all possible video modes
(using <CODE>vga=ask</CODE> in the lilo config file), and write
the video hardware register contents to files CxR
(C=cols, R=rows), e.g., 80x25, 132x44, etc.
Put these files in <CODE>/usr/lib/kbd/videomodes</CODE>.
Now <CODE>resizecons 132x44</CODE> will change videomode for you
(and send SIGWINCH to all processes that need to know
about this, and load another font if necessary).
<P>At present, <CODE>resizecons</CODE> only succeeds when there is memory enough
for both the old and the new consoles at the same time.
<P>
<HR>
<A HREF="kbd.FAQ-17.html">Next</A>
<A HREF="kbd.FAQ-15.html">Previous</A>
<A HREF="kbd.FAQ.html#toc16">Contents</A>
</BODY>
</HTML>
