В 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".
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.