Consola Virtual de Linux (1): Desde la perspectiva del usuario

1. ¿Por qué esta serie?


Usted compra una computadora, ya sea un PC, un portátil, un smartphone, una tableta, o para ser extremo, un servidor sin cabeza, cómo se va a usar? Esto suena como una pregunta sin cerebro para la mayoría de usuarios de computadoras.

Para PC, plugin de teclado, monitor, ratón, después haga clic en el botón de encendido. Entonces usted tiene una pantalla de arranque de la BIOS y luego un sistema operativo se pone en marcha, entonces usted tendrá una pantalla de texto de inicio de sesión o de una GUI (Graphic User Interface) y entrarás en tu nombre de usuario / contraseña, entonces usted tendrá una terminal de texto para escribir ; comando shell, o en un ambiente de pleno derecho de escritorio como Windows 7 o Gnome o KDE que se puede jugar con a través del teclado o el ratón

Para smartphone o tablet, botas después del botón de encendido empujado y del sistema. arriba, tendrá una interfaz GUI. Que va a utilizar el dedo como dispositivo de punta para abrir la aplicación o seleccione un menú.Cuando su caso, un teclado virtual aparecerá, para que pueda introducir texto.

Todos damos por sentado en todos los escenarios anteriores . Si no podemos dar órdenes a los ordenadores y seguimiento de los resultados devueltos de nuevo por la computadora, ¿cuáles son las computadoras hechas para? De hecho, un montón de cosas que pasó por debajo para que la interacción humano-computadora sea posible.

He utilizado Ubuntu desde hace varios años. Cuando he actualizado a Ubuntu hace 13,10 días, la interfaz gráfica de la Unidad tiene errores muy graves y la pantalla se congela de vez en cuando. Realmente me molestó y no puedo tolerar el efecto perjudicial sobre la eficiencia de mi trabajo. Así que me cambié a Debian 7, espero que sea una distribución más estable. Todo funciona muy bien en un primer momento a Debian 7 Gnome3, hasta que me doy cuenta de que me gustaría hacer algún tipo de personalización de interfaz de usuario para adaptarse a mis hábitos de trabajo. De repente, me doy cuenta que Gnome o KDE de hoy son realmente grandes monstruos de la perspectiva del usuario. Si no eres un usuario arraigada de uno de ellos, tendrá que pasar por un montón de dolor que encontrar una manera para que muy pequeña personalización. No me gusta estar sujetado por cualquier entorno de escritorio específico en Linux, así que me decidí a hacerlo a mi manera. Linux significa opciones abiertas.

Me pasé el tiempo cavando Linux consola virtual y documentación X Windows cuando yo era un novato usuarios de Linux hace 10 años. Ahora es el momento para mí para refrescar y perfeccionar mis conocimientos sobre Linux interacción hombre-máquina. Esperamos que pueda disfrutar de mi viaje y obtener algo útil de este post.

2. La historia de una consola

De acuerdo a Wikipedia, una consola de sistema es « un dispositivo físico para operar una computadora». Dicha consola existe el primer día en que la gente construyó un ordenador. El prototipo de una consola de ordenador es la máquina de escribir. Una máquina de escribir tiene un teclado como entrada y un documento para mostrar lo que ha escrito.

Una máquina de escribir


Cuando se inventó el telégrafo, el código Morse se utiliza para utilizado para enviar mensajes a través de la radio. Clave de Morse es el dispositivo de entrada para la señal de radio, un receptor de radio es el dispositivo de salida para el telégrafo

Morse Key


teletipo (teletipo / teleimpresora) es una versión evolucionada de Morse Key. La gente puede enviar y recibir telégrafo a través de una interfaz de máquina de escribir, con la entrada como el teclado de máquina de escribir y papel impreso como dispositivo de salida. En comparación con una máquina de escribir tradicional, teletipo tiene canal de comunicación y es realmente un dispositivo de comunicación, a través de radio o línea de cable. Teletipo es el acrónimo de opinión como «TTY». TTY todavía se utiliza para referirse a las consolas en los sistemas informáticos de hoy en día

máquinas de teletipo en Segunda Guerra Mundial



Cuando se inventó la computadora , un teletipo es una elección natural para comunicarse con el equipo anfitrión. Como papel es reemplazado por un monitor eléctrico, la gente suele llamar como dispositivo como «System Console» o «Terminal». La gente puede interactuar con el anfitrión ordenador a través de estos dispositivos.

diciembre VT 320 Terminal

