Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.
Launchpad entry: setup-console-under-usplash
Packages affected: console-setup usplash gdm kdm
Modify packages so that the system console can be setup while usplash is running.
We currently need to flip back to a text VT before starting the X display manager, in order to ensure the console keymap, font and unicodeness are set correctly for each of the VTs. This gives an ugly flicker in the boot, and prevents us from delaying the VT switch to the display manager until later.
The console-setup script can now iterate an explicit list of VTs, we can exclude the X and usplash VTs from this list, thereby avoiding corrupting them. It appears that the new setupcon and consolechars/setfont tools are able to initialise a VT without it being active.
The changes required are:
Remove the check for running usplash from console-setup now that we iterate a VT list.
Remove the call to the usplash script from gdm, kdm, etc. as it will now automatically terminate when X switches the VT away.
Remove the call to console-setup from the usplash script, now that it will have been performed already.
2007-01-15 ColinWatson: Unfortunately, it turns out that the kernel does not safely support changing the font on another virtual console; in particular vgacon only supports one font, and if you try to change it while X is running then the kernel corrupts video memory. The same seems to happen for at least some other console drivers. To work around this problem, I've made console-setup set the keymap and font in the initramfs, which is useful in any case for those with non-English keyboards trying to recover broken systems. We retain the console-setup init script with the usplash check for those not running initramfs. Splash corruption is now clearly not possible.
Is it possible to avoid the explicit VT list by checking the KDGETMODE ioctl for KD_TEXT in setupcon and consolechars/setfont, and then just iterating all active VTs?