Pourquoi y a-t-il autant de terminaux virtuels?

11

J'ai lu le livre Advanced Linux Programming et il mentionne les terminaux virtuels qui, si j'ai bien compris, c'est une fonctionnalité spécifique à Linux (pas sous Unix) pour permettre plusieurs consoles de connexion dans un système non X11. Vous créez des terminaux virtuels en appuyant sur ALT-F2. J'utilise Linux Mint et dans mon dossier / dev bien que je vois de nombreux périphériques tty et je ne sais pas à quoi ils servent. Voici la sortie accueillie:

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
la source
4
En fait, vous ne créez pas de VT Linux en appuyant sur CTRL-ALT-F1 (et ainsi de suite), ils sont déjà là, vous ne les voyez tout simplement pas car votre gestionnaire d'affichage a été invoqué automatiquement au démarrage, puis vous vous êtes retrouvé dans X (qui est, confusément, exécuté sur tty 7). Vérifiez /etc/inittabet vous verrez comment cela fonctionne.
Emanuel Berg

Réponses:

10

Il s'agit spécifiquement de consoles virtuelles , dans la terminologie Linux. La prise en charge des consoles virtuelles sur le même périphérique physique n'est pas unique à Linux (par exemple, BSD les appelle «ports de terminaux matériels»).

Linux n'a pas de mécanisme pour créer des périphériques de console à la demande. Les 63 consoles ne sont pas toujours actives (vous devez l'activer ttyNpour y basculer avec ( Ctrl+) Alt+ FN), mais pour en activer une, il faut ouvrir le périphérique de la console (la openvtcommande fait cela, comme le font gettyet le serveur X). L'entrée d'appareil doit donc exister en permanence, sinon elle doit être créée manuellement avant de pouvoir être utilisée.

Les systèmes Linux modernes (avec udev ou devtmpfs) créent des entrées de périphérique pour chaque périphérique présent sur le système. Toutes les consoles virtuelles sont toujours présentes (qu'elles soient actives ou non), donc toutes les entrées sont créées. La plupart des utilisateurs n'en ont presque pas besoin - en fait, la plupart des utilisateurs ne voient jamais que la console virtuelle sur laquelle X s'exécute. Mais il y en a quelques-uns qui le font et doivent patcher leur noyau pour autoriser plus de 63 consoles, car ils exécutent de grandes machines avec de nombreuses consoles matérielles).

Gilles 'SO- arrête d'être méchant'
la source
-2

Ce n'est pas une chose spécifique à Linux, et les ttys ne sont pas uniquement utilisés pour les terminaux virtuels. Ils sont également utilisés par exemple lorsque vous démarrez un xterm une fois que vous êtes dans une interface graphique. S'il y avait moins de périphériques tty, vous ne pourriez pas avoir beaucoup de connexions xterms ou ssh.

Jenny D
la source
Hm, tu veux expliquer ça un peu plus? Lorsque vous exécutez xterm sous X, n'obtenez-vous pas de pts et pas de tty?
Emanuel Berg
1
Jetez un oeil à unix.stackexchange.com/questions/4126/…
Jenny D
D'accord, je l'ai lu, mais ce n'est toujours pas clair. Êtes-vous en train de dire que lorsque je démarre xterm, ce processus est associé d'une manière ou d'une autre à un fichier de périphérique tty /dev, donc s'il y en avait moins, vous pourriez en fait "manquer" de ttys?
Emanuel Berg
4
En fait, l'interface de périphérique pour les émulateurs X n'est pas un tty - c'est un "pseudo terminal" (pt). Ceux-ci sont gérés dynamiquement par le noyau, mais ceux actuellement existants sont répertoriés dans /dev/pts/. La ttycommande vous donnera votre appareil actuel - essayez dans X puis essayez-le dans un VT.
goldilocks
2
Vous confondez /dev/ttyN(consoles virtuelles, parfois appelées terminaux virtuels) avec les anciens /dev/ptyN(pseudo-terminaux, parfois aussi appelés terminaux virtuels). Linux utilise désormais l'allocation dynamique /dev/pts/Nau lieu de l'ancienne allocation statique /dev/ptyN.
Gilles 'SO- arrête d'être méchant'