В системах UNIX и Linux для реализации графического пользовательского интерфейса используется клиент-серверная модель. Более известная как система X Window. Суть её работы состоит в том, что пользователи, входя в систему, регистрируют свои дисплеи для X-сервера. Используя для этого специальный компонент системы X Window – диспетчер дисплеев или менеджер дисплеев. В настоящее время существует множество графических оболочек (GNOME, KDE и т. д.). Для которых реализована собственная модель, основанная на исходной модели X Window. И для каждой из этих графических сред существуют свои диспетчеры дисплеев. Незначительно отличающиеся по функционалу и внешнему виду. Однако во всех случаях схема, по которой работает диспетчер дисплеев идентична. За исключением некоторых несущественных особенностей. Поскольку всю основную работу по обеспечению графического пользовательского интерфейса (GUI) проделывает диспетчер дисплеев, то именно на этом компоненте X Window системным администраторам стоит более пристально заострять внимание.
Общие сведения о диспетчере дисплеев
Когда пользователь включает компьютер, то первое, что он видит на экране — это диспетчер дисплеев (далее ДД). И он является клиентской составляющей в модели системы X Window. Сам же ДД может запускаться разными способами: сценариями запуска (например сценарием .login), а также вручную. Часто системные администраторы прибегают ко второму варианту. Исключив из автозапуска ДД и выполняя команду startx в командной оболочке. Сама же команда startx является удобной «обёрткой» для утилиты xinit, которая в свою очередь служит для запуска X-сервера. Исходя из этого, назначение ДД в системе X Window становится более очевидным.
Как уже говорилось, для разных графических сред существуют свои реализации ДД. Среди самых распространённых: gdm для GNOME и kdm для KDE. Которые являются наследниками исходного xdm из оригинальной реализации X Window. Главной особенностью ДД является его способность регистрировать и аутентифицировать дисплеи пользователей (клиентов) на сторонних (но совместимых) X-серверах. Для чего (и не только) используется протокол XDM (XDMCP).
Конфигурационные файлы, определяющие конфигурацию работы ДД хранятся в каталоге /etc/X11 в подкаталоге xdm (gdm или kdm, в зависимости от используемой графической оболочки).
Порядок работы диспетчера дисплеев
Прежде всего ДД (xdm, gdm, kdm и другие) выводят приглашение ввести пользовательские имя и пароль. Аутентификация/регистрация обычно проводится при помощи установленных в системе модулей PAM – подключаемых модулей аутентификации. Интеграция ДД в согласованную работу PAM поддерживается файлом конфигурации /etc/pam.d/xdm (gdm или kdm). Если в системе используется сразу несколько графических сред. То ДД на экране регистрации обычно предоставляет выбрать нужную. Вместе с тем среди прочих вариантов обычно доступна аварийная опция. Позволяющая ДД произвести регистрацию\авторизацию пользователя в упрощённом безопасном режиме на случай, когда другие варианты неработоспособны.
После того как пользовательский (клиентский) дисплей авторизован. ДД выполняет инструкции из сценария Xsession, находящегося всё в том же каталоге /etc/X11. Этот сценарий имеет общесистемное значение и отвечает за правильные запуск и настройку нового сеанса пользователя, для которого задаются стандартные настройки переменных среды. Приложений, локализации, часовых поясов и т. д. Далее сценарий Xsession выполняет запуск уже пользовательского сценария ~/.xsession. Который в свою очередь уже запускает менеджер окон используемой графической среды. Панели задач, виджеты рабочего стола в соответствии с пользовательским оформлением, а также некоторые другие программы (приложения). Файл ~/.xsession может иметь другое имя, в зависимости от используемой в системе графической среды.
Возможные неполадки
Пользовательский сеанс выполняется, а сам пользователь остаётся в системе до тех пор, пока выполняется сценарий ~/.xsession. А по его завершении управление снова передаётся ДД, который предлагает снова ввести имя пользователя и пароль для нового сеанса. Дело в том, что как уже отмечалось выше, сценарий ~/.xsession запускает некоторые процессы. В том чиле и диспетчер окон (не путать с диспетчером дисплеев — ДД) как самый последний процесс (или один из самых последних). Все процессы кроме диспетчера окон запускаются в фоновом режиме. Потому как если все процессы будут фоновыми, сценарий ~/.xsession завершится. Тем самым завершится и сеанс пользователя. Одной из распространённых проблем при запуске графических сред является предоставление процессу диспетчера окон приоритета недостаточного уровня (например фонового). Это может быть сбой в системе, ошибка в сценариях запуска и т. д.
Конечно, проблема может быть и в другом. Если это так, то стоит попытаться запустить сеанс без оригинального файла ~/.xsession (переместив его временно в другое место). Постепенно дополняя новый пустой файл ~/.xsession очередной строкой из оригинального. Таким образом можно отследить проблемную инструкцию в сценарии. Также следует изучить содержимое файла ~/.xsession-errors. В нём содержатся результаты выполнения инструкций из сценария ~/.xsession.
Стоит также всегда помнить об аварийной опции для аутентификации дисплеев. Она специально предусмотрена в большинстве систем для гарантированного запуска упрощённого пользовательского сеанса. В котором открывается только окно командной оболочки. Таким образом обычный пользователь может самостоятельно исправить неполадки, если они связаны с пользовательской конфигурацией и его сценариями запуска.
Как можно видеть, диспетчер дисплеев — это ключевой компонент в организации сеанса пользователя. Когда в системе используется система X Window, т. е. графическая среда. Конечно, без других её компонентов GUI не будет работать и выглядеть корректно и полноценно. Однако как показывает практика, именно умение конфигурировать и устранять неполадки, связанные с работой диспетчера дисплеев для системных администраторов является одной из немаловажных задач.