There are two ways to get a screen to scroll.
The first, called `hard scrolling', is to leave the text in
video memory as it is, but change the viewing origin. This is
very fast.
The second, called `soft scrolling', involves moving all screen text
up or down. This is much slower.
The kernel console driver will write text starting at the top of
the video memory, continuing to the bottom, then copy the bottom
part to the top again, and continue, all the time using hard scrolling
to show the right part on the screen.
You can scroll back until the top op the video memory by using
Shift-PageUp (the grey PageUp) and scroll down again using
Shift-PageDown (the grey PageDown), assuming a default keymap.
The amount of scrollback is thus limited to the amount of video memory
you happen to have and you cannot increase this amount.
If you need more scrollback, use some program that
buffers the text, like less
or screen
- by using
a buffer on disk you can go back to what you did last week.
(One can set the amount of scrollback for xterm
by
adding a line like XTerm*saveLines: 2500
in .Xresources
.)
Upon changing virtual consoles, the screen content of the old VT is copied to kernel memory, and the screen content of the new VT is copied from kernel memory to video memory. Only the visible screen is copied, not all of video memory, so switching consoles means losing the scrollback information.
Sometimes, hard scrolling is undesirable, for example when the hardware
does not have the possibility to change viewing origin. The first
example was a Braille machine that would render the top of video
memory in Braille. There is a kernel boot-time option no-scroll
to tell the console driver not to use hard scrolling.
See bootparam(7).