La consola de Linux es una consola del sistema interna al kernel de Linux (una consola del sistema es el dispositivo que recibe todos los mensajes y advertencias del kernel y que permite inicios de sesión en modo de usuario único). [2] La consola de Linux proporciona una forma para que el kernel y otros procesos envíen resultados de texto al usuario y reciban la entrada de texto del usuario. El usuario generalmente ingresa texto con un teclado de computadora y lee el texto de salida en un monitor de computadora . El kernel de Linux admite consolas virtuales , consolas que están lógicamente separadas, pero que acceden al mismo teclado físico y pantalla. [3]La consola de Linux (y las consolas virtuales de Linux) son implementadas por el subsistema VT del kernel de Linux y no dependen de ningún software de espacio de usuario . [4] Esto contrasta con un emulador de terminal , que es un proceso de espacio de usuario que emula un terminal y se usa típicamente en un entorno de visualización gráfica.
La consola de Linux fue una de las primeras características del kernel y fue escrita originalmente por Linus Torvalds en 1991 [5] (ver historia de Linux ). Hay dos implementaciones principales: framebuffer y modo texto . La implementación de framebuffer es la predeterminada en las distribuciones modernas de Linux y, junto con la configuración del modo kernel , proporciona soporte a nivel de kernel para hardware de pantalla y funciones como mostrar gráficos mientras el sistema se está iniciando. [6] La implementación del modo de texto heredado se utilizó en sistemas compatibles con PC con tarjetas gráficas CGA , EGA , MDA y VGA . Las arquitecturas que no son x86 usaban el modo framebuffer porque sus tarjetas gráficas no implementaban el modo texto. [6] La consola de Linux usa fuentes de mapa de bits de tamaño fijo , monoespaciadas , por lo general con un valor predeterminado de 8x16 píxeles por carácter. [6]
La consola de Linux es una función del kernel opcional y la mayoría de los sistemas Linux integrados no la habilitan. Estos sistemas suelen proporcionar una interfaz de usuario alternativa (por ejemplo, basada en web), o se inician inmediatamente en una interfaz gráfica de usuario y la utilizan como medio principal para interactuar con el usuario. Otras implementaciones de la consola Linux incluyen la consola Braille para admitir pantallas Braille actualizables [7] y la consola del puerto serie . [8]
Propósito
La consola de Linux proporciona una forma para que el kernel y otros procesos emitan mensajes basados en texto para el usuario y reciban entradas basadas en texto del usuario. En Linux, se pueden utilizar varios dispositivos como consola del sistema: un terminal virtual, [9] puerto serie, [10] puerto serie USB, [11] VGA en modo texto, [12] framebuffer. [13] Algunos sistemas modernos basados en Linux han desaprobado la entrada y salida en modo texto basado en kernel, y en su lugar muestran un logotipo gráfico o una barra de progreso mientras el sistema se está iniciando, seguido del inicio inmediato de una interfaz gráfica de usuario (por ejemplo, la X. Org Server en distribuciones de escritorio o SurfaceFlinger en Android).
Durante el inicio del kernel, la consola se usa comúnmente para mostrar el registro de inicio del kernel. El registro de inicio incluye información sobre el hardware detectado y actualizaciones sobre el estado del procedimiento de inicio. En este momento, el kernel es el único software que se está ejecutando y, por lo tanto, el registro a través del espacio de usuario (por ejemplo, syslog ) no es posible, por lo que la consola proporciona un lugar conveniente para generar esta información. Una vez que el kernel ha terminado de arrancar, ejecuta el proceso de inicio (también envía la salida a la consola), que maneja el arranque del resto del sistema, incluido el inicio de cualquier demonio en segundo plano .
Una vez que se completa el proceso de inicio de inicio, la consola se usará para multiplexar múltiples terminales virtuales (accesibles presionando Ctrl-Alt-F1, Ctrl-Alt-F2, etc., Ctrl-Alt-Flecha izquierda, Ctrl-Alt-Flecha derecha, o usando chvt [14] ). En cada terminal virtual , se ejecuta un proceso getty , que a su vez ejecuta / bin / login para autenticar a un usuario. Después de la autenticación, se ejecutará un shell de comandos . Los terminales virtuales, como la consola, son compatibles con el nivel del kernel de Linux. [15]
La consola de Linux implementa un tipo de terminal de "linux" y las secuencias de escape que utiliza están en la página de manual de console_codes . [dieciséis]
Consolas virtuales
Las consolas virtuales permiten el almacenamiento de múltiples búferes de texto, lo que permite que diferentes programas de consola se ejecuten simultáneamente pero interactúen con el usuario en diferentes contextos. Desde el punto de vista del usuario, esto crea la ilusión de varias consolas independientes.
Cada consola virtual puede tener su propio conjunto de caracteres y distribución de teclado. Linux 2.6 introdujo la capacidad de cargar una fuente diferente para cada consola virtual (las versiones del kernel anteriores a 2.6 cambian la fuente solo a pedido).
Consola en modo texto
La implementación del modo de texto se utiliza en sistemas basados en PC con una tarjeta de video CGA / EGA / MDA / VGA heredada que implementa modos de video basados en texto. En el modo de texto, el núcleo envía una matriz 2D de caracteres a la tarjeta de video y la tarjeta de video convierte los caracteres en píxeles para su visualización.
Diseño de fuente, juego de caracteres y teclado
El búfer de texto es una parte de la memoria VGA que describe el contenido de una pantalla de texto en términos de puntos de código y atributos de caracteres. Los puntos de código en el búfer de texto y la fuente generalmente no son los mismos que la codificación utilizada en la semántica de la terminal de texto para colocar caracteres en la pantalla. El conjunto de glifos en la pantalla está determinado por la fuente actual . La pantalla de texto es manejado por console.c y controladores consolemap.c . Existe una utilidad para alterar fuentes y codificaciones de terminales llamada consolas .
El kernel de Linux ( controlador keyboard.c ) tiene soporte casi completo para la entrada de teclado ( diseños de teclado ), pero sigue siendo un poco inconsistente porque interactúa mal con diferentes conjuntos de caracteres. Los diseños son cargados por el utilidad loadkeys .
Estas dos utilidades y los archivos de datos correspondientes están empaquetados en las herramientas de consola de Linux http://lct.sourceforge.net/ incluidas en muchas distribuciones de Linux .
Los esfuerzos para la internacionalización de Linux a nivel del kernel comenzaron en 1994 por Markus Kuhn y Andries Brouwer .
Modos de texto
La consola de Linux es capaz de admitir cualquier modo de texto de estilo VGA, pero el núcleo en sí tiene medios muy limitados para configurar estos modos. SVGATextMode ayuda a habilitar modos de texto más complejos que los modos estándar EGA y VGA. Es totalmente compatible con Console Tools, pero tiene algunos conflictos con dosemu , SVGAlib y los servidores de pantalla .
Actualmente, no hay soporte para diferentes modos en diferentes consolas virtuales.
Comparación con Windows y DOS
Microsoft Windows (de cualquier versión) no tiene un soporte completamente funcional de la consola. La característica comparable allí, pero solo para el software de aplicación, es la consola Win32 .
Característica | Linux | Ventanas | DOS |
---|---|---|---|
Atributos de texto VGA | sí | sí | sí |
Fuentes personalizadas | Posible | Posible | Posible |
Conjunto de caracteres | 512 glifos máx. (en texto VGA), cualquier página de códigos o UTF-8 | 223 o 256 caracteres (depende del método de acceso), cualquier página de códigos o Unicode [n 1] | |
Cambio de juego de caracteres en tiempo de ejecución | Posible [n 2] | Imposible [n 1] | Depende de PoV |
Emulación de terminal | Sí, compatible con ANSI ( TERM = linux) | Sí, desde Windows 10 "Threshold 2" [17] | Sí, ANSI (con ANSI.SYS ) |
Cambio en tiempo de ejecución entre el modo de texto y la GUI | Técnicamente posible, pero normalmente impráctico [n 3] | No hay forma de volver a la GUI | Depende de la aplicación |
Número de filas y columnas cambiantes en tiempo de ejecución | Posible | Posible | Depende de la aplicación |
Cambiar entre aplicaciones | Posible | Posible | Limitado (algunos TSR pueden estar activados) |
Modos no estándar | Posible | Imposible | Posible |
Soporte de mouse | Sí (con gpm o similar) | Depende de la aplicación | Depende del sistema y de la aplicación |
- a b Compatible con Unicode desdelossistemas basados enWindows NT, que permiten cambiar de página de códigos y utilizar Unicode, pero solo en modo ventana. Además, los sistemas NT utilizan un formato de búfer de texto propio incompatible con VGA, lo que produce una sobrecarga en los modos de texto de hardware. No es compatible con Unicode en versiones de Windows que no son NT
- a Dado que la distribución del teclado no ASCII debe recargarse debido a una implementación defectuosa.
- a La configuración del modo Kernelen kernels recientes hace que esto sea más práctico para algunos hardware de video.
Consola de framebuffer de Linux
El framebuffer de Linux (fbdev) es una capa de abstracción gráfica independiente del hardware, que se implementó originalmente para permitir que el kernel de Linux emule una consola de texto en sistemas como Apple Macintosh que no tienen una pantalla en modo texto. Ahora ofrece una emulación de modo de texto del espacio del kernel en cualquier plataforma. Su ventaja sobre SVGATextMode (actualmente sin mantenimiento) es la confianza y una mejor compatibilidad de hardware. También permite superar todas las restricciones técnicas de los modos de texto VGA .
Una consola de framebuffer de Linux se diferencia de una VGA solo en las formas de dibujar caracteres. El procesamiento de eventos de teclado y el soporte de consolas virtuales son exactamente iguales.
Consola de puerto serie de Linux
La consola serie de Linux es una implementación de consola a través del puerto serie , habilitada por la opción CONFIG_SERIAL_CONSOLE en la configuración del kernel. Puede usarse en algunos sistemas integrados y en servidores , donde no se espera una interacción directa con el operador . La consola serial permite el mismo modo de acceso para el sistema, pero generalmente a una velocidad más lenta debido al pequeño ancho de banda de RS-232 . Una consola en serie se utiliza a menudo durante el desarrollo de software para sistemas integrados y, a veces, se deja accesible a través de un puerto de depuración .
Personajes de control
La consola responde a una serie de caracteres de control : [18]
Carácter de control | Nombre ASCII | Descripción |
---|---|---|
^ G | BEL | Sonido de campana |
^ H | BS | Retroceso |
^ Yo | HT | Pestaña horizontal |
^ J | LF | Linea de alimentación |
^ K | Vermont | Pestaña vertical |
^ L | FF | Alimentación de formulario |
^ M | CR | Retorno de carro |
^ N | ENTONCES | Desplazar fuera |
^ O | SI | Desplazar en |
^ X | LATA | Cancelar secuencia de escape |
^ Z | SUB | Cancelar secuencia de escape |
^ [ | ESC | Escape / secuencia de inicio de escape |
^? | DEL | Nada |
ALT - ^ [ | n / A | Iniciar secuencia de comandos |
Secuencia de control | Descripción |
---|---|
^ [M | Avance de línea inverso |
^ [D | Linea de alimentación |
^ [E | Retorno de carro y avance de línea |
^ [H | Establecer tabulación |
^ [7 | Almacenar cursor |
^ [8 | Restaurar cursor |
^ [> | Cambiar el teclado al modo numérico |
^ [= | Cambiar el teclado al modo de aplicación |
^ [c | Restablecer la configuración del terminal |
^ [Z | Imprimir ID de terminal |
Para ^ [presione la tecla Escape.
La consola también admite secuencias de escape extendidas, secuencias de modo ANSI CSI y secuencias de modo privado DEC. [16] [18] Estas secuencias extendidas pueden controlar colores, efectos visuales como parpadeo, subrayado, intensidad y video inverso, frecuencia y duración del tono de campana, intervalo de supresión de pantalla VESA. Aparte del borrado textual, no se conoce ninguna forma de poner el adaptador VGA en modo de espera.
Planes futuros
Los proyectos de Kmscon apuntan a crear un reemplazo de espacio de usuario moderno para la consola de Linux. [19] [20] Las prioridades de desarrollo incluyen soporte para configuraciones de múltiples monitores , renderizado de fuentes Unicode con Pango , manejo de teclado XKB y aceleración GPU OpenGL . [21] Las quejas sobre la implementación actual del kernel incluyen "que es una interfaz de usuario en el espacio del kernel, el código está mal mantenido, maneja mal los teclados, produce una mala representación de fuentes, pierde el ajuste de modo y el soporte de múltiples cabezales, contiene no tiene conciencia de varios puestos y solo tiene un manejo limitado de conexión en caliente, limitado al cumplimiento de VT102 ". [4]
Nombre | Importante | Menor | Descripción |
---|---|---|---|
/ dev / tty0 | c 4 | 0 | "consola actual" |
/ dev / tty1 … / dev / tty63 | c 4 | 1 … 63 | consolas virtuales (controladas por teclado) |
/ dev / ttyS0 … | c 4 | 64 … | Puertos serie , adecuados para la consola del sistema |
/ dev / vcs | c 7 | 0 | Pantalla de consola virtual / dev / vcs es el contenido de la pantalla virtual actual. |
/ dev / vcs1 … / dev / vcs63 | c 7 | 1 … 63 | El texto (la tabla de punteros de caracteres) de una pantalla virtual. |
/ dev / vcsa1 … / dev / vcsa63 | c 7 | 129 … 191 | Pantalla de consola virtual con atributos Imagen completa de un búfer de texto virtual; Los primeros 4 bytes contienen números de filas, columnas y posición del cursor. |
Ver también
- Consola de Windows
Referencias
- ^ "Sistema operativo LinuxConsole" . DistroWatch . Consultado el 21 de junio de 2017 .
- ^ "config VT_CONSOLE: Soporte para consola en terminal virtual" . Linus Torvalds .
La consola del sistema es el dispositivo que recibe todos los mensajes y advertencias del kernel y que permite inicios de sesión en modo de usuario único.
- ^ "config VT: Terminal virtual" . Linus Torvalds .
Si responde S aquí, obtendrá soporte para dispositivos terminales con dispositivos de pantalla y teclado. Estos se denominan "virtuales" porque puede ejecutar varios terminales virtuales (también llamados consolas virtuales) en un terminal físico. Esto es bastante útil, por ejemplo, un terminal virtual puede recopilar mensajes y advertencias del sistema, otro puede usarse para una sesión de usuario en modo texto y un tercero puede ejecutar una sesión X, todo en paralelo. El cambio entre terminales virtuales se realiza con ciertas combinaciones de teclas, generalmente Alt-
. - ^ a b David Herrmann (12 de agosto de 2012). "Desactivando CONFIG_VT" .
- ^ "Reemplazo de CONFIG_VT / Linux-Console" . FOSDEM . 2013-02-02.
CONFIG_VT es la opción de configuración del kernel que habilita terminales virtuales en el kernel. Escrito inicialmente por el propio Linus, existe desde 1991.
- ^ a b c "La consola de Framebuffer" . kernel.org .
La consola framebuffer (fbcon), como su nombre lo indica, es una consola de texto que se ejecuta en la parte superior del dispositivo framebuffer. Tiene la funcionalidad de cualquier controlador de consola de texto estándar, como la consola VGA, con las características adicionales que se pueden atribuir a la naturaleza gráfica del framebuffer. En la arquitectura x86, la consola framebuffer es opcional y algunos incluso la tratan como un juguete. Para otras arquitecturas, es el único dispositivo de visualización disponible, de texto o gráfico. ¿Cuáles son las características de fbcon? La consola de framebuffer admite altas resoluciones, diferentes tipos de fuentes, rotación de pantalla, multicabezal primitivo, etc. Teóricamente, también son posibles las fuentes multicolores, la combinación, el alias y cualquier característica disponible por la tarjeta gráfica subyacente.
- ^ "Documentación / braille-console.txt" . kernel.org . Archivado desde el original el 6 de septiembre de 2015 . Consultado el 4 de julio de 2014 .
- ^ "Documentación / serial-console.txt" . kernel.org . Archivado desde el original el 22 de mayo de 2013 . Consultado el 30 de mayo de 2013 .
- ^ "CONFIG_VT_CONSOLE: Soporte para consola en terminal virtual" .
La consola del sistema es el dispositivo que recibe todos los mensajes y advertencias del kernel y que permite inicios de sesión en modo de usuario único. Si responde S aquí, un terminal virtual (el dispositivo utilizado para interactuar con un terminal físico) se puede utilizar como consola del sistema.
- ^ "CONFIG_SERIAL_CONSOLE: Soporte para consola en puerto serie" .
Si responde S aquí, será posible utilizar un puerto serie como consola del sistema (la consola del sistema es el dispositivo que recibe todos los mensajes y advertencias del kernel y que permite inicios de sesión en modo de usuario único). Esto podría resultar útil si algún terminal o impresora está conectado a ese puerto serie.
- ^ "CONFIG_USB_SERIAL_CONSOLE: Soporte de dispositivo USB Serial Console" .
Si responde S aquí, será posible utilizar un puerto convertidor de USB a serie como consola del sistema (la consola del sistema es el dispositivo que recibe todos los mensajes y advertencias del kernel y que permite inicios de sesión en modo de usuario único). Esto podría resultar útil si algún terminal o impresora está conectado a ese puerto serie.
- ^ "CONFIG_VGA_CONSOLE: consola de texto VGA" .
Decir S aquí le permitirá usar Linux en modo texto a través de una pantalla que cumple con el estándar VGA genérico. Prácticamente todo el mundo quiere eso.
- ^ "CONFIG_FRAMEBUFFER_CONSOLE: Soporte de consola Framebuffer" .
- ^ "chvt (1) - página de manual de Linux: chvt - cambiar terminal virtual en primer plano" .
- ^ "consola (4) - página de manual de Linux: consola - terminal de consola y consolas virtuales" .
Un sistema Linux tiene hasta 63 consolas virtuales
- ^ a b "console_codes (4) - página de manual de Linux: console_codes - Secuencias de control y escape de la consola de Linux" .
- ^ Grehan, Oisin (4 de febrero de 2016). "Mejoras en el host de la consola Windows 10 TH2 (v1511)" . Archivado desde el original el 9 de febrero de 2016 . Consultado el 10 de febrero de 2016 .
- ^ a b Michael K. Johnson y Erik W. Troan. Desarrollo de aplicaciones Linux: la consola Linux . Libros ASCII. ISBN 0321563220.
- ^ David Herrmann (11 de agosto de 2012). "KMSCON: Consola virtual basada en Linux KMS / DRM" .
- ^ Michael Larabel ( 28 de marzo de 2013 ). "KMSCON: un emulador de terminal basado en DRM" . Phoronix .
Ayer se anunció el lanzamiento de kmscon, un emulador de terminal para Linux que es similar a lo que se ofrece dentro del kernel, pero en cambio está en el espacio de usuario y se basa en las interfaces DRM del kernel, así como en Mesa.
- ^ Michael Larabel (8 de febrero de 2013 ). "La consola del kernel de Linux está siendo eliminada" . Phoronix .
CONFIG_VT ha sido parte del kernel de Linux desde principios de los 90, pero no ha avanzado mucho en ese momento. David Herrmann, un desarrollador que se puso en marcha con esta nueva iniciativa como estudiante de Google Summer of Code, quiere una nueva solución construida con varios asientos y varios monitores en mente, que incorpore renderizado de fuentes Unicode, manejo de teclado similar a XKB, gráficos aceleración de hardware, compatibilidad con VT220-VT510 y otras características.