Tty linux что это

Работа в терминале Linux для начинающих

Действительно, в операционной системе Linux есть терминал, где вы можете выполнять нужные вам команды, чтобы очень эффективно управлять своей системой. Но это вовсе не обязательно, многим вполне достаточно графического интерфейса. Сейчас использование терминала отошло на второй план, но он остается основным средством для доступа к удаленным серверам и инструментом для профессионалов.

Терминал Linux намного интереснее, чем командная строка Windows и в этой статье будет подробно рассмотрена работа в терминале Linux для начинающих, а также что такое терминал Linux и собственно, что он из себя представляет.

Что такое терминал Linux?

С тех пор, такой способ ввода использовался во многих системах, в том числе DOS и OS/2 от Apple, пока не был придуман графический интерфейс. Затем текстовый режим терминала был успешно вытеснен, но его до сих пор продолжают использовать там, где это нужно.

Выше, под терминалом мы понимали то место, где можно вводить команды и получать на них ответ от компьютера. Это может быть текстовый режим Linux или же открытое в графическом режиме окно терминала. В Linux часто встречаются слова: консоль, терминал, командная строка, командная оболочка, tty, эмулятор терминала. Все они относятся к терминалу, но означают немного разные вещи. Перед тем как перейти дальше давайте разберемся с терминами, чтобы называть все своими именами.

Под терминалом принято понимать окружение, где можно вводить команды и получать на них ответ, это может быть физический терминал или терминал на компьютере.

Теперь, когда мы разобрались что такое терминал Linux и знаем все основные принципы, перейдем к практике работы с ним.

Как открыть терминал Linux?

Это текстовые терминалы без графического интерфейса, в них может быть не совсем удобно работать, но, зато такие терминалы будут полезны, если графический интерфейс не работает.

