Группа разработчиков из проекта Ubuntu планирует добавить в систему инициализации и контроля за выполнением системных сервисов Upstart механизм управления пользовательскими сеансами, напоминающий уже реализованную в systemd функциональность. Леннарт Поттеринг (Lennart Poettering), создатель systemd, написал по этому поводу заметку, раскрывающую проблемы с переходом десктоп-окружений на новые подсистемы управления пользовательскими сеансами.

Уже на протяжении долгого времени, в systemd присутствует возможность использования не только в качестве общесистемного процесса init (работает от имени root), но и в качестве ведущего процесса пользовательского сеанса (запускается от имени пользователя). Учитывая определенное сходство процессов инициализации системы и пользовательского сеанса (которые сводятся, по сути, к запуску определенного набора фоновых процессов), эти задачи могут быть успешно решены одним и тем же кодом.

В настоящее время, практически все десктоп-окружения поддерживают свои собственные, несовместимые между собой системы инициализации пользовательских сеансов. Переход на единый механизм позволил бы значительно упростить и унифицировать соответствующие процедуры. Именно из этих соображений в systemd была добавлена данная функциональность. Однако разработчики systemd не планировали в обозримом будущем форсировать такой переход, чтобы не создавать трудностей разработчикам десктоп-окружений — в настоящее время многие дистрибутивы используют системы инициализации, отличные от systemd, и для них пришлось бы поддерживать старый код управления сеансами, что свело бы к нулю все выгоды и создало бы ряд проблем совместимости.

Однако, разработчиков Upstart такие проблемы не пугают. В их планы входит реализация похожей на systemd функциональности в пространстве пользователя, включая запуск ведущего процесса сеанса от имени соответствующего пользователя, и делегирование пользователю возможностей управления собственным сеансом (добавление собственных конфигурационных файлов для служб, запуск и остановка служб соответствующими командами). Также планируется реализовать некоторые побочные функции — например, встроенный в systemd механизм реагирования на события файловой системы (inotify).

Разумеется, для обеспечения требуемой функциональности требуется модифицировать и код десктоп-окружений. Разработчики Upstart пока не уточняют, каким образом они планируют это делать — поддерживать патчи на уровне дистрибутива или продвигать их в апстрим. В любом случае, для запуска в Ubuntu во все десктоп-окружения будет необходимо интегрировать альтернативный механизм управления пользовательским сеансом.

Леннарт Поттеринг отмечает, что разработчики из Canonical сознательно идут на раскол, стремясь создать вокруг Ubuntu собственную экосистему, изолированную от мира GNU/Linux (хотя и основанную на его компонентах), как это уже сделали разработчики Google, создавая Android. Первым таким шагом стало создание Unity — десктоп-окружения, которое работает только и исключительно в Ubuntu. Следующим шагом, очевидно, будет жесткая привязка всех поддерживаемых пользовательских окружений к механизмам, специфичным для Upstart.

Стоит заметить, что это далеко не первый случай реализации в Upstart возможностей, похожих на функции systemd. Например, большинство нововведений ветки 0.9, включая возможность блокировки запуска службы, создание override-конфигов, поддержку inetd-style сокетов, были скопированы с systemd. В последующих версиях разработчики продолжили эту практику — в качестве примера можно привести поддержку перезапуска процесса init на лету, с сохранением состояния всех служб. Любопытно, что именно эти разработчики, в частности, Steve Langasek, весной этого года блокировали инициативу перехода Ubuntu на systemd, мотивируя это тем, что дистрибутив еще не оправился от проблем после перехода с sysvinit на Upstart.

В то же время, на недавно прошедшем саммите разработчиков Ubuntu было объявлено о начале работ по интеграции в Ubuntu ряда компонентов systemd, включая hostnamed, localed и timedated (демонов, осуществляющих авторизацию доступа к общесистемным настройкам, а также ответственных за информирование приложений об изменении этих настроек). Ранее эта работа выполнялась службой ubuntu-system-settings.

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