¿Por qué hay tantos dispositivos terminales virtuales?

11

He estado leyendo el libro Advanced Linux Programming y menciona los terminales virtuales que, si lo entendí correctamente, es una característica específica de Linux (no en Unix) para permitir múltiples consolas de inicio de sesión en un sistema que no sea X11. Puede crear terminales virtuales presionando ALT-F2. Estoy ejecutando Linux Mint y en mi carpeta / dev, aunque veo muchos dispositivos tty y no sé para qué sirven. Aquí está la salida grepped:

crw-rw-rw-  1 root tty       5,   0 Jan  2 19:45 tty
crw--w----  1 root tty       4,   0 Jan  2 19:10 tty0
crw-rw----  1 root tty       4,   1 Jan  2 19:10 tty1
crw--w----  1 root tty       4,  10 Jan  2 19:10 tty10
crw--w----  1 root tty       4,  11 Jan  2 19:10 tty11
crw--w----  1 root tty       4,  12 Jan  2 19:10 tty12
crw--w----  1 root tty       4,  13 Jan  2 19:10 tty13
crw--w----  1 root tty       4,  14 Jan  2 19:10 tty14
crw--w----  1 root tty       4,  15 Jan  2 19:10 tty15
crw--w----  1 root tty       4,  16 Jan  2 19:10 tty16
crw--w----  1 root tty       4,  17 Jan  2 19:10 tty17
crw--w----  1 root tty       4,  18 Jan  2 19:10 tty18
crw--w----  1 root tty       4,  19 Jan  2 19:10 tty19
crw-rw----  1 root tty       4,   2 Jan  2 19:10 tty2
crw--w----  1 root tty       4,  20 Jan  2 19:10 tty20
crw--w----  1 root tty       4,  21 Jan  2 19:10 tty21
crw--w----  1 root tty       4,  22 Jan  2 19:10 tty22
crw--w----  1 root tty       4,  23 Jan  2 19:10 tty23
crw--w----  1 root tty       4,  24 Jan  2 19:10 tty24
crw--w----  1 root tty       4,  25 Jan  2 19:10 tty25
crw--w----  1 root tty       4,  26 Jan  2 19:10 tty26
crw--w----  1 root tty       4,  27 Jan  2 19:10 tty27
crw--w----  1 root tty       4,  28 Jan  2 19:10 tty28
crw--w----  1 root tty       4,  29 Jan  2 19:10 tty29
crw-rw----  1 root tty       4,   3 Jan  2 19:10 tty3
crw--w----  1 root tty       4,  30 Jan  2 19:10 tty30
crw--w----  1 root tty       4,  31 Jan  2 19:10 tty31
crw--w----  1 root tty       4,  32 Jan  2 19:10 tty32
crw--w----  1 root tty       4,  33 Jan  2 19:10 tty33
crw--w----  1 root tty       4,  34 Jan  2 19:10 tty34
crw--w----  1 root tty       4,  35 Jan  2 19:10 tty35
crw--w----  1 root tty       4,  36 Jan  2 19:10 tty36
crw--w----  1 root tty       4,  37 Jan  2 19:10 tty37
crw--w----  1 root tty       4,  38 Jan  2 19:10 tty38
crw--w----  1 root tty       4,  39 Jan  2 19:10 tty39
crw-rw----  1 root tty       4,   4 Jan  2 19:10 tty4
crw--w----  1 root tty       4,  40 Jan  2 19:10 tty40
crw--w----  1 root tty       4,  41 Jan  2 19:10 tty41
crw--w----  1 root tty       4,  42 Jan  2 19:10 tty42
crw--w----  1 root tty       4,  43 Jan  2 19:10 tty43
crw--w----  1 root tty       4,  44 Jan  2 19:10 tty44
crw--w----  1 root tty       4,  45 Jan  2 19:10 tty45
crw--w----  1 root tty       4,  46 Jan  2 19:10 tty46
crw--w----  1 root tty       4,  47 Jan  2 19:10 tty47
crw--w----  1 root tty       4,  48 Jan  2 19:10 tty48
crw--w----  1 root tty       4,  49 Jan  2 19:10 tty49
crw-rw----  1 root tty       4,   5 Jan  2 19:10 tty5
crw--w----  1 root tty       4,  50 Jan  2 19:10 tty50
crw--w----  1 root tty       4,  51 Jan  2 19:10 tty51
crw--w----  1 root tty       4,  52 Jan  2 19:10 tty52
crw--w----  1 root tty       4,  53 Jan  2 19:10 tty53
crw--w----  1 root tty       4,  54 Jan  2 19:10 tty54
crw--w----  1 root tty       4,  55 Jan  2 19:10 tty55
crw--w----  1 root tty       4,  56 Jan  2 19:10 tty56
crw--w----  1 root tty       4,  57 Jan  2 19:10 tty57
crw--w----  1 root tty       4,  58 Jan  2 19:10 tty58
crw--w----  1 root tty       4,  59 Jan  2 19:10 tty59
crw-rw----  1 root tty       4,   6 Jan  2 19:10 tty6
crw--w----  1 root tty       4,  60 Jan  2 19:10 tty60
crw--w----  1 root tty       4,  61 Jan  2 19:10 tty61
crw--w----  1 root tty       4,  62 Jan  2 19:10 tty62
crw--w----  1 root tty       4,  63 Jan  2 19:10 tty63
crw--w----  1 root tty       4,   7 Jan  2 19:10 tty7
crw--w----  1 root tty       4,   8 Jan  2 19:10 tty8
crw--w----  1 root tty       4,   9 Jan  2 19:10 tty9
ArmenB
fuente
44
De hecho, no está creando VT de Linux presionando CTRL-ALT-F1 (y así sucesivamente), ya están allí, simplemente no los ve, ya que su administrador de pantalla se invocó automáticamente al inicio y luego terminó en X (que es, confusamente, ejecuta en tty 7). Echa un vistazo /etc/inittaby verás cómo funciona.
Emanuel Berg