Así que una consola moderna tiene un teclado, un supervisar, y tiene un enlace físico al ordenador. Una consola no es un ordenador (host). Se trata de un dispositivo para controlar un ordenador. El vínculo físico entre la consola y el ordenador proporciona un canal de comunicación de dos vías. Hay un excelente programa que se ejecuta en el ordenador principal que supervisa la actividad en el enlace. En días de edad, estos enlaces son normalmente llamados «enlaces seriales» ya que la información se intercambia entre la consola y el bit de host a poco. Cuando se pulsa una tecla en el teclado, un código ASCII se transmite al host. Anfitrión recibe entonces este personaje y lo envía de vuelta la información al terminal de instruir controlador de monitor para visualizar un gráfico de caracteres en el monitor. Generalmente, cuando se introduce un comando completo a través de una tecla de «retorno», el equipo anfitrión se ejecutará cualquier programa que exigió y devolver el resultado a través de la línea de conexión al monitor.

Cuando una consola está encendida arriba, el equipo anfitrión se encargó a la consola para mostrar un mensaje de inicio de sesión del usuario. A continuación, introduzca su nombre de usuario y la contraseña, y el equipo anfitrión va a crear lo que se denomina «sesión de usuario» en su memoria. La sesión de usuario es la información de contexto almacenado en el equipo anfitrión cuando el ordenador se encarga de su entrada. Bajo este contexto, el equipo anfitrión sabrá quién es usted y qué acciones se le permite ejecutar en host.

Los primeros monitores sólo pueden mostrar caracteres predefinidos gráfico. Estas consolas son referidos como «Texto Terminal». Como la tecnología de visualización que avanzaba, el monitor puede mostrar los gráficos además de texto gráfico. Una consola equipada con un monitor gráfico se refiere a menudo como «Terminal gráfico». Ya se trate de texto o gráfico, una consola es sólo el dispositivo de comunicación entre las personas y equipo. Consola es un dispositivo separado desde un host del ordenador, y con un enlace de comunicación entre ellos para facilitar la interacción bidireccional.

3. Consola de hoy

Hoy en día, si usted necesita utilizar las computadoras, usted acaba de comprar un ordenador o portátil. La computadora no es un dispositivo caro que sólo gran institución puede permitirse en los viejos tiempos. PC de hoy o portátil tienen la función de consola incorporada, por lo que no es necesario comprar un dispositivo de consola separada para interactuar con su ordenador. El enlace de comunicación entre la consola y el anfitrión en su PC / ordenador portátil está integrado en el equipo, por lo que el «link» por lo general no es visible a los ojos de los usuarios normales.

Cuando navegamos en Internet, equipo en realidad actúan como una «consola» para que pueda interactuar con los servidores remotos en Internet. Cuando usted visita el sitio web, inicio de sesión remoto en la máquina de la oficina, envía un correo electrónico, se le acaba la computadora como una consola para acceder a equipos remotos. En este sentido, la conexión serie tradicional entre la consola y el ordenador principal ha sido reemplazado por Internet. Con la CPU de gran alcance, gran cantidad de memoria y disco duro local o SSD, su ordenador es una mucho más poderosa consola mucho más en comparación con «terminal tonta» en los viejos tiempos. Pero el concepto de «consola» todavía se aplican. Consola es un dispositivo de comunicación para facilitar su interacción con el ordenador. Se adhieren a esta idea cuando se sienta perdido en el siguiente análisis.

4. Texto Local Console / Terminal en Linux

Usted tiene un PC / ordenador portátil con la consola (teclado, ratón, monitor, etc) incorporado, y de instalar una distribución de Linux como sistema operativo. Linux proporciona funcionalidad de la consola, o no será capaz de utilizar el ordenador. En esta sección, analizaremos primero la función de consola / terminal de texto en Linux.

Linux tiene controladores de dispositivo para teclado / ratón / tarjetas gráficas. A través de estos controladores de dispositivos, Linux puede manipular los dispositivos físicos de la consola. Linux también tienen programas de software para proporcionar un «terminal de texto» para que pueda interactuar con el ordenador.

La primera vez que inicie sesión en una máquina Linux, por lo general la primera aplicación que inicie un programa de shell como bash, ksh, csh o zsh. Está utilizando la consola para interactuar con este programa shell. Su consola realmente ofrecen el canal de entrada / salida para este programa de shell. Linux abstraer los detalles físicos del enlace de comunicación entre la consola y la aplicación de shell. Este enlace se representa como un archivo de «carácter especial» bajo el sistema de archivos del dispositivo «/ dev / tty *». Usted puede leer y escribir en este archivo especial, como si se trata de un canal de comunicación bidireccional. A continuación se muestra un modelo conceptual para la consola de Linux.