Второй способ позволяет открыть виртуальный терминал прямо в графическом интерфейсе с помощью эмулятора терминала. Эмулятор терминала linux работает с файлами в каталоге /dev/pts/* и еще называется псевдотерминалом, потому что не использует tty.

В Ubuntu вы можете запустить терминал linux нажав сочетание клавиш Ctrl+Alt+T:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Также его можно найти в меню приложений Dash:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Как видите, открыть командную строку в linux очень просто.

Выполнение команд в терминале

Рассмотрим более подробно терминал Linux для начинающих. Как я уже говорил, терминал и файлы устройств tty отвечают только за передачу данных. За обработку команд отвечает командная оболочка, которой и передаются полученные от пользователя данные.

Вы можете набрать что-либо и убедиться, что это работает:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Чтобы выполнить команду достаточно написать ее и нажать Enter.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Более того, командная оболочка Bash поддерживает автодополнение, поэтому вы можете написать половину команды, нажать TAB и если на такие символы начинается только одна команда, то она будет автоматически дополнена, если же нет, то вы можете нажать два раза TAB, чтобы посмотреть возможные варианты.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Точно такая же схема работает для путей к файлам и параметров команд:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

В Windows вы о таком и мечтать не могли. Чтобы выполнить команду можно указать имя ее исполняемого файла или полный путь к нему, относительно корневой или любой другой папки. Важно заметить, что командная оболочка Linux, в отличие от Windows, чувствительна к регистру, а поэтому будьте внимательны при вводе команд и их параметров.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

По умолчанию работа в командной строке linux может выполняться с помощью большого количества команд, многие из них, например, для перемещения по каталогам, просмотра содержимого, установки ПО поставляются вместе с системой.

Экземпляр запущенной команды называется процесс. Когда в терминале Linux выполняется одна команда нам нужно подождать ее завершения, чтобы выполнить следующую.

Команды могут выполняться без параметров, что мы видели выше, или же с параметрами, которые позволяют указать данные, с которыми будет работать программа, также есть опции, с помощью которых можно настроить поведение. Большинство стандартных утилит придерживаются такого синтаксиса:

$ команда опции параметр1 параметр2.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

С параметром, указывающим какую папку посмотреть:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

В с опцией и параметром:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Можно комбинировать две опции:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

В основном, это все, что нужно знать про команды, чтобы продуктивно их использовать. Еще можно было бы рассказать про объединение команд и перенаправление вывода одной команды в другую, но это уже отдельная тема.

Выводы

В этой статье была рассмотрена работа в терминале linux для начинающих. Командная строка Linux может показаться сначала очень сложной, но это совсем не так, она намного проще в использовании чем в Windows и позволяет управлять системой более эффективно. Надеюсь, эта статья пролила немного света на эту очень большую тему.

Источник

Что такое TTY в Linux? (и как использовать команду tty)

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Телепринтеры 1800-х годов

Кодирование Бодо в конечном итоге стало наиболее близким к стандарту в кодировании телепринтера, и оно было принято большинством производителей. Оригинальный аппаратный дизайн Бодо имел всего пять клавиш, похожих на клавиши пианино. Оператор должен был выучить конкретную комбинацию клавиш для каждой буквы. В итоге система кодирования Baudot была соединена с традиционной раскладкой клавиатуры.

Чтобы отметить это продвижение, машины были названы телетайпами. Это было сокращено до телетайпа и в конечном итоге до TTY. Так вот откуда мы получаем аббревиатуру TTY, но при чем тут телеграфия?

ASCII и Телекс

Когда ASCII прибыл в 1963 году, он был принят производителями телетайпа. Несмотря на изобретение и широкое использование телефона, телетайпы все еще набирали силу.

Телекс был всемирной сетью телетайпов, которая позволяла отправлять письменные сообщения по всему миру. Они были основным средством передачи письменных сообщений в период после Второй мировой войны до бума факсимильных аппаратов 1980-х годов.

Компьютеры тоже развивались. Они стали способны взаимодействовать с пользователями в режиме реального времени и поддерживать несколько пользователей. Старый пакетный метод работы стал недостаточным. Люди не хотели ждать своих результатов 24 часа или дольше. Создание стопок перфокарт и ожидание результатов было более неприемлемым.

Людям требовалось устройство, которое позволяло бы им вводить инструкции и отправлять результаты обратно им. Люди хотели эффективности.

Телетайп перепрофилированный

Телетайп был идеальным кандидатом в качестве устройства ввода / вывода. В конце концов, это было устройство, предназначенное для того, чтобы сообщения можно было набирать, кодировать, отправлять, получать, декодировать и печатать.

Что заботило телетайп, если устройство на другом конце соединения не было другим телетайпом? Пока он говорил на одном языке кодирования и мог принимать сообщения и отправлять сообщения обратно, телетайп был счастлив.

И, конечно, он использовал более-менее стандартную клавиатуру.

Аппаратные эмулированные телетайпы

Телетайпы стали средством взаимодействия по умолчанию с большими мини-компьютерами и компьютерами мэйнфреймов той эпохи.

В конечном итоге они были заменены устройствами, которые эмулировали эти электромеханические машины с использованием электроники. У них были катодно-лучевые трубки (ЭЛТ) вместо бумажных рулонов. Они не дрожали при доставке ответов с компьютера. Они разрешали до сих пор невозможные функции, такие как перемещение курсора по экрану, очистка экрана, выделение текста и т. Д.

Программные эмулированные телетайпы

В среде рабочего стола Linux и других Unix-подобных операционных систем, таких как macOS, окно терминала и приложения, такие как x-term и Konsole, являются примерами виртуальных телетайпов. Но они полностью эмулируются программным обеспечением. Они называются псевдо-телетайпами. Это было сокращено до PTS.

Что может сказать нам tty?

В Linux существует мультиплексор псевдо-телетайпа, который обрабатывает соединения со всеми псевдо-телетайпами окна терминала (PTS). Мультиплексор является ведущим, а PTS являются ведомыми. Мультиплексор обращается к ядру через файл устройства, расположенный в / dev / ptmx.

Команда tty напечатает имя файла устройства, которое ваш ведомый псевдотелептик использует для взаимодействия с мастером. И это, по сути, номер вашего окна терминала.

Давайте посмотрим, что tty сообщает для нашего окна терминала:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Ответ показывает, что мы подключены к файлу устройства в / dev / pts / 0.

Наше оконное окно, которое является программной эмуляцией телетайпа (TTY), связано с мультиплексором псевдотелетипа как псевдо телетайп (PTS). И это, оказывается, номер ноль.

Тихий вариант

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Это производит выходное значение, однако:

Это, вероятно, будет наиболее полезным в сценариях Bash. Но даже в командной строке мы можем продемонстрировать, как выполнить команду, только если вы работаете в окне терминала (сеанс TTY или PTS).

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Поскольку мы работаем в сеансе TTY, наш код выхода равен 0, и вторая команда выполняется.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Кому Командование

Другие команды могут показать ваш номер TTY. Команда who выводит информацию для всех зарегистрированных пользователей, включая вас.

Алек и Мэри удаленно подключены к компьютеру Linux. Они подключены к ПТС один и два.

Пользователь Дэйв отображается как подключенный к «: 0».

Это представляет экран и клавиатуру, физически подключенную к компьютеру. Хотя экран и клавиатура являются аппаратными устройствами, они все равно подключены к мультиплексору через файл устройства. tty показывает, что это / dev / pts / 2.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Доступ к TTY

Вы можете получить доступ к полноэкранному сеансу TTY, удерживая клавиши Ctrl + Alt и нажав одну из функциональных клавиш.

Ctrl + Alt + F3 вызовет приглашение входа в систему tty3.

Это не псевдотелептик (эмулируемый программным обеспечением); это виртуальный телетайп (эмулируется аппаратно). Он использует экран и клавиатуру, подключенные к вашему компьютеру, для эмуляции виртуального телетайпа, как это делал DEC VT100.

Вы можете использовать функциональные клавиши Ctrl + Alt с функциональными клавишами от F3 до F6, и при желании вы можете открыть четыре сессии TTY. Например, вы можете войти в tty3 и нажать Ctrl + Alt + F6, чтобы перейти к tty6.

Чтобы вернуться к графическому окружению рабочего стола, нажмите Ctrl + Alt + F2.

Нажатие Ctrl + Alt + F1 вернет вас к приглашению на вход в сеанс графического рабочего стола.

Однажды, Ctrl + Alt + F1 до Ctrl + Alt + F6 откроет полноэкранные консоли TTY, а Ctrl + Alt + F7 вернет вас в среду графического рабочего стола. Если вы работаете с более старым дистрибутивом Linux, возможно, именно так ведет себя ваша система.

Это было проверено на текущих версиях Manjaro, Ubuntu и Fedora, и все они вели себя так:

Доступ к этим полноэкранным консолям позволяет людям, использующим установки Linux только из командной строки — и многие серверы Linux настроены таким образом, — иметь несколько доступных консолей.

Вы когда-нибудь работали на машине с Linux с графическим окружением рабочего стола и что-то вызывало зависание вашей сессии? Теперь вы можете перейти к одному из сеансов консоли TTY, чтобы попытаться исправить ситуацию.

Вы можете использовать top и ps чтобы попытаться идентифицировать отказавшее приложение, затем использовать kill чтобы завершить его, или просто использовать shutdown чтобы попытаться закрыть настолько изящно, насколько позволит состояние компьютера.

Три маленькие буквы с большой историей

Команда tty получила свое название от устройства конца 1800-х годов, появившегося в Unix в 1971 году, и по сей день является частью Linux и Unix-подобных операционных систем.

За этим маленьким парнем стоит настоящая история.

Источник

Что такое TTY в Linux?

Команда tty (сокр. от англ. «teletypewriter») выводит имя используемого вами терминала в Linux. Но какая предыстория стоит за названием этой команды и чем она может быть нам полезна? Сейчас разберемся.

Телепринтеры из 1800-х годов

В 1830-х и 1840-х годах были разработаны машины, известные как телепринтеры. Телепринтер позволял отправителю с помощью специального устройства, напоминающего клавиатуру, набирать сообщения и отправлять их «по проводам» в отдаленные места. По приему, полученный текст распечатывали на бумаге. Это было эволюционным шагом в телеграфии, которая до сих пор использовала только азбуку Морзе и подобные коды.

Перед отправкой сообщение кодировалось, затем передавалось получателю, на месте получения оно декодировалось и распечатывалось. Для кодирования и декодирования сообщений использовалось несколько методов. Самым известным и популярным являлся метод, запатентованный в 1874 году Эмилем Бодо, в честь которого была названа единица измерения символьной скорости передачи данных (бод). К слову сказать, его схема кодирования символов на 89 лет опередила появление стандарта ASCII.

Кодировка Бодо в конечном итоге стала наиболее близкой к стандарту кодирования телепринтеров, в связи с чем, она была принята большинством производителей. Оригинальная конструкция оборудования Бодо состояла всего лишь из пяти клавиш, похожих на клавиши пианино. Оператор должен был выучить определенную комбинацию для каждой буквы. Со временем, система кодирования Бодо была объединена с традиционной раскладкой клавиатуры.

В ознаменование этого прогресса машины были названы «телетайпными пишущими машинами» или просто «телетайпами» (англ. «teletypes», сокр. от «teletypewriters»). В дальнейшем название урезали до TTY. Вот откуда появилась аббревиатура TTY. Но какое отношение телеграф имеет к вычислительной технике?

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Телетайп времен Второй мировой войны

ASCII и Telex

1963 год ознаменовался выходом стандарта ASCII, который был принят производителями телетайпов. Несмотря на изобретение и широкое использование телефона, популярность телетайпов все еще была высока.

Телекс (англ. «Telex», сокр. от «telegraph exchange») — это всемирная сеть телетайпов, которая позволяла отправлять письменные сообщения по всему миру. Они были основным средством передачи письменных сообщений в период после Второй мировой войны вплоть до бума факсимильной связи (факсов) в 1980-х годах.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это
Советский факсимильный аппарат «ФТА-П», 1960 год

В тоже время развивались и компьютеры. Они становились способными взаимодействовать с пользователями в режиме реального времени и поддерживать работу сразу с несколькими из них. При этом старый пакетный метод работы с устаревшими аппаратами все сильнее обнажал свои недостатки. Люди не хотели тратить целые сутки (а то и больше) на ожидание результатов выполнения вводимых ими программ. Делать стопки перфокарт и ждать результатов всю ночь было уже неприемлемо: требовалось устройство, которое позволяло бы вводить инструкции и сразу получать результат. Нужна была эффективность. И телетайп стал идеальным кандидатом для использования в качестве устройства ввода-вывода.

Аппаратно-эмулированные телетайпы

Телетайпы стали стандартным средством взаимодействия с мини-компьютерами и большими мейнфреймами той эпохи.

С течением времени телетайпы были заменены на электронные устройства, которые имитировали электромеханическое строение телетайпов. Но при этом, в этих устройствах вместо рулонов бумаги использовались электронно-лучевые трубки (ЭЛТ), они не тряслись при доставке ответов с компьютера и допускали доселе невозможные функции, такие как: перемещение курсора по экрану, очистка экрана, выделение текста жирным шрифтом и так далее.

Видеотерминал DEC VT05 был ранним примером виртуального телетайпа и предком знаменитого DEC VT100. Продажи DEC VT100 исчислялись миллионами штук.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Программно-эмулированные телетайпы

В Linux и других UNIX-подобных операционных системах (например, macOS), окно терминала и приложения по типу x-term и Konsole являются примерами виртуальных телетайпов, работа которых полностью эмулируется при помощи программного обеспечения. Из-за этой особенности терминалы получили название псевдо-телетайп (сокр. «PTS», от англ. «pseudo-teletypes»).

Команда tty

В Linux существует мультиплексор псевдо-телетайпов, который обрабатывает соединения со всех терминалов псевдо-телетайпов (PTS). Мультиплексор является ведущим устройством, а PTS — подчиненными. Мультиплексор общается с ядром через файл устройства, расположенный в /dev/ptmx.

Команда tty выводит имя специального файла устройства, который ваш ведомый псевдо-телетайп использует для взаимодействия с ведущим устройством. И это, по сути, номер вашего окна терминала.

Давайте посмотрим, какую информацию выведет команда tty для нашего окна терминала:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Как видите, мы подключены к специальному файлу устройства /dev/pts/1.

Наше окно терминала, представляющее собой программную эмуляцию телетайпа (TTY), подключено к мультиплексору псевдо-телетайпа как псевдо-телетайп (PTS) под номером 1.

Тихий режим

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Некоторые служебные значения, возвращаемые командой tty:

0 — если стандартный ввод поступает с устройства TTY (эмулированного или физического).

1 — если стандартный ввод не поступает с устройства TTY.

2 — синтаксическая ошибка, использовались неправильные параметры командной строки.

3 — произошла ошибка записи.

Данные значения будут наиболее полезны при написании bash-скриптов. Но даже в командной строке мы можем продемонстрировать, как выполнить команду при условии, что вы работаете в окне терминала (сеанс TTY или PTS).

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Поскольку мы работаем в сеансе TTY, наш код выхода равен 0 (успех), и выполняется вторая команда.

Команда who

Также есть и другие команды, которые могут отобразить ваш номер TTY. Команда who выведет информацию обо всех вошедших в систему пользователей, включая вас.

На следующем скриншоте видно, что к компьютеру с Linux подключен пользователь diego. Часть :0 представляет собой экран и клавиатуру, физически подключенные к компьютеру. Несмотря на то, что экран и клавиатура являются аппаратными устройствами, они все равно соединены с мультиплексором через файл устройства /dev/pts/1.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Доступ к TTY

Вы можете получить доступ к полноэкранному сеансу TTY, удерживая нажатыми сочетание клавиш Ctrl+Alt и нажимая одну из функциональных клавиш.

Нажатие сочетания клавиш Ctrl+Alt+F3 вызовет приглашение для входа в систему tty3.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Это не псевдо-телетайп (эмулируемый программным обеспечением); это виртуальный телетайп (эмулируемый аппаратным обеспечением). Он использует экран и клавиатуру, подключенные к вашему компьютеру, для эмуляции виртуального телетайпа, как это делал DEC VT100.

Вы можете использовать сочетание клавиш Ctrl+Alt с функциональными клавишами F3-F6 для открытия соответствующих сеансов TTY. Например, вы можете войти в tty3 и нажать Ctrl+Alt+F6, чтобы перейти в tty6.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Чтобы вернуться в графическую среду рабочего стола, нажмите Ctrl+Alt+F2. Нажатие Ctrl+Alt+F1 вернет вас на экран входа в сеанс графического рабочего стола.

Следующие сочетания клавиш были протестированы на текущих версиях дистрибутивов Debian, Manjaro, Ubuntu и Fedora:

Ctrl+Alt+F1 — возвращает вас на экран входа в графическую среду рабочего стола.

Ctrl+Alt+F2 — возвращает вас в графическую среду рабочего стола.

Ctrl+Alt+F3 — открывает tty3.

Ctrl+Alt+F4 — открывает tty4.

Ctrl+Alt+F5 — открывает tty5.

Ctrl+Alt+F6 — открывает tty6.

Наличие доступа к этим полноэкранным консолям позволяет людям, использующим минимальную установку Linux (а многие серверы Linux настроены именно таким образом), иметь несколько доступных консолей.

Заключение

Команда tty, получившая свое название от устройства конца 1800-х годов, появилась в UNIX в 1971 году. С дальнейшим развитием вычислительных машин телетайпы, а затем и видеотерминалы отошли в прошлое. Однако подсистемы для работы с ними хоть и претерпели существенные изменения, остались в ядрах операционных систем.

Источник

Виртуальные твари и места их обитания: прошлое и настоящее TTY в Linux

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что этоUbuntu интегрирована в Windows 10 Redstone, Visual Studio 2017 обзавелась поддержкой разработки под Linux – даже Microsoft сдает позиции в пользу растущего числа сторонников Торвальдса, а ты всё еще не знаешь тайны виртуального терминала в современных дистрибутивах?

Хочешь исправить этот пробел и открываешь исходный код? TTY, MASTER, SLAVE, N_TTY, VT, PTS, PTMX… Нагромождение понятий, виртуальных устройств и беспорядочная магия? Всё это складывается в довольно логичную картину, если вспомнить, с чего всё началось…

1. START FROM SCRATCH & KEEP CALM

TTY: ПАЛЕОЗОЙ

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что этоМы шагнули прямиком в тридцатые годы XX века и оказались в совсем еще молодой Teletype Corporation. Прямо перед нами перед нами Тот-С-Которого-Всё-Началось – телетайп, представляющий из себя «буквопечатающий телеграф», который передает текстовые сообщения между двумя абонентами.

Абонент А набирает на клавиатуре символы, которые преобразуются в электрические сигналы. По самому обычному кабелю сигналы «бегут» на телетайп абонента Б и уже там печатаются на самой обычной бумаге. Если сигнал дуплексный, то нам крупно повезло, и абонент Б может сразу написать свой ответ; если нет – то ему потребуется сначала подсоединить второй провод для обратной связи.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это
Здесь, на Teletype Corporation, еще не знают, какое будущее в скором времени ждет их продукт, и уж конечно не подозревают, что аббревиатура TTY намного переживет сам телетайп. Не будем портить для них интригу, пойдем дальше.

TTY: МЕЗОЗОЙ

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что этоПрошло сорок лет, мы в лаборатории Digital Equipment Corporation, любуемся первым мини-компьютером (интерактивным!) PDP-1. Для ввода и вывода информации, а также для обеспечения взаимодействия с пользователем к нему подключен уже знакомый нам телетайп.

Дело в том, что ведущие инженерные умы решили велосипед не изобретать и приспособить уже имеющийся дешевый и доступный механизм под новые нужды. Телетайп напрямую подключили к компьютеру (а не к другому телетайпу, как это было раньше) и назвали это дело консолью. Оператор, осуществляющий ввод, видит, как набираемые символы мгновенно печатаются на бумаге, но происходит это без участия ОС – благодаря сохранению в консоли принципа печатающей машинки.

TTY: ПАЛЕОГЕН

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что этоОказываемся в самом начале 80-ых годов, на этот раз в Bell Laboratories. Здесь только что выпущен один из важнейших релизов «раннего» UNIX – Version 7 для PDP-11. Особенности у этого релиза следующие: вводимая пользователем команда теперь отображается по принципу ECHO (набранный на клавиатуре символ сначала попадает в буфер накопления и только потом ОС отправляет инструкцию вывести этот символ на печать), поддерживаются простые возможности редактирования вводимых команд (можно «стирать» символ или целую строку, перемещать каретку), появляется разделение режимов:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что этоКстати говоря, Digital Equipment Corporation за эти 20 лет не только разработала упомянутый PDP-11, но и подумала о том, как усовершенствовать телетайп: появились так называемые умные терминалы.

Смотрим направо: это VT100, один из первых терминалов, умеющих работать в любви и согласии с PDP-11 и поддерживаемый Unix Version 7.

На уровне ОС и консоль, и умный терминал сейчас воспринимаются как символьные устройства, которые подключаются через интерфейс UART, преобразовывающий асинхронный поток данных в последовательность символов. Для ОС они в принципе идентичны, разница лишь в том, стирать ли символы на экране терминала или печатать символ забоя с помощью телетайпа.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это
Слева показана в общих чертах схема взаимодействия компьютера и консоли (или умного терминала). У этой схемы есть один недостаток, который совсем не радует оператора консоли PDP-11: с одной консолью ассоциируется одна сессия (или сеанс), в котором пользователь может в фоновом режиме запустить несколько процессов, однако активным в один момент времени на одном TTY будет только один.

И наш бедный оператор вынужден в прямом смысле этого слова переходить от одной консоли к другой, если вдруг ему придет в голову поработать с несколькими сессиями.

TTY: НЕОГЕН

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что этоМы очутились в редакции журнала «PC MAGAZINE», рассматриваем свежий выпуск от 13 января 1987 года. Один из разворотов активно убеждает нас не жалеть денег на ПК с UNIX System V. Каковы аргументы? В частности – grep, awk, sort, split, cut, paste, vi, ed – word processing явно шагнул вперед. И самое интересное: к нашим услугам сейчас эмуляторы терминалов! Благодаря виртуальным консолям, уже можно запустить целых четыре сессии без нужды подключать всё новые и новые физические телетайпы.

Кроме того, жизнь монохромных терминалов нынче можно расцветить: поддерживается CGA, Hercules, EGA графика. Бедолага-оператор может вздохнуть спокойно, телетайп (а также умный терминал) в виде железного зверя угрожает ему только в ночных кошмарах.

Посоветуем оператору лишь одно: ни за что не лезть в директорию /dev – ведь его ждут там аж несколько ttyX и напоминают о том, что под капотом виртуальной консоли живет всё тот же старый-добрый телетайп.

TTY: АНТРОПОГЕН

На предыдущем шаге мы убедились: консоль сделали виртуальной (не будет же солидное издание «PC MAGAZINE» лгать). Что это значит – весь механизм ввода/вывода переписан и в корне изменен? Тогда почему виртуальное устройство – всё еще ttyX? Всё просто: виртуальная консоль эмулируется как самая что ни на есть физическая, а место UART-драйвера, вероятно, занимает кто-то другой. Изменившуюся схему подробно обсудим чуть дальше.

До финишной прямой один шаг, но пропустить его мы не можем хотя бы из уважения к Линусу Торвальдсу. Сейчас 1993 год, и мы наконец имеем счастье рассматривать исходный код Linux 0.95. Почему именно этот релиз? Именно в нем уже сформировалась TTY-абстракция, наиболее близкая к тому, что мы имеем в самых последних дистрибутивах: оформились три обособленных слоя (TTYX — TTY_LINE_DISCIPLINE — TTY_DRIVER).

Кроме того, спустя всего год будет выпущен Linux 1.0, где появится оконный интерфейс, предоставленный проектом XFree86. С этого момента к виртуальным консолям добавятся в придачу еще виртуальные терминалы, которые пользователь (в почти не ограниченном количестве) сможет запускать, не покидая графическую оболочку… Однако прежде, чем окунуться в тонкости и детали усовершенствованной io-магии, вернемся в наше настоящее к Ubuntu 16.04.

2. STOP BEAT AROUND THE BUSH & LOOK INSIDE

ВИРТУАЛЬНЫЕ ТВАРИ И МЕСТА ИХ ОБИТАНИЯ

Лишь некоторые устройства директории /dev/ используются повседневно: /dev/sdaX, /dev/mem, /dev/zero, /dev/random… Но есть несколько групп устройств, которые не часто привлекают наше внимание, однако более чем его заслуживают. Это устройства /ttyX, /vcsX, /vcsaX, а также /ptmx и /pts/X. Собственно говоря, о них и пойдет речь дальше.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

И первый наш объект – виртуальная консоль. Каждому такому объекту присущи как минимум сакральное число идентификатор и тотемное животное файл виртуального устройства /tty, коих в виртуальном лесу директории /dev встречают аж 64.

Проверим, есть ли у нас возможность пообщаться с ними. Выполняем Ctrl-Alt-FX (или chvt X, где X – номер консоли, например, Ctrl-Alt-F1) и замечаем, что X может быть равно 1, 2 … 6. При этом перед нами открывается виртуальная консоль, при первом запуске нам предлагают ввести имя пользователя и пароль и создают для нас новый сеанс работы. Если X равен 7, то мы возвращаемся в родные графические пенаты и понимаем, что /tty7 связан с XServer’ом. Идем дальше. Восемь, девять, десять и так далее до 63 — признаков жизни не подают.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что этоДело в том, что в Linux есть макрос MAX_NR_CONSOLES (64), определяющий максимально допустимое число виртуальных консолей, которые и представлены 64-мя файлами виртуальных устройств /dev/ttyX. Однако последнее слово остается за параметром ACTIVE_CONSOLES (/etc/default/console-setup), и параметр этот по умолчанию равен шести.

Инициализация консолей происходит в несколько стадий. Сперва ядро, получив управление от Grub’a, в ходе инициализации подсистем вызывает функцию «console_init», которая создает первичную консоль – «boot console», предназначенную для вывода отладочной информации. Это консоль осуществляет вывод символов самым примитивным образом: через «putchar», которая напрямую обращается к BIOS, инициализируя и заполняя структуру biosregs, и осуществляет вывод символа в консоль, используя прерывание 0x10.

Позже, в ходе выполнения «fs-initcall» и «console-initcall» происходит создание виртуальных устройств и структур под 6 полноценных виртуальных консолей – «real console». Активацию этих консолей выполняет первый запущенный ядром процесс /sbin/init, запускающий программу getty, которая выполняет чтение конфигурационных файлов /etc/init/console.conf и /etc/init/ttyX.conf и впоследствии отображает на консоль содержимое файла-приветствия etc/issue и запускает login. Далее XServer инициирует активацию консоли на dev/tty7, на которой запускается графическая оболочка.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Однако у нас есть еще вопросы. Что за неведомый объект /dev/tty0? И если каждый /dev/ttyX — это виртуальное устройство консоли, то зачем нужны /dev/console и /dev/tty? За ответом переходим на tty1 (нажимая Ctrl-Alt-F1) и в фоновом режиме запускаем такой скрипт:

Затем переходим на, скажем, tty4 и ждем несколько секунд. По истечении видим следующую картину:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Распределение ролей становится понятно: /dev/tty0 = /dev/console = текущая консоль, т.е. оба всегда ассоциированы с той консолью, которую мы в данный момент видим перед собой, а /dev/tty «помнит» консоль, с которой стартовал процесс. Поэтому пока наш процесс выполнялся, /dev/tty0 и /dev/console определялись для него по ходу пьесы в зависимости от текущей активной консоли, а вот /dev/tty оставался неизменным.

Не спешим покидать директорию /dev. Здесь еще чуть больше дюжины любопытных объектов: /dev/vcsX (virtual console screen) и /dev/vcsaX (virtual console screen with attributes). Еще один опыт: перемещаемся на tty5 и оставляем какие-нибудь следы своего пребывания, затем переходим в любую другую консоль (пусть ее номер 3), делаем «cat» на /dev/vcs5 и видим именно то состояние консоли 5, в каком мы оставили ее несколько секунд назад. При этом, соответственно, /dev/vcs3 и /dev/vcs (а также /dev/vcsa) относятся к консоли 3, на которой мы находимся в данный момент.

Понимаем, что /dev/vcsX — не что иное как омут памяти устройство виртуальной памяти консоли, позволяющее нам без потерь перемещаться между экземплярами tty. В паре с ним — /dev/vcsaX, который предоставляет базовые сведения о состоянии экрана: цвета, различные атрибуты (напр. мерцание), текущее положение курсора, конфигурацию экрана (количество строк и столбцов). Подытожим увиденное схемой:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

ВИД СВЕРХУ ЛУЧШЕ

Теперь остановимся с изучением зоологии tty на какое-то время и перейдем к самой tty-абстракции, частью которой и являются наши виртуальные устройства. Посмотрим на общую структуру tty-комплекса и выделим три компонента:

При этом процессы от первого tty продолжают работать: считывают команды с файла своей виртуальной консоли, пишут в этой файл, но – так как они оторваны от «кресла» – не получают никаких событий (те же ^C и ^Z) и – так как физические устройства «уехали» вместе с «креслом» – могут только накапливать свой «вывод» в буфере, чтоб отправить его на монитор, как только «кресло» вернется.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

ПУТЕШЕСТВИЕ К ЦЕНТРУ ЗЕМЛИ

Да, сверху всё смотрится вполне презентабельно. Но тебе, %username%, вероятно, хочется увидеть, как трехуровневое взаимодействие tty-компонентов реализовано непосредственно в коде? За ответом придется опуститься с небес на землю, даже лучше сказать – под землю, в недра исходного кода Ubuntu (работать будем с ядром версии 4.4).

Сделаем упреждающий ход – разберемся, через какие структуры происходит связывание tty-абстракции в единое целое.

Во-первых, это «tty_struct», у которой есть поле «tty_ldisc» (это структура методов драйвера 2-ого слоя), поле «tty_driver» (это драйвер 3-ого слоя) и тут же «tty_operations» (это структура методов драйвера 3-ого слоя, ради удобства вынесенная прямо в «tty_struct»).

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

То есть, «tty_struct» обеспечивает доступ к слоям TTY_LINE_DISCIPLINE и TTY_DRIVER. Получили к ней доступ – 2/3 стека tty-абстракции, считай, перед нами. Теперь нам нужно понять, как осуществляется переход от файлов виртуальных устройств к этой самой структуре. Ответ прост: у структуры «tty_file_private» как раз есть поле типа «tty_struct». Следовательно, обращаясь к файлу виртуального устройства на 1-ом уровне, мы с легкостью получаем доступ к уровням повыше.

Пока пазл складывается, но нам этого недостаточно. Продебажим ядро (с помощью qemu и cgdb) и рассмотрим backtrace вывода (эхо) единичного символа, введенного пользователем с клавиатуры:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Итак, мы на I уровне tty-стека. Происходит системный вызов «write», который на нашем tty обрабатывается функцией «tty_write». В нее передаются указатель на структуру файла виртуального устройства и буфер с символом. В функции «tty_write» по файлу происходит получение экземпляра «tty_struct». Принимая игру, «tty_struct» первым делом вызывает драйвер TTY_LINE_DISCIPLINE – «tty_ldisc», место которой по умолчанию занимает N_TTY. Первый уровень пройден!

N_TTY принимает эстафету: в свою очередь вызывает метод «n_tty_write», а затем передает буфер функции «output_process_block», которая, удостоверившись, что мы ввели не символ позиционирования каретки, просит «tty_struct» позвать «tty_driver». Всё верно, мы переходим на III уровень.

«Tty_struct» успешно играет роль посредника, и вот – уже запускается метод «con_write» tty-драйвера по имени «console_driver». Драйвер III-его уровня рад бы выполнить своё дело, но он один, консолей много – с какой надо работать? На помощь опять приходит «tty_struct» и вручает драйверу нужный экземпляр структуры «vc» (она отвечает за состояние своей конкретной консоли и содержит её клавиатурные, экранные установки, а также набор методов графического отображения).

«Сonsole_driver» блокирует консоль и призывает «vc_data» выполнить наконец эхо символа. «Vc_data» с ужасом осознает: к ней обратились не ради вопроса о самочувствии вверенной ей консоли, а ради действия. Это значит лишь одно: пора звать на помощь методы «consw», которые в нашем случае представляет VGA (при другой конфигурации ядра это может быть, например, framebuffer). И точно – VGA споро берется за дело, скрывает курсор, печатает символ, при необходимости прокручивает экран или переходит на новую строку, перемещает и отображает курсор. «Vc» выдыхает: «console_driver» работу принял и консоль разблокировал. Можем выдохнуть и мы, ведь все три уровня успешно пройдены, каждый компонент свою миссию выполнил.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

3. KEEP AN EYE ON VIRTUAL TERMINAL

Но это еще не всё: пришло время познакомиться с представителями еще одного класса обитателей /dev – c эмуляторами терминалов. Это те самые xterm или gnome-terminal, которые мы запускаем с консоли, оснащенной графической оболочкой, используя, например, Ctrl-Alt-T или Ctrl-Shift-T.

Живут они в отдельном вольере /dev/pts (=pseudo-terminal slave) и представляют собой файлы под номерами 0, 1, 2 и т.д. Выполняем ps в текущем терминале и видим – мы на /dev/pts/1. Нажимаем Alt+5 – перемещаемся на наш четвертый по порядку открытия терминал, файл виртуального устройства которого /dev/pts/20. На любом терминале нас встречает bash, с каждым терминалом связано своё множество процессов. Пока никаких сюрпризов.

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Но заметим: /dev/pts/X создаются динамически, запускаются на одной консоли /dev/tty7, не требуют запуска login и самое интересное – здесь нет правила «кресла»: мы можем открыть несколько виртуальных терминалов и одновременно наблюдать, как происходит работа на каждом из них. В очередной раз у %username% может появиться повод для сомнений: сохраняется ли и здесь принцип tty-абстракции и как в этот принцип вписывается устройство — slave, которым, вероятно, управляет некое устройство — master?

Новый объект не заставляет себя ждать: в единственном экземпляре файл ptmx лежит в той же директории /dev (На самом деле он может быть и не один: если запущено более одной консоли с графической оболочкой). По ману, при открытии /dev/ptmx создается подчиненная часть псевдотерминала /dev/pts/X, связанного со своей ведущей частью «ptm» (обращение происходит через дескриптор файла, но реальный файл не создается). Затем «ptm» передается в функции grantpt и unlockpt, и после всего этого можно открывать непосредственно /dev/pts/X, который будет вести себя точно так же, как виртуальная консоль (за исключением описанных выше особенностей).

Для нас в ключе идеи tty-абстракции это означает следующее: когда пользователь хочет запустить эмулятор терминала, XServer обращается к /dev/ptmx с просьбой создать виртуальное устройство /dev/pts/X. Могущественный «мультиплексер» /dev/ptmx любезно делает это, закрепляет файл устройства за экземпляром терминала и … /dev/pts/X занимает место /dev/ttyX, ему назначается драйвер слоя TTY_LINE_DISCIPLINE, его ласково принимает в свои объятия TTY_DRIVER. Стек над /dev/pts/X принимает уже привычный вид. Задача изучения механизма эмулятора терминала плавно сводится к предыдущей истории с виртуальной консолью, однако его подробное изучение требует отдельной статьи (которая входит в планы на будущее!).

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

4. LET’S PLAY WITH TTY LINE DISCIPLINE

На секунду вспомним tty-«палеозой»: было время, когда слой TTY_LINE_DISCIPLINE и отдельным слоем-то не был и полноценной современной функциональностью не обладал. Попробуем оценить вес перемен, произошедших с тех пор.

Для начала убедимся, что мы действительно имеем дело с N_TTY:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Всё познается в сравнении, поэтому действуем кардинально и с помощью stty отключаем все полезные фичи N_TTY:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Результат наглядно демонстрирует область ответственности N_TTY, без которой вывод не форматируется, ввод не отображается. Причем, если мы откроем новый терминал, то убедимся в целостности и невредимости его LINE_DISCIPLINE. Полученный эффект наталкивает на мысль: мы точно знаем, какой компонент обрабатывает весь наш ввод, мы можем модифицировать его для каждого виртуального терминала в отдельности и, помнится, мы слышали, что этот компонент можно заменить, загрузив свой модуль.

К сожалению, N_TTY сама по себе является частью ядра. Поэтому за основу возьмем другие драйверы слоя LINE_DISCIPLINE, предусмотренные в Linux и загружаемые в виде модулей. По их образу и подобию модифицируем файл исходного кода n_tty.c:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Теперь добавим какой-нибудь функционал, отличающий нашу линию дисциплины от оригинальной. Помним, что именно TTY_LINE_DISCIPLINE обрабатывает служебные последовательности, поэтому грех не поколдовать на этом поприще. Для этого открываем функцию «n_tty_receive_char_special», в которой TTY_LINE_DISCIPLINE проверяет, не является ли введенные символы специальными и при нахождении оных посылает соответствующий сигнал. Для примера поменяем местами сигналы, генерирующиеся для Ctrl+Z и Ctrl+С:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

После этого получим из нашего модифицированного файла непосредственно модуль ядра our_ldisc.ko. Загрузим его, убедимся, что загрузка произошла успешно. Проверим, что «our_modyfied_ldisc» действительно зарегистрировалась как TTY_LINE_DISCIPLINE. Откроем терминал и посмотрим номер pts. После этого назначим наш драйвер ответственным за слой TTY_LINE_DISCIPLINE у /dev/pts/X:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Настроим новую линию дисциплины с помощью команды «stty echo cooked» — теперь терминал работает в привычном для нас режиме. Запустим тестовую программу с вечным циклом и сравним эффект Ctrl+Z и Ctrl+С:

Tty linux что это. Смотреть фото Tty linux что это. Смотреть картинку Tty linux что это. Картинка про Tty linux что это. Фото Tty linux что это

Мы добились желаемого: генерация сигналов переопределена на уровне драйвера слоя TTY_LINE_DISCIPLINE в индивидуальном порядке для одного эмулятора терминала! Есть поле для работы фантазии: от фокусов с обработкой служебных последовательностей до кастомизированного фильтра команд.

В ЗАКЛЮЧЕНИЕ

Теперь для тебя, %username%, тайны виртуальных консолей и эмуляторов терминала – больше не тайны, беспорядочная магия – не магия, а технология, прошедшая немалый путь, чтоб создать гибкую подсистему tty, а телетайп – не артефакт древности, а изобретение (кстати говоря, наше, отечественное), без потомков которого современный компьютер представлять как-то не хочется.

Мы любим рассказывать увлекательные истории. Хочешь послушать их вживую? Приходи на «Очную ставку» NeoQUEST-2017, там тебя ждёт множество интересных докладов: от «железа» до криптографии! Вход свободный при регистрации на сайте.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *