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

Дэвид Херрманн (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".

Источник:
http://www.opennet.ru/opennews/art.shtml?num=38543

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>