- Getty linux что это
- Linux.yaroslavl.ru
- О getty_ps
- О mgetty
- О agetty
- Текстовые терминалы в Linux
- Введение в Getty
- Getty выходит после входа в систему (и может возродиться)
- Если getty запускается из командной строки: программы останавливаются
- agetty (может быть назван getty)
- Автоопределение проблем паритета в Agetty
- 8-битные байты данных (плюс четность)
- getty (часть getty_ps)
- Mgetty
Getty linux что это
НАЗВАНИЕ
getty — установка типа терминала, его характеристик и режима работы с линией
ОПИСАНИЕ
Программа getty запускается процессом init(1M) и обслуживает вторую стадию процедуры входа пользователя в систему (init — getty — login — shell). Программа getty может быть выполнена только суперпользователем, то есть процессом, имеющим в качестве идентификатора пользователя root. Сначала getty выводит на экран поле приглашения из используемой строки файла /etc/gettydefs, затем читает входное имя пользователя и запускает программу login(1), передавая ей это имя в качестве аргумента. Во время чтения имени getty пытается приспособиться к типу и скорости терминала, используя аргументы командной строки.
Аргументам программы getty приписан следующий смысл:
линия Имя терминальной линии, к которой программа getty должна подключиться; используется как имя файла в каталоге /dev. Этот файл открывается на чтение и запись.
-h Если опция -h не указана, то getty принудительно освободит линию, установив скорость передачи равной нулю, и только затем установит подразумеваемую или заданную скорость.
-t время_ожидания Программа getty завершится, если файл, соответствующий линии, будет успешно открыт, но в течение указанного времени_ожидания (в секундах) в линию не поступит ни одного символа.
скорость Необязательный аргумент — метка описания скорости и характеристик терминала в файле /etc/gettydefs. Это описание дает getty информацию о начальной скорости, о виде приглашения при входе в систему, о начальных характеристиках терминала, а также о том, какую скорость попробовать, если данная не удовлетворила пользователя (о чем он сообщил, нажав клавишу прерывания). Подразумеваемая скорость — 300 бод.
тип_терминала Необязательный аргумент — цепочка символов, задающая тип терминала, подсоединенного к линии. Программа getty распознает только один тип — none (который является и подразумеваемым), что означает любой терминал, неизвестный системе. Чтобы тип_терминала играл какую-либо роль, в систему должны быть включены подпрограммы обслуживания виртуальных терминалов. Они доступны, но по умолчанию в систему не включаются.
режим_работы_с_линией Необязательный аргумент — цепочка символов, задающая режим работы с линией. Теоретически режимы могут быть разными, но в настоящее время доступен только один, подразумеваемый режим LDISC0.
-c файл Опция проверки корректности. Указанный файл просматривается, как если бы это был файл /etc/gettydefs, и результаты просмотра поступают на стандартный вывод. Если при этом обнаруживаются какие либо ошибки, то выдаются соответствующие сообщения. Если строки файла корректны, то выводятся значения флагов [см. ioctl(2) по поводу их интерпретации]. Заметим, что некоторые значения добавляются к флагам автоматически.
Если не указан ни один из необязательных аргументов, программа getty устанавливает скорость в 300 бод, бесструктурный режим (реакция на каждый символ), без отображения вводимых символов, без контроля четности, символы перевода строки будут заменяться последовательностью (возврат каретки, переход к новой строке) и символы табуляции будут заменяться пробелами при выдаче их на стандартный вывод. Затем getty выдает приглашение и приступает к посимвольному вводу входного имени пользователя. Если будет получен символ с нулевым кодом (или произойдет нарушение протокола), делается вывод, что пользователь нажал клавишу прерывания. В результате getty произведет попытку использовать следующее значение скорости из серии доступных значений, определенных в файле /etc/gettydefs.
Ввод входного имени пользователя должен завершаться нажатием клавиши перевода строки или возврата каретки. В последнем случае устанавливается соотвестствующая трактовка системой символа возврата каретки [см. ioctl(2)].
Имя пользователя просматривается на предмет наличия в нем малых букв; если таковых нет и имя не пусто, система в дальнейшем будет преобразовывать все большие буквы в малые.
Наконец, программа getty выполняет системный вызов exec(2) и заменяется программой login с входным именем пользователя в качестве аргумента. После имени пользователя могут быть введены дополнительные аргументы, которые будут переданы программе login, и та поместит их в окружение [см. login(1)].
Источник
Linux.yaroslavl.ru
getty — программа, которая обслуживает процесс входа в систему, когда вы регистрируетесь на Unix машине. Вы должны будете использовать getty, если хотите звонить модемом на вашу Linux машину. Вы не должны использовать getty, если вы хотите только звонить наружу вашим модемом. Имеются три версии, которые обычно используются в Linux: getty_ps, mgetty и agetty. Синтаксис для этих программ отличается, так что убедитесь, что вы проверили и удостоверились, что вы используете правильный синтаксис для того getty, которым пользуетесь.
О getty_ps
Большинство дистрибутивов приходит с установленным пакетом getty_ps. (Debian использовал agetty, но теперь использует mgetty). Он содержит две программы: getty — используется для консоли и устройств терминала, и uugetty для модемов. Я использую эту версию getty, так что на него я и буду ориентироваться.
О mgetty
mgetty — версия getty, главным образом для использования с модемами. Она может использоваться для аппаратных терминалов, но документация приблизительно на 99%, связана с модемами. В дополнение ко входу в систему по телефонной линии, mgetty также обеспечивает поддержку факсов и автоматическое обнаружение PPP. Документация по mgetty (поставляется в формате texinfo) достаточно хороша, и не нуждается в дополнении.
Пожалуйста, обратитесь к ней для инструкций по установке. Вы можете найти последнюю информацию о mgetty по адресу http://www.leo.org/
О agetty
Agetty — третья разновидность getty. Это простая полнофункциональная реализация getty, которая больше подходит для виртуальных консолей или терминалов, чем для модемов.
setserial — программа, которая позволяет вам смотреть и изменять различные атрибуты последовательного устройства, включая адрес порта, прерывание и другие опции последовательного порта. Вы можете посмотреть версию вашей копии этой программы, запустив setserial без параметров. Если параметр — /dev/ttyS1, и т.д., то вы увидите некоторую информацию об этом порте.
Когда ваша Linux система загружается, настраиваются только ttyS<0-3>, используя значения по умолчанию IRQS 4 и 3. Так что, если у вас есть любые другие последовательные порты, обеспеченные другими платами или если ttyS <0-3>имеют необычный IRQ, то вы должны использовать setserial, чтобы сконфигурировать эти последовательные порты. Полный список опций есть в man.
Источник
Текстовые терминалы в Linux
14.1 Getty (используется в/etc/inittab)
Введение в Getty
Чтобы запустить процесс входа в систему через последовательный порт (и подключенный к нему терминал) при запуске компьютера (или переключении уровней запуска), в файл/etc/inittab должна быть вставлена команда getty. Запуск getty из командной строки может вызвать проблемы (см. Если getty запускается из командной строки: программы останавливаются, чтобы понять почему). Getty получает TTY (терминал) собирается. Каждому терминалу нужна своя команда getty. В каждом файле/etc/inittab также есть хотя бы одна команда getty для консоли. Найдите это и поместите команды getty для реальных терминалов рядом с ним. Этот файл может содержать примеры строк getty для текстовых терминалов, которые закомментированы, поэтому все, что вам нужно сделать, это раскомментировать их (удалить начальный #) и изменить несколько аргументов.
Допустимые аргументы зависят от того, какой getty вы используете:
Для getts с прямым подключением лучше всего подходят два:
- agetty (иногда его называют getty): очень легко настроить. Нет конфигурационных файлов. Смотри agetty
- getty (часть getty_ps)
Два gettys лучше всего подходят для коммутируемых модемов (избегайте для напрямую подключенных терминалов):
- mgetty: лучший для модемов; работает и для терминалов, но уступает
- uugetty: только для модемов; часть пакета getty_ps
Простые gettys для использования, если вы не используете настоящий текстовый терминал. Большинство пользователей Linux используют один из них на своем мониторе:
Ваш дистрибутив Linux может поставляться с ps_getty или agetty для текстовых терминалов. Некоторые дистрибутивы не предоставляют ни того, ни другого. К сожалению, они часто просто называют его «getty», поэтому вам может понадобиться определить, какой из них у вас есть, так как аргументы, которые вы указали после него в/etc/inittab, отличаются. Debian использует agetty (в пакете util-linux). RedHat и Fedora использовали ps_getty, который находится по адресу: ps_getty
В качестве последнего средства, чтобы попытаться определить, какой у вас getty, вы можете проверить его исполняемый код (обычно в/sbin). ps_getty имеет/etc/gettydefs, встроенный в этот код. Чтобы найти его, перейдите в/sbin и введите:
strings getty | grep getty
Если getty на самом деле agetty, то приведенное выше ничего не даст. Однако, если вы наберете agetty:
getty -h
должны отобразить опции [-hiLmw].
Если у вас нет нужного вам getty, проверьте другие дистрибутивы и программу alien для конвертации пакетов RPM и Debian. Исходный код может быть загружен с Getty Software.
Если вы не используете линии управления модемом (например, если вы используете только минимальное количество из 3 проводников: передача, прием и общая сигнальная земля), вы должны сообщить об этом getty, используя флаг «local». Формат этого зависит от того, какой getty вы используете.
Getty выходит после входа в систему (и может возродиться)
После входа в систему вы заметите (используя «top», «ps -ax» или «ptree»), что процесс getty больше не выполняется. Что с ним случилось? Почему getty перезапускается снова, если ваша оболочка убита? Вот почему
После того как вы введете свое имя пользователя, getty берет его и вызывает программу входа в систему, сообщая вам ваше имя пользователя. Процесс getty заменяется процессом входа в систему. Процесс входа запрашивает ваш пароль, проверяет его и запускает любой процесс, указанный в вашем файле паролей. Этот процесс часто является оболочкой bash. Если это так, bash запускается и заменяет процесс входа в систему. Обратите внимание, что один процесс заменяет другой, и что процесс оболочки bash изначально запускался как процесс getty. Последствия этого будут объяснены ниже.
Теперь в файле/etc/inittab getty должен возродиться (перезапуститься), если его убили. Так говорится в строке, которая вызывает getty. Но если оболочка bash (или процесс входа в систему) убита, getty респаунится (перезапускается). Зачем? Ну, и процесс входа в систему и bash являются заменой для getty и наследовать
* Указатель с текстовым терминалом
сигнальные соединения устанавливаются их предшественниками. Фактически, если вы наблюдаете детали, вы заметите, что процесс замены будет иметь тот же идентификатор процесса, что и исходный процесс. Таким образом, bash является замаскированным видом с тем же идентификатором процесса. Если bash убит, это как если бы getty был убит (хотя getty больше не работает). Это приводит к возрождению getty.
При выходе из системы все процессы на этом последовательном порте уничтожаются, включая оболочку bash. Это также может произойти (если включено), если сигнал зависания отправляется на последовательный порт при падении напряжения DCD модемом. Выйти или выйти из DCD приведет к возрождению getty. Можно заставить getty возродиться, вручную убив bash (или войдя в систему), либо нажав клавишу k и т. Д., Находясь в «top» или с помощью команды «kill». Скорее всего, вам придется убить его с помощью сигнала 9 (который нельзя игнорировать).
Если getty запускается из командной строки: программы останавливаются
Обычно вы должны запускать getty из /etc/inittab , а не из командной строки, иначе некоторые программы, запущенные на терминале, могут быть неожиданно приостановлены (остановлены). Вот почему (перейдите к следующему разделу, если почему не важно для вас). Если вы запустите getty, скажем, для ttyS1 из командной строки другого терминала, скажем, tty1, то у него будет tty1 в качестве «управляющего терминала», хотя фактическим терминалом, на котором он работает, является ttyS1. Таким образом, он имеет неправильный управляющий терминал. Но если он запускается внутри файла inittab, то в качестве управляющего терминала он будет иметь ttyS1 (правильно).
Несмотря на то, что управляющий терминал неверен, вход в ttyS1 работает нормально (поскольку вы указали ttyS1 в качестве аргумента для getty). Стандартный вход и выход устанавливаются на ttyS1, хотя управляющий терминал остается на tty11. Другие программы, запущенные на ttyS1, могут наследовать этот стандартный ввод/вывод (который подключен к ttyS1), и все в порядке. Но некоторые программы могут ошибаться, пытаясь прочитать данные со своего управляющего терминала (tty1), что неправильно. Теперь tty1 может подумать, что эти программы выполняются в фоновом режиме с помощью tty1, поэтому попытка чтения из tty1 (это должно было быть ttyS1) приводит к остановке процесса, который пытался прочитать. (Фоновый процесс не может читать с управляющего терминала.). На экране может появиться сообщение наподобие « [1] + Остановлено ». В этот момент вы застряли, поскольку не можете взаимодействовать с процессом, который пытается связаться с вами через неправильный терминал. Конечно, чтобы уйти от этого, вы можете перейти к другому терминалу и убить процесс и т. Д.
agetty (может быть назван getty)
Пример строки в/etc/inittab:
S1 от ttyS1. 23 означает, что getty запускается при входе на уровни запуска 2 или 3. respawn означает, что если getty (или процесс, который заменил его, такой как bash) будет убит, getty автоматически запустится (респаун) снова./sbin/getty – это команда getty. -L означает Локальный (игнорировать сигналы управления модемом). -h (не показано в этом примере) включает аппаратное управление потоком (аналогично stty crtscts). 19200 – это скорость передачи данных. ttyS1 означает/dev/ttyS1 (COM2 в MS-DOS). vt102 – это тип терминала, и этот getty установит для переменной среды TERM это значение. Там нет файлов конфигурации. Введите “init q” в командной строке после редактирования getty, и вы должны увидеть приглашение для входа в систему.
Автоопределение проблем паритета в Agetty
Программа agetty попытается автоматически определить четность, установленную внутри терминала (в том числе без четности). Он не поддерживает 8-битные байты данных плюс 1-битная четность. Смотрите 8-битные байты данных (плюс четность). Если вы используете stty для установки четности, agetty автоматически сбросит его, так как изначально он хочет, чтобы бит четности проходил так, как если бы это был бит данных. Это потому, что ему нужно получить последний бит (возможно, бит четности) при вводе имени входа, чтобы он мог автоматически определять четность. Таким образом, если вы используете паритет, включите его только внутри текстового терминала и дайте agetty автоматически обнаружить его и установить на компьютере. Если ваш терминал поддерживает полученную четность, запрос на вход в систему будет выглядеть искаженным, пока вы не введете что-то, чтобы getty могла обнаружить
четности. Неправильная подсказка удержит посетителей и т. Д. От попыток войти в систему. Это может быть именно то, что вы хотите.
Иногда возникает проблема с автоматическим определением четности. Это происходит потому, что после того, как вы сначала ввели свое имя для входа, agetty запускает программу входа, чтобы завершить вход в систему. К сожалению, программа входа в систему не может определить четность, поэтому, если программе getty не удалось определить четность, то логин не сможет определить это тоже. Если первая попытка входа в систему не удалась, вход в систему позволит вам повторить попытку и т. Д. (Все с неправильной четностью). В конце концов, после нескольких неудачных попыток входа в систему (или после истечения времени ожидания) agetty снова запустится и начнёт повторять последовательности входа снова. После того, как getty снова запустится, он сможет определить паритет со второй попытки, поэтому все может работать нормально.
При неправильной четности программа входа не может правильно прочитать введенный вами текст, и вы не можете войти в систему. Если ваш терминал поддерживает полученную четность, вы по-прежнему будете видеть искаженный экран. Если getty не может определить четность, файл/etc/issue обычно выводится на экран непосредственно перед запросом, поэтому на экране могут появиться более искаженные слова.
Почему agetty не может определить четность по первой напечатанной букве? Вот пример: предположим, что он обнаруживает 8-битный байт со своим битом четности 0 (бит старшего разряда) и с нечетным числом 1-бит. Что это за соотношение? Ну, нечетное число 1 бит означает, что это нечетная четность.Но это также может быть 8-битный символ без четности. Пока нет способа определить, какой именно. Но пока мы исключили возможность даже паритета. Таким образом, обнаружение паритета происходит в процессе устранения.
Если следующий набранный байт аналогичен первому, а также исключает возможность четности, определить четность все равно невозможно. Эта ситуация может продолжаться бесконечно, и в редких случаях вход в систему будет невозможен, пока вы не измените свое имя для входа. Если agetty находит бит четности 1, он будет считать, что это бит четности, а не старший бит 8-битного символа. Таким образом, предполагается, что вы не используете метасимволы (набор старших битов) в своем имени пользователя (то есть, что ваше имя находится в ASCII).
Попасть в «цикл входа в систему» можно разными способами. Предположим, вы вводите только одну или две буквы для своего имени для входа, а затем нажимаете клавишу возврата. Если этих букв недостаточно для определения четности, то вход в систему выполняется до обнаружения четности. Иногда эта проблема возникает, если терминал не включен и/или не подключен при первом запуске agetty.
Если вы застряли в этом «цикле входа в систему», выходом из этого является несколько раз нажать клавишу возврата, пока вы не получите приглашение входа в систему getty. Другой способ – просто подождать минуту или около того для тайм-аута. Затем программа getty выведет на экран приглашение для входа в систему getty, и вы можете попытаться снова войти в систему.
8-битные байты данных (плюс четность)
К сожалению, agetty не может обнаружить это соотношение. По состоянию на конец 1999 года он не имеет возможности отключить автоматическое определение четности и, таким образом, обнаружит неправильную четность. В результате процесс входа в систему будет искажен, а четность будет установлена неправильно. Таким образом, кажется невозможным использовать 8-битные байты данных с четностью.
getty (часть getty_ps)
(В основном это из старого Serial-HOWTO Грега Ханкинса).
Для этого getty нужно как поместить записи в файл конфигурации, так и добавить запись в/etc/inittab. Вот несколько примеров записей для вашего терминала, которые вы поместили в файл конфигурации/etc/gettydefs.
Обратите внимание, что DT38400, DT19200 и т. Д. Являются просто метками и должны совпадать с тем, что вы используете в/etc/inittab.
Если вы хотите, вы можете сделать getty print интересными вещами в баннере входа. В моих примерах у меня напечатаны имя системы и серийная строка. Вы можете добавить другие вещи: [blockquote
Когда вы закончите редактирование/etc/gettydefs, вы можете проверить правильность синтаксиса, выполнив:
Убедитесь, что нет другого конфигурационного файла getty или uugetty для последовательного порта, к которому подключен ваш терминал, например (/etc/default/ndomuu‹getty.ttySN или /etc/conf.ndomuu broadcastgetty.ttySN), так как это, вероятно, помешает запуску getty на терминале. Удалите такие конфликтующие файлы, если они выходят.
Отредактируйте ваш файл/etc/inittab, чтобы он запускал getty на последовательном порту (подставляя правильную информацию для вашей среды – порт, скорость и тип терминала по умолчанию):
На этом этапе вы должны увидеть приглашение для входа в систему на своем терминале. Возможно, вам придется нажать кнопку возврата, чтобы привлечь внимание терминала.
Mgetty
«М» обозначает модем. Эта программа в основном предназначена для модемов, и с середины 2000 года потребуется перекомпилировать ее, чтобы использовать ее для текстовых терминалов (если только вы не используете аппаратное управление потоком данных, а для этого обычно требуется кабель ручной работы). Документация по непосредственно подключенным терминалам приведена в разделе «Direct» руководства: mgetty.texi.
Посмотрите на последние строки /etc/mgetty/mgetty.config для примера настройки его для терминала. Если вы не скажете «toggle-dtr no», вам будет казаться, что у вас есть модем, и вы сбросите (отмените) вывод DTR на ПК в тщетной попытке перезагрузить несуществующий модем. В отличие от других gettys, mgetty не будет подключаться к терминалу, пока кто-нибудь не нажмет какой-либо ключ этого терминала, так что вы увидите? для терминала в верхней или PS, пока это не произойдет. Журналы в/var/log/mgetty/могут содержать несколько предупреждающих сообщений, которые применимы только к модемам, которые вы можете игнорировать.
Вот пример простой строки, которую вы помещаете в/etc/inittab:
Источник