В systemd предложено включить средства для замены консоли, agetty и /bin/login
В частности, в будущем предлагается перейти к конфигурации без встроенной в ядро поддержки виртуальных терминалов (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
|
0 | Tweet | Нравится |
|