Чому так багато віртуальних термінальних пристроїв?


11

Я читав книгу « Просунуте програмування Linux» і згадує про віртуальні термінали, які, якщо я правильно зрозумів, це особливість Linux (не в Unix), що дозволяє використовувати декілька консолей входу в систему, яка не є X11. Ви створюєте віртуальні термінали, натискаючи ALT-F2. Я запускаю Linux Mint і в папці / dev, хоча бачу багато пристроїв, і я не знаю, для чого вони потрібні. Ось чіткий вихід:

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
Ви насправді не створюєте VT Linux, натискаючи 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.
goldilocks

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