Linux Concepto consola

En los dos extremos de «/ dev / tty * «canal es dispositivo de la consola y el programa de aplicación que se está interactuando. Cuando se escribe en el teclado, se envían los bytes de la aplicación. Cuando la aplicación tiene resultados para usted, enviará de vuelta de nuevo a monitorear a través del mismo canal. Para que una aplicación como un shell de Linux, / dev / tty * está su «entrada estándar» y «salida estándar», denominada como descriptor de fichero 0 y 1. Una consola está equipada con un dispositivo de pseudo tty. Cuando un usuario ha iniciado sesión en Linux, él / ella se le asignará una sesión de usuario, y la sesión de usuario se conecta al dispositivo de pseudo tty. Un usuario podría optar por ejecutar varias aplicaciones en una consola, con una sola aplicación en primer plano y la izquierda reside en el fondo. La aplicación en primer plano será tomar el control del dispositivo TTY para que pueda interactuar con él. Usted puede utilizar el comando de control de trabajos «fg / bg / ctrl-z» para cambiar entre estas aplicaciones. Sólo la aplicación en primer plano se puede leer desde el dispositivo tty, tanto de primer plano y de fondo aplicación puede escribir en el dispositivo tty.

Un equipo generalmente tiene sólo un conjunto de dispositivo de consola física, que consiste en un teclado, un monitor. Tal vez sería más productivo si tiene varias consolas abiertas al mismo tiempo, para que pueda jugar la multitarea sin la aplicación interferir la entrada y salida de cada uno. Sobre la base de un conjunto de consola física, Linux puede emular más de las consolas virtuales. Los usuarios pueden cambiar hacia adelante y hacia atrás entre las consolas virtuales. En un teclado de PC, se puede cambiar entre estas consolas virtuales, utilizando «CTRL-ALT-Fn» combinación de teclas, donde «Fn» corresponde a la consola virtual enésimo. Cada consola virtual tendrá un archivo tty en / dev /, o sea / dev/tty1 corresponderá a la consola 1. También puede cambiar a una consola virtual usando «chvt-c N», donde N es el número de VT.

Cuando Linux arranca arriba, el primer proceso que se ejecutará es el programa «/ sbin / init» . Init comprobará el archivo «/ etc / inittab» y decide cuántas consolas virtuales para emular.

# Formato:
# : : :
#
# Tenga en cuenta que en la mayoría de los sistemas Debian tty7 es utilizado por el sistema X Window,
# por lo que si desea agregar más de getty seguir adelante pero evita tty7 si ejecuta X.
#
1:2345: respawn :/ sbin / getty 38400 tty1
2:23: respawn :/ sbin / getty 38400 tty2
03:23: respawn :/ sbin / getty 38400 tty3
4:23: respawn :/ sbin / getty 38400 tty4
5:23: respawn :/ sbin / getty 38400 tty5
6:23: respawn :/ sbin / getty 38400 tty6

En el ejemplo anterior, 6 consolas virtuales se generaron en el inicio del sistema, la numeración de la consola virtual de 1 a 6. Desde el registro del sistema como dmesg salida se dirige a la consola 1, Linux generalmente se refieren consola 1 como «consola del sistema», y otras consolas como «terminal».

El» programa getty «proporcionará un mensaje de conexión para cada consola / terminal virtual. Cuando el usuario introduce el nombre de uso y pulsa «Enter», getty se «ejecutivo», el programa de inicio de sesión (sustituir su imagen de proceso de inicio de sesión) y de inicio de sesión le solicitará el usuario como contraseña. Después el usuario introduzca la contraseña correcta, login generará un subproceso, y ejecutar un programa especificado por un / campo de línea en / etc / passwd correspondiente al usuario conectado. Por ejemplo, el archivo / etc / passwd en mi ordenador se ve así:

root: x: 0:0: root :/ root :/ bin / bash
….
sshd: 110:65534 :: / var / run / sshd:: / usr / sbin / nologin
rtkit: x: 111:119: RealtimeKit,,, :/ proc :/ bin / false
statd: x: 112:65534 :: / var / lib / nfs : / bin / false

luke: x: 1000:1000: lucas,,, :/ home / luke : / bin / bash
dirmngr: x: 115:124 :: / var / cache / dirmngr: / bin / sh
Festival: x: 116:29 :: / home / Festival :/ bin / false

kdm: x: 117:65534 :: / home / kdm :/ bin / false

