Linux console
The Linux console is a system console internal to the Linux kernel. The Linux console provides a way for the kernel and other processes to send text output to the user, and to receive text input from the user. The user typically enters text with a computer keyboard and reads the output text on a computer monitor. The Linux kernel supports virtual consoles – consoles that are logically separate, but which access the same physical keyboard and display. The Linux console are implemented by the VT subsystem of the Linux kernel, and do not rely on any user space software. This is in contrast to a terminal emulator, which is a user space process that emulates a terminal, and is typically used in a graphical display environment.
The Linux console was one of the first features of the kernel and was originally written by Linus Torvalds in 1991. There are two main implementations: framebuffer and text mode. The framebuffer implementation is the default in modern Linux distributions, and together with kernel mode setting, provides kernel-level support for display hardware and features such as showing graphics while the system is booting. The legacy text mode implementation was used in PC-compatible systems with CGA, EGA, MDA and VGA graphics cards. Non-x86 architectures used framebuffer mode because their graphics cards did not implement text mode. The Linux console uses fixed-size bitmap, monospace fonts, usually defaulting to 8x16 pixels per character.
The Linux console is an optional kernel feature, and most embedded Linux systems do not enable it. These systems typically provide an alternative user interface, or boot immediately into a graphical user interface and use this as the primary means of interacting with the user. Other implementations of the Linux console include the Braille console to support refreshable Braille displays and the serial port console.
Purpose
The Linux console provides a way for the kernel and other processes to output text-based messages to the user, and to receive text-based input from the user. In Linux, several devices can be used as system console: a virtual terminal, serial port, USB serial port, VGA in text-mode, framebuffer. Some modern Linux-based systems have deprecated kernel based text-mode input and output, and instead show a graphical logo or progress bar while the system is booting, followed by the immediate start of a graphical user interface.During kernel boot, the console is commonly used to display the boot log of the kernel. The boot log includes information about detected hardware, and updates on the status of the boot procedure. At this point in time, the kernel is the only software running, and hence logging via user-space is not possible, so the console provides a convenient place to output this information. Once the kernel has finished booting, it runs the init process, which handles booting of the rest of the system including starting any background daemons.
After the init boot process is complete, the console will be used to multiplex multiple virtual terminals. On each virtual terminal, a getty process is run, which in turn runs /bin/login to authenticate a user. After authentication, a command shell will be run. Virtual terminals, like the console, are supported at the Linux kernel level.
The Linux console implements a terminal type of "linux" and the escape sequences it uses are in the console_codes man page.
Virtual consoles
Virtual consoles allow the storage of multiple text buffers, enabling different console programs to run simultaneously but interact with the user in different contexts. From the user's point of view, this creates the illusion of several independent consoles.Each virtual console can have its own character set and keyboard layout.
Linux 2.6 introduced the ability to load a different font for each virtual console.
Text mode console
The text mode implementation is used on PC-based systems with a legacy CGA/EGA/MDA/VGA video card that implements text-based video modes. In text mode, the kernel sends a 2D array of characters to the video card, and the video card converts the characters to pixels for display.Font, character set and keyboard layout
The text buffer is a part of VGA memory which describes the content of a text screen in terms of code points and character attributes. Code points in the text buffer and font are generally not the same as encoding used in text terminal semantics to put characters on the screen. The set of glyphs on the screen is determined by the current font. The text screen is handled by console.c and consolemap.c drivers. There is a utility for altering fonts and terminal encodings called consolechars.The Linux kernel has almost complete support for keyboard input, but it remains a bit inconsistent because it interacts badly with different character sets. Layouts are loaded by the loadkeys utility.
These two utilities and corresponding data files are packed in Linux Console Tools http://lct.sourceforge.net/ shipped with many Linux distributions.
Efforts on the internationalization of Linux at the kernel level started as early as in 1994 by Markus Kuhn and Andries Brouwer.
Text modes
The Linux console is capable of supporting any VGA-style text mode, but the kernel itself has very limited means to set these modes up. SVGATextMode helps to enable more complex text modes than the standard EGA and VGA modes. It is fully compatible with Console Tools, but has some conflicts with dosemu, SVGAlib and display servers.Currently, there is no support for different modes on different virtual consoles.
Comparison to Windows and DOS
does not have a fully functional support of the console. The comparable feature there, but for application software only, is the Win32 console.- Unicode supported since Windows NT based systems, which allow to switch code pages and use Unicode, but only in window mode. Also, NT systems use own text buffer format incompatible with VGA, which produces an overhead in hardware text modes. No Unicode support in non-NT versions of Windows
- As non-ASCII keyboard layout should be reloaded because of flawed implementation.
- in recent kernels make this more practical for some video hardware.
Linux framebuffer console
A Linux framebuffer console differs from a VGA one only in ways of drawing characters. The processing of keyboard events and virtual consoles’ support are exactly the same.
Linux serial port console
Linux serial console is a console implementation via serial port, enabled by option CONFIG_SERIAL_CONSOLE in the kernel configuration. It may be used in some embedded systems, and on servers, where a direct interaction with operator is not expected. The serial console allows the same mode of access for the system, but usually at a slower speed due to the small bandwidth of RS-232. A serial console is often used during development of software for embedded systems, and is sometimes left accessible via a debug port.Control characters
The console responds to a number of control characters:Control character | ASCII name | Description |
^G | BEL | Bell sound |
^H | BS | Backspace |
^I | HT | Horizontal tab |
^J | LF | Line feed |
^K | VT | Vertical tab |
^L | FF | Form feed |
^M | CR | Carriage return |
^N | SO | Shift out |
^O | SI | Shift in |
^X | CAN | Cancel escape sequence |
^Z | SUB | Cancel escape sequence |
^ | n/a | Start command sequence |
Control sequence | Description |
^[M | Reverse line feed |
^[D | Line feed |
^[E | Carriage return and line feed |
^[H | Set tab stop |
^[7 | Store cursor |
^[8 | Restore cursor |
^[> | Switch keypad to numeric mode |
^[= | Switch keypad to application mode |
^[c | Reset terminal settings |
^[Z | Print terminal ID |
For ^[ press the Escape key.
The console also supports extended escape sequences, [ANSI escape code">ANSI CSI Mode sequences, and DEC Private Mode sequences. These extended sequences can control colors, visual effects like blinking, underline, intensity and inverse video, bell tone frequency and duration, VESA screen blanking interval. Aside from the textual blanking, there is no known way to place the [VGA adapter">
Control sequence | Description |
^[M | Reverse line feed |
^[D | Line feed |
^[E | Carriage return and line feed |
^[H | Set tab stop |
^[7 | Store cursor |
^[8 | Restore cursor |
^[> | Switch keypad to numeric mode |
^[= | Switch keypad to application mode |
^[c | Reset terminal settings |
^[Z | Print terminal ID |
For ^[ press the Escape key.
The console also supports extended escape sequences, [ANSI escape code">ANSI CSI Mode sequences, and DEC Private Mode sequences. These extended sequences can control colors, visual effects like blinking, underline, intensity and inverse video, bell tone frequency and duration, VESA screen blanking interval. Aside from the textual blanking, there is no known way to place the [VGA adapter into standby.