Por que existem tantos dispositivos terminais virtuais?


11

Eu tenho lido o livro de programação avançada do Linux e ele menciona terminais virtuais que, se eu entendi direito, é um recurso específico do Linux (não no Unix) para permitir vários consoles de logon em um sistema não X11. Você cria terminais virtuais pressionando ALT-F2. Estou executando o Linux Mint e na minha pasta / dev, embora veja muitos dispositivos tty e não sei para que servem. Aqui está a saída 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
Na verdade, você não está criando VTs do Linux pressionando CTRL-ALT-F1 (e assim por diante), eles já estão lá, você simplesmente não os vê, pois seu gerenciador de exibição foi chamado automaticamente na inicialização e acabou no X (que é, confusamente, executado no tty 7). Confira /etc/inittabe você verá como isso funciona.
Emanuel Berg

Respostas:


10

Esses são dispositivos de console especificamente virtuais , na terminologia Linux. O suporte a consoles virtuais no mesmo dispositivo físico não é exclusivo do Linux (por exemplo, o BSD os chama de "portas terminais de hardware").

O Linux não possui um mecanismo para criar dispositivos de console sob demanda. Os 63 consoles nem sempre estão ativos (é necessário ativar ttyNpara alternar para ele com ( Ctrl+) Alt+ FN), mas para ativar um é necessário abrir o dispositivo do console (o openvtcomando faz isso, assim como gettyo servidor X). Portanto, a entrada do dispositivo deve existir o tempo todo, ou então deve ser criada manualmente antes de poder ser usada.

Os sistemas Linux modernos (com udev ou devtmpfs) criam entradas de dispositivo para todos os dispositivos presentes no sistema. Todos os consoles virtuais estão sempre presentes (ativos ou não), portanto, todas as entradas são criadas. A maioria dos usuários não precisa de tantos - na verdade, a maioria dos usuários nunca vê nada além do console virtual em que o X está sendo executado. Mas há quem o faça e precisa corrigir seu kernel para permitir mais de 63 consoles, porque eles executam máquinas grandes com muitos consoles de hardware).


-2

Não é uma coisa específica do Linux, e os ttys não são usados ​​apenas para terminais virtuais. Eles também são usados, por exemplo, quando você inicia um xterm quando está em uma interface gráfica. Se houvesse menos dispositivos tty, não seria possível ter muitos logins xterms ou ssh.


Hum, gostaria de explicar isso um pouco mais? Quando você executa o xterm sob o X, você não obtém pts, e nem tty?
Emanuel Berg


OK, eu já li, mas ainda não está claro. Você está dizendo que, quando inicio o xterm, esse processo está de alguma forma associado a um arquivo de dispositivo tty /dev, portanto, se houvesse menos deles, você poderia "ficar sem" o ttys?
Emanuel Berg

4
Na verdade, a interface do dispositivo para emuladores X não é um tty - é um "pseudo terminal" (pt). Eles são gerenciados dinamicamente pelo kernel, mas os atualmente existentes são listados em /dev/pts/. O ttycomando fornecerá o seu dispositivo atual - tente no X e tente em um VT.
Goldilocks

2
Você está confundindo /dev/ttyN(consoles virtuais, às vezes chamados de terminais virtuais) com os antigos /dev/ptyN(pseudo-terminais, também chamados de terminais virtuais). O Linux agora usa alocados dinamicamente em /dev/pts/Nvez dos antigos alocados estaticamente /dev/ptyN.
Gilles 'SO- stop be evil'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.