The
resizecons
command tries to change the videomode of the console. There are several
aspects to this: (a) the kernel must know about it, (b) the hardware must
know about it, (c) user programs must know about it, (d) the console font may
have to be adapted.
(a) The kernel is told about the change using the ioctl VT_RESIZE. This
causes the kernel to reallocate console screen memory for all virtual
consoles, and might fail if there is not enough memory. (In that case, try to
disallocate some virtual consoles first.) If this ioctl succeeds, but a later
step fails (e.g., because you do not have root permissions), you may be left
with a very messy screen.
The most difficult part of this is (b), since it requires detailed knowledge
of the video card hardware, and the setting of numerous registers. Only
changing the number of rows is slightly easier, and
resizecons
will try to do that itself, when given the
-lines
option. (Probably, root permission will be required.)
The command
resizecons COLSxROWS
will execute
restoretextmode -r COLSxROWS
(and hence requires that you have svgalib installed). Here COLSxROWS is a
file that was created earlier by
restoretextmode -w COLSxROWS.
Again, either root permissions are required, or
restoretextmode (8)
has to be suid root.
In order to deal with (c),
resizecons
does a
` stty rows ROWS cols COLS '
for each active console (in the range tty0..tty15), and sends a SIGWINCH
signal to
selection
if it finds the file
/tmp/selection.pid .
Finally, (d) is dealt with by executing a
consolechars (8)
command. Most likely, the wrong font is loaded, and you may want to call
consolechars (8)
yourself afterwards.