Warum gibt es so viele virtuelle Endgeräte?

11

Ich habe das Advanced Linux Programming-Buch gelesen und es erwähnt virtuelle Terminals. Wenn ich es richtig verstanden habe, handelt es sich um eine Linux-spezifische Funktion (nicht unter Unix), mit der mehrere Anmeldekonsolen in einem Nicht-X11-System zugelassen werden können. Sie erstellen virtuelle Terminals, indem Sie ALT-F2 drücken. Ich verwende Linux Mint und in meinem Ordner / dev, obwohl ich viele tty-Geräte sehe und nicht weiß, wofür sie gedacht sind. Hier ist die Grepped-Ausgabe:

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
quelle
4
Sie erstellen tatsächlich keine Linux-VTs, indem Sie STRG-ALT-F1 (usw.) drücken. Sie sind bereits vorhanden. Sie werden nur nicht angezeigt, da Ihr Display-Manager beim Start automatisch aufgerufen wurde und Sie dann in X gelandet sind (was verwirrenderweise auf tty 7 läuft). Schauen Sie sich an /etc/inittabund Sie werden sehen, wie das funktioniert.
Emanuel Berg

Antworten:

10

Dies sind speziell virtuelle Konsolengeräte in Linux-Terminologie. Die Unterstützung virtueller Konsolen auf demselben physischen Gerät gilt nicht nur für Linux ( BSD nennt sie beispielsweise "Hardware-Terminal-Ports").

Linux verfügt nicht über einen Mechanismus zum Erstellen von Konsolengeräten bei Bedarf. Die 63 Konsolen sind nicht immer aktiv (Sie müssen sie aktivieren ttyN, um mit ( Ctrl+) Alt+ zu ihr zu wechseln FN), aber um eine zu aktivieren, müssen Sie das Konsolengerät öffnen (der openvtBefehl führt dies ebenso aus gettywie der X-Server). Der Geräteeintrag muss also immer vorhanden sein, oder er muss manuell erstellt werden, bevor er verwendet werden kann.

Moderne Linux-Systeme (mit udev oder devtmpfs) erstellen Geräteeinträge für jedes Gerät, das auf dem System vorhanden ist. Alle virtuellen Konsolen sind immer vorhanden (unabhängig davon, ob sie aktiv sind oder nicht), sodass alle Einträge erstellt werden. Die meisten Benutzer benötigen nicht annähernd so viele - tatsächlich sehen die meisten Benutzer nur die virtuelle Konsole, auf der X ausgeführt wird. Es gibt jedoch einige, die dies tun und ihren Kernel patchen müssen, um mehr als 63 Konsolen zuzulassen, da sie große Computer mit vielen Hardwarekonsolen ausführen.

Gilles 'SO - hör auf böse zu sein'
quelle
-2

Es ist keine Linux-spezifische Sache, und ttys werden nicht nur für virtuelle Terminals verwendet. Sie werden auch verwendet, z. B. wenn Sie ein xterm starten, sobald Sie sich in einer grafischen Oberfläche befinden. Wenn es weniger tty-Geräte gäbe, könnten Sie nicht viele xterms- oder ssh-Anmeldungen haben.

Jenny D.
quelle
Hm, möchtest du das etwas näher erläutern? Wenn Sie xterm unter X ausführen, erhalten Sie dann keine Punkte und keine tty?
Emanuel Berg
1
Werfen
Jenny D
OK, ich habe es gelesen, aber es ist immer noch nicht klar. Wollen Sie damit sagen, dass dieser Prozess beim Starten von xterm in irgendeiner Weise mit einer tty-Gerätedatei in verknüpft ist /dev? Wenn also weniger davon vorhanden wären, könnten Ihnen ttys tatsächlich "ausgehen"?
Emanuel Berg
4
Tatsächlich ist die Geräteschnittstelle für X-Emulatoren kein tty - es ist ein "Pseudo-Terminal" (pt). Diese werden dynamisch vom Kernel verwaltet, aber aktuell vorhandene werden in aufgelistet /dev/pts/. Der ttyBefehl gibt Ihnen Ihr aktuelles Gerät - versuchen Sie es in X und dann in einem VT.
Goldlöckchen
2
Sie verwechseln /dev/ttyN(virtuelle Konsolen, manchmal als virtuelle Terminals bezeichnet) mit den alten /dev/ptyN(Pseudo-Terminals, manchmal auch als virtuelle Terminals bezeichnet). Linux verwendet jetzt dynamisch zugewiesene /dev/pts/Nanstelle der alten statisch zugewiesenen /dev/ptyN.
Gilles 'SO - hör auf böse zu sein'