Perché ci sono così tanti terminali virtuali?


11

Ho letto il libro Advanced Programming Programming e parla di terminali virtuali che, se l'ho capito correttamente, è una funzionalità specifica di Linux (non in Unix) per consentire più console di accesso in un sistema non X11. È possibile creare terminali virtuali premendo ALT-F2. Sto usando Linux Mint e nella mia cartella / dev anche se vedo molti dispositivi tty e non so a cosa servano. Ecco l'output 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

4
In realtà non stai creando Linux VT premendo CTRL-ALT-F1 (e così via), sono già lì, semplicemente non li vedi come il tuo display manager è stato invocato automaticamente all'avvio, e poi sei finito in X (che è, confusamente, eseguito su tty 7). Dai un'occhiata /etc/inittabe vedrai come funziona.
Emanuel Berg,

Risposte:


10

Si tratta in particolare di dispositivi console virtuali , in terminologia Linux. Il supporto di console virtuali sullo stesso dispositivo fisico non è univoco per Linux (ad esempio, BSD le chiama "porte terminali hardware").

Linux non ha un meccanismo per la creazione di dispositivi console su richiesta. Le 63 console non sono sempre attive (è necessario attivarle ttyNper passare ad essa con ( Ctrl+) Alt+ FN), ma per attivare una è necessario aprire il dispositivo console (il openvtcomando lo fa, così come gettyil server X). Pertanto, la voce del dispositivo deve esistere continuamente, altrimenti deve essere creata manualmente prima di poter essere utilizzata.

I moderni sistemi Linux (con udev o devtmpfs) creano voci di dispositivo per ogni dispositivo presente sul sistema. Tutte le console virtuali sono sempre presenti (siano esse attive o meno), quindi vengono create tutte le voci. La maggior parte degli utenti non ha bisogno di così tanti - in realtà la maggior parte degli utenti non vede mai altro che la console virtuale su cui X è in esecuzione. Ma ce ne sono alcuni che lo fanno e devono patchare il loro kernel per consentire più di 63 console, perché eseguono macchine di grandi dimensioni con molte console hardware).


-2

Non è una cosa specifica per Linux, e ttys non sono usati solo per terminali virtuali. Vengono anche utilizzati, ad esempio, quando si avvia un xterm quando ci si trova in un'interfaccia grafica. Se ci fossero meno dispositivi tty, non saresti in grado di avere molti accessi xterms o ssh.


Ti va di spiegarlo un po 'di più? Quando esegui xterm sotto X, non ottieni un pts e non un tty?
Emanuel Berg,


OK, l'ho letto, ma non è ancora chiaro. Stai dicendo, quando avvio xterm, quel processo è in qualche modo associato a un file del dispositivo tty /dev, quindi, se ce ne fossero meno, potresti effettivamente "esaurire" i tty?
Emanuel Berg,

4
In realtà l'interfaccia del dispositivo per gli emulatori X non è un tty - è un "pseudo terminale" (pt). Questi sono gestiti dinamicamente dal kernel, ma quelli attualmente esistenti sono elencati in /dev/pts/. Il ttycomando ti darà il tuo dispositivo attuale: prova in X e poi prova in un VT.
Riccioli d'oro

2
Stai confondendo /dev/ttyN(console virtuali, a volte chiamati terminali virtuali) con i vecchi /dev/ptyN(pseudo-terminali, a volte anche chiamati terminali virtuali). Linux ora utilizza l'allocazione dinamica /dev/pts/Nanziché la vecchia allocazione statica /dev/ptyN.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.