В systemd предложено включить средства для замены консоли, agetty и /bin/login

28 ноября 2013 года

Дэвид Херрманн (David Herrmann), автор проекта kmscon (реализация консоли в пространстве пользователя) опубликовал серию патчей, позволяющих обеспечить работу окружения на базе systemd в системах с ядром, собранным без поддержки виртуальных терминалов (CONFIG_VT=n). Из дальнейших планов отмечена интеграция в системный менеджер systemd компонентов с реализацией системной консоли, загрузочной заставки и приглашения входа в систему.

В частности, в будущем предлагается перейти к конфигурации без встроенной в ядро поддержки виртуальных терминалов (CONFIG_VT=n). Организовать работу системы в режиме CONFIG_VT=n можно уже сейчас, например, с использованием kmscon в качестве консоли и systemd-logind для переключения сессий, требуются лишь незначительные доработки и реализация компонентов для работы в случае невозможности сразу перейти в полноценный графический интерфейс.

Для воплощения идеи в жизнь предложена специальная библиотека sd-gfx, которая унифицирует поддержку всех операций с графикой, экраном и шрифтами, используемых при инициализации и запуске системы. По сути, библиотека sd-gfx продолжает развитие kmscon и заменяет собой код для работы с виртуальными терминалами, ранее реализованный на уровне ядра. На базе данной библиотеки планируется подготовить несколько новых компонентов systemd:

  • systemd-consoled - эмулятор терминала для замены штатных консолей (kernel-console, linux-console), предоставляемых при сборке ядра с опцией CONFIG_VT=y;
  • systemd-splashd - реализаций бесшовной графической заставки, отображаемой в процессе загрузки. Отмечается, что splashd не претендует на замену Plymouth и ограничится только интерфейсом для ввода пароля для шифрованного корневого раздела в условиях сборки ядра без поддержки виртуальных терминалов;
  • systemd-welcomed - экран приглашения входа в систему, заменяющий собой agetty и /bin/login. После входа пользователя будет задействован systemd-consoled.
  • systemd-er - урезанная версия консоли systemd-consoled для экстренных ситуаций, таких как необходимость выполнения операций при выявлении сбоя на ранних этапах загрузки. В systemd-er отсутствует поддержка управления пользовательскими сеансами, разделения привилегий и т.п.

В качестве основных проблем с поддержкой виртуальных терминалов на уровне ядра отмечается необходимость в поддержании дополнительных компонентов в ядре, усложняющих реализацию, дублирующих подсистемы пользовательского уровня, негативно сказывающихся на безопасности и надёжности (ошибка в коде терминала может привести к уязвимостям и крахам на уровне ядра). В частности, для обеспечения работы текстовых консолей в ядре требуется поддержка отдельной прослойки для управления клавиатурой и обработки ввода (упрощённый аналог XKB), жестко заданные фильтры для подсистемы hotplug, средства для выполнения графических операций, код для отображения шрифтов и обработки курсора, код эмуляции терминала и т.п.

Из доводов в пользу поддержания кода работы с терминалом в ядре упоминаются поддержка отладки на начальном этапе загрузки, вывод отчётов о крахах и отладка через kdb. В настоящее время актуальность данных доводов поставлена под вопрос, так как первые две задачи успешно могут быть решены через модули ядра fblog/drmlog, а для решения третьей задачи можно использовать kgdb или специально собрать ядро в режиме "CONFIG_VT=y".

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «В systemd предложено включить средства для замены консоли, agetty и /bin/login», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.