Respuestas:

10

Estos son específicamente dispositivos de consola virtual , en terminología de Linux. El soporte de consolas virtuales en el mismo dispositivo físico no es exclusivo de Linux (por ejemplo, BSD los llama "puertos de terminal de hardware").

Linux no tiene un mecanismo para crear dispositivos de consola a pedido. Las 63 consolas no siempre están activas (es necesario activarlas ttyNpara cambiar a ellas con ( Ctrl+) Alt+ FN), pero para activar una requiere abrir el dispositivo de la consola (el openvtcomando hace eso, al igual que gettyel servidor X). Por lo tanto, la entrada del dispositivo debe existir todo el tiempo o, de lo contrario, debe crearse manualmente antes de poder usarse.

Los sistemas Linux modernos (con udev o devtmpfs) crean entradas de dispositivo para cada dispositivo que está presente en el sistema. Todas las consolas virtuales siempre están presentes (estén activas o no), por lo que se crean todas las entradas. La mayoría de los usuarios no necesitan tantos, de hecho, la mayoría de los usuarios nunca ven nada más que la consola virtual en la que X se está ejecutando. Pero hay algunos que lo hacen, y necesitan parchear su kernel para permitir más de 63 consolas, porque ejecutan máquinas grandes con muchas consolas de hardware).

Gilles 'SO- deja de ser malvado'
fuente
-2

No es una cosa específica de Linux, y los ttys no solo se usan para terminales virtuales. También se usan, por ejemplo, cuando inicia un xterm una vez que se encuentra en una interfaz gráfica. Si hubiera menos dispositivos tty, no podría tener muchos xterms o inicios de sesión ssh.

Jenny D
fuente
¿Te importaría explicar esto un poco más? Cuando ejecutas xterm bajo X, ¿no obtienes pts y no tty?
Emanuel Berg
1
Echa un vistazo a unix.stackexchange.com/questions/4126/…
Jenny D
Bien, lo he leído, pero aún no está claro. ¿Estás diciendo que cuando comienzo xterm, ese proceso está asociado de alguna manera con un archivo de dispositivo tty /dev, por lo que, si hubiera menos de ellos, realmente podrías "quedarte" sin ttys?
Emanuel Berg
44
En realidad, la interfaz del dispositivo para emuladores X no es una tty, es un "pseudo terminal" (pt). Esos son gestionados dinámicamente por el núcleo, pero los existentes actualmente se enumeran en /dev/pts/. El ttycomando le dará su dispositivo actual: intente en X y luego en un VT.
Ricitos de Oro
2
Estás confundiendo /dev/ttyN(consolas virtuales, a veces llamadas terminales virtuales) con las antiguas /dev/ptyN(pseudo terminales, también a veces llamadas terminales virtuales). Linux ahora usa una asignación dinámica en /dev/pts/Nlugar de la antigua asignación estática /dev/ptyN.
Gilles 'SO- deja de ser malvado'