Los usuarios normales como «root» en general, ejecutar un programa de shell como bash / sh trás loguearse Algunos usuarios especiales tendrán «/ bin / false» o «/ usr / sbin / nologin» como su programa de puesta en marcha, ya que Linux no permite éstos cuenta de usuario para tener un intérprete de ingreso por motivos de seguridad.

Después me conecté a la consola virtual de 1, puedo comprobar todos los procesos asociados a todas las terminales virtuales.

$ ps-t tty1, tty2, tty3, tty4, tty5, tty6 | sort
12971 tty1 00:00:00 sesión
12984 tty1 00:00:00 fiesta
4930 tty2 00:00:00 getty
4931 tty3 00:00:00 getty
4932 tty4 00:00:00 getty
4933 tty5 00:00:00 getty
4934 tty6 00:00:00 getty

$ pstree-ps 12984
init (1) ─ ─ ─ login (12971) ─ ─ ─ bash (12984)


Como podemos ver, hay 6 ttys. Desde que han iniciado sesión en tty1, así que podemos ver los procesos asociados de «login» y «fiesta». «Login» se desovar por «init», en sustitución del «getty» original. Para todos los otros terminales virtuales, ningún usuario ha iniciado la sesión, por lo que «getty» es el seguimiento de la actividad de enlace y espera de inicio de sesión de usuario

5. Texto de consola remota / Terminal en Linux

Si su equipo aún tiene un puerto serie, puede conectarse a él a través de una línea serie. El proceso es el mismo que el terminal local desde la perspectiva de Linux. El getty todavía controlar la actividad de la línea, y proporcionar aviso de la conexión con el programa de «terminal tonta» como minicom en el otro extremo de la línea serie. En este momento, el archivo de dispositivo en general reside en el sistema de archivos del dispositivo como «/ dev / ttyS *», y el equipo en el terminal no inteligente reside actos que la consola.


Si marca en el ordenador a través del módem minicom, el concepto de la consola sigue siendo válida. Esta vez, el programa de monitoreo de la actividad del enlace ha cambiado a «mgetty», y el archivo de dispositivo reside en el sistema de archivos del dispositivo como «/ dev / ttyS *».

También se puede conectar a su ordenador de forma remota mediante un shell seguro. Esta vez, sshd esperará a una conexión de Internet, y generar una concha para que después de un registro exitoso pulg El archivo de dispositivo de este momento se llama «/ dev / pts / #».

Courier New, Courier, monospace; font-size: x-small;»> luke @ localhost de la contraseña:

Linux luke debian-3.2.0-4-amd64 # 1 SMP Debian 3.2.51-1 x86_64

Último acceso: dom 10 de noviembre 2013 22:04:10 desde localhost

PID TTY TIEMPO CMD

21919 pts / 1 00:00:00 ps
luke luke @ debian: ~ $ pstree-sp 21823
init(1)───sshd(6272)───sshd(21816)───sshd(21822)───bash(21823)───pstree(21924)

Esta vez, el cliente ssh actúa como consola, sshd actúa como monitor de enlace, y los actos / dev/pts/1 como archivo de vínculo de dispositivo.

inherit;»>

inherit;»>

Gestor de inicio : El componente de software que reside en el lado del host del ordenador, monitores Actividad de enlace, proporciona mensaje de conexión y genera sesión del usuario;

inherit;»> Device Archivo :.. un archivo que reside en el lado del equipo anfitrión que las normas para la captación de un enlace de comunicación de aplicaciones que se ejecutan en el equipo anfitrión puede comunicarse con el controlador de consola a través de dicho archivo a través del dispositivo de lectura / escritura a través de ellos

inherit;»> aplicación Terminal : El programa de software se ejecuta en el equipo host Dicho programa / proceso necesita para interactuar con el usuario a través de la interfaz de entrada de texto / salida, y que a menudo han llamado «descriptor de fichero de entrada / salida estándar». abierto para la lectura y la escritura. Tal descriptor de fichero son más altos nivel de abstracción proporcionado por el sistema operativo para la abstracción de bajo nivel de archivo de dispositivo. aplicación Terminal es a menudo llamada «interface de usuario (TUI).» Muchos utilizan TUI «ncurse» biblioteca para hacer la programación de interfaz de terminal. TUI El más típico es un shell (bash, ksh, etc.)

Método de acceso
Controller Console (consola)
Gestor de inicio
(host)
Device File
(host)
Aplicación
(host)
VT Local
Cualquier TUI
getty
/ dev / tty *
Cualquier TUI
línea serie
init(1)───login(8603)───bash(8631,luke)───xterm(8727)───bash(8729)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *