Comment 6 for bug 273189

Revision history for this message
Scott James Remnant (Canonical) (canonical-scott) wrote : Re: non-ascii layout/encoding problems at "login" line

Upstart isn't setting the system console correctly?

It runs this on /dev/console when it first starts to attempt to set it up in the usual way.

static void
reset_console (void)
{
        struct termios tty;

        tcgetattr (0, &tty);

        tty.c_cflag &= (CBAUD | CBAUDEX | CSIZE | CSTOPB | PARENB | PARODD);
        tty.c_cflag |= (HUPCL | CLOCAL | CREAD);

        /* Set up usual keys */
        tty.c_cc[VINTR] = 3; /* ^C */
        tty.c_cc[VQUIT] = 28; /* ^\ */
        tty.c_cc[VERASE] = 127;
        tty.c_cc[VKILL] = 24; /* ^X */
        tty.c_cc[VEOF] = 4; /* ^D */
        tty.c_cc[VTIME] = 0;
        tty.c_cc[VMIN] = 1;
        tty.c_cc[VSTART] = 17; /* ^Q */
        tty.c_cc[VSTOP] = 19; /* ^S */
        tty.c_cc[VSUSP] = 26; /* ^Z */

        /* Pre and post processing */
        tty.c_iflag = (IGNPAR | ICRNL | IXON | IXANY);
        tty.c_oflag = (OPOST | ONLCR);
        tty.c_lflag = (ISIG | ICANON | ECHO | ECHOCTL | ECHOPRT | ECHOKE);

        /* Set the terminal line and flush it */
        tcsetattr (0, TCSANOW, &tty);
        tcflush (0, TCIOFLUSH);
}

Could something else along the way be resetting it? sysvinit certainly attempts to reset the console at just about every available opportunity, Upstart doesn't do that because it crashes X! (I've no idea why sysvinit doesn't)