Почему так много виртуальных терминальных устройств?


11

Я читал книгу Advanced Linux Programming, в которой упоминается о виртуальных терминалах, которые, если я правильно понял, это особенность Linux (не в Unix), позволяющая использовать несколько консолей входа в систему, отличную от X11. Вы создаете виртуальные терминалы нажатием ALT-F2. Я использую Linux Mint и в своей папке / dev, хотя вижу много устройств tty и не знаю, для чего они. Вот срезанный вывод:

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
Фактически вы не создаете Linux VT, нажимая CTRL-ALT-F1 (и т. Д.), Они уже есть, вы просто не видите их, поскольку ваш диспетчер отображения автоматически вызывался при запуске, а затем вы оказались в X (который, сбивающий с толку, работает на tty 7). Проверьте, /etc/inittabи вы увидите, как это работает.
Эмануэль Берг

Ответы:


10

Это конкретно виртуальные консольные устройства в терминологии Linux. Поддержка виртуальных консолей на одном физическом устройстве не уникальна для Linux (например, BSD называет их «портами аппаратного терминала»).

В Linux нет механизма для создания консольных устройств по требованию. 63 консоли не всегда активны (необходимо активировать ttyN, чтобы переключиться на них с помощью ( Ctrl+) Alt+ FN), но для активации требуется открыть консольное устройство ( openvtкоманда делает это, как gettyи X-сервер). Таким образом, запись устройства должна существовать все время, иначе она должна быть создана вручную, прежде чем ее можно будет использовать.

Современные системы Linux (с помощью udev или devtmpfs) создают записи для каждого устройства, присутствующего в системе. Все виртуальные консоли присутствуют всегда (независимо от того, активны они или нет), поэтому все записи создаются. Большинству пользователей не нужно почти столько же - на самом деле большинство пользователей никогда не видят ничего, кроме виртуальной консоли, на которой работает X. Но есть некоторые, кто делает это и нуждается в исправлении своего ядра, чтобы разрешить более 63 консолей, потому что они работают на больших машинах со многими аппаратными консолями).


-2

Это не специфичная для Linux вещь, и ttys используются не только для виртуальных терминалов. Они также используются, например, когда вы запускаете xterm, когда находитесь в графическом интерфейсе. Если бы было меньше устройств tty, вы бы не смогли иметь много логинов xterms или ssh.


Хм, хотите объяснить это немного больше? Когда вы запускаете xterm под X, вы не получаете очки, а не tty?
Эмануэль Берг


Хорошо, я прочитал это, но это все еще не ясно. Вы говорите, что когда я запускаю xterm, этот процесс каким-то образом связан с файлом устройства tty /dev, поэтому, если их было меньше, вы могли бы фактически "исчерпать" ttys?
Эмануэль Берг

4
На самом деле интерфейс устройства для эмуляторов X не является tty - это «псевдотерминал» (pt). Они динамически управляются ядром, но существующие в настоящее время перечислены в /dev/pts/. Команда ttyвыдаст вам ваше текущее устройство - попробуйте в X, затем попробуйте в VT.
Златовласка

2
Вы путаете /dev/ttyN(виртуальные консоли, иногда называемые виртуальными терминалами) со старыми /dev/ptyN(псевдо-терминалы, также иногда называемые виртуальными терминалами). Linux теперь использует динамически размещаемое /dev/pts/Nвместо старого статически размещаемого /dev/ptyN.
Жиль "ТАК - перестань быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.