Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Альтернативная энергия



Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

Исследуем процесс загрузки Linux

(C) В.А.Костромин, 2007
(версия файла от 20.08.2007 г.)


Назад Оглавление Вперед

Этап 8: Запуск процессов getty и login

Теперь давайте вспомним содержание раздела 5 настоящих заметок, где было рассказано, в каком порядке процесс init выполняет инструкции из файла /etc/inittab и приведен пример такого файла. Обратите внимание на то, что строки, в которых объявляется вызов скрипта rc помечены ключевым словом wait в третьем поле (поле action). Это означает, что init будет дожидаться, пока не завершиться выполнение скрипта rc, не предпринимая других действий.

Когда выполнение rc N завершится, init будет выполнять команды, заданные в строках с ключевым словом respawn для заданного уровня выполнения. Программы, запущенные с условием respawn будут повторно запускаться после завершения.

Например, в Red Hat для пятого уровня выполнения в файле /etc/inittab обычно прописаны следующие строки:

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

Первые 6 из этих строк обеспечивают запуск шести виртуальных консолей, доступ к которым (или переключение между которыми) пользователь Linux получает с помощью комбинаций клавиш ALT-F1 .... ALT-F6. Для этого init порождает процессы, именуемые getty-процессами (от "get tty" — получить терминал), и следит за тем, какой из процессов открывает какой терминал. Каждый getty-процесс устанавливает свою группу процессов, используя вызов системной функции setpgrp, открывает отдельную терминальную линию и обычно приостанавливается во время выполнения функции open до тех пор, пока машина не получит аппаратную связь с терминалом.

Когда функция open возвращает управление, getty-процесс (демон getty) отображает на экране содержимое файла etc/issue и запускает программу login (регистрации в системе), которая требует от пользователей, чтобы они идентифицировали себя указанием регистрационного имени и пароля.

Если пользователь не смог успешно зарегистрироваться, программа регистрации через определенный промежуток времени завершается, закрывая открытую терминальную линию, а процесс init порождает для этой линии следующий getty-процесс, открывающий терминал, вместо прекратившего существование (помните - ключевое слово respawn).

Последняя строка в приведенном выше примере, обозначенная идентификатором x, задает регистрацию пользователя в графическом режиме. Заметьте, что эта строка работает только на 5-ом уровне выполнения, поскольку другие уровни в Red Hat не предполагают использования графики. Но рассмотрение варианта загрузки в графическом режиме мы отложим до отдельного раздела настоящих заметок (или, скорее, отдельного приложения).

Как уже отмечалось где-то выше, вовсе не обязательно открывать 6 терминальных линий. Большинству пользователей более чем достаточно трех таких виртуальных терминалов. Тем более, надо иметь в виду, что запуск каждого лишнего процесса - это расходование системных ресурсов, в первую очередь - памяти. Чтобы сократить число открываемых терминальных линий, достаточно закомментировать "лишние" строки в файле /etc/inittab, как это было показано в листниге 10.


Назад Оглавление Вперед


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

Комментарии отсутствуют