Where/when does a Linux system change the console display mode?

I'm installing Debian Wheezy (7.0rc1) on a box of mine. For reasons I won't go into here, I don't want the framebuffer to be used for the console display during boot (nor afterwards). To avoid this, I added:

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=keep

to /etc/default/grub. And indeed, I get text mode in grub, and for the first couple of seconds when booting. But then, the console switches to that infernal framebuffer! :

[    4.407402] Console: switching to colour frame buffer device 128x48
[    4.408544] fb0: nouveaufb frame buffer device

(that's an excerpt from /var/log/dmesg.)

I couldn't find a trace of it anywhere in the /etc/init.d scripts. I thought maybe it has something to do with kernel modules loading - I didn't find anything interesting in /etc/modules or /etc/modprobe.d either.

So, when/where does this happen? And how can I avoid this switch?


(based on @MichaelHampton's answer)

The Linux kernel sets the display mode, apparently, even before the init process runs. Now, the kernel takes parameters from the boot loader - so the thing to do is to set the parameter telling it not to switch display mode. However, this is not the whole story: After the display mode has been set, there's also a setting of fonts which in itself kind of botches up your display; on Debian Wheezy, this is done by /etc/init.d/console-setup, so you also have to consider what it does exactly.

To be more concerte, what you should do is the following:

  1. In /etc/default/grub, add the line

     GRUB_CMDLINE_LINUX="nomodeset"
    

    or, if you already have a GRUB_CMDLINE_LINUX setting, append nomodeset to it.

  2. In /etc/default/console-setup, replace

    FONTFACE="Fixed"
    

    with

    FONTFACE="VGA"
    

    or, alternatively, do not run /etc/init.d/console-setup in the rcS unlevel (e.g. using update-rc.d command).

    As far as I can tell, the "VGA" font is the same as the one you're already supposed to have, so the change of font shouldn't have any effect if you choose this. However, I'm not entirely sure that's universally true, so maybe you're better off just avoiding the font change altogether.


Append the following to the kernel command line:

vga=normal nomodeset