LINUX.ORG.RU

systemd 215

 ,


1

3

4 июля был представлен очередной релиз системного менеджера systemd, совмещающего в себе функции системы инициализации, ведения журнала и управления сессиями пользователей. systemd основан на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации сервисов и предоставляет удобный декларативный синтаксис для описания демонов и других сущностей. Это позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые задачи по управлению системой — от настройки подсистемы VT (systemd-vconsole-setup) до управления сетью (systemd-networkd) и профилирования загрузки (systemd-bootchart).

Большая часть изменений, вошедших в этот релиз, была направлена на поддержку т. н. stateless-систем, в которых все данные находятся на разделе /usr (монтируемом в режиме только для чтения), а корень (включая /etc) размещается на tmpfs и автоматически пересоздаётся при каждой загрузке системы. Этот функционал предполагается использовать в легковесных контейнерах, а также как средство «полного сброса» без переустановки ОС.

Изменения по поддержке stateless-систем:

  • Добавлен компонентsystemd-sysusers, способный автоматически добавлять и исправлять записи о служебных пользователях в /etc/passwd и /etc/group, основываясь на декларативных определениях из /usr/lib/sysusers.d. Наиболее важные определения уже поставляются в этом релизе.
    Этот функционал является частью работы по поддержке stateless-систем.
  • В секции [Unit] юнит-файлов добавлена директива ConditionNeedsUpdate=, инструктирующая systemd запускать юнит-файл только в том случае, если требуется обновление или перестроение директорий /etc или /var. Юнит-файлы, использующие эту директиву, вероятно, должны содержать также директиву Before=systemd-update-done.service.

    В поставку включён ряд unit-файлов, использующих этот функционал и реализующих перестроение:

    • базы данных аппаратного обеспечения udev (/etc/udev/hwdb.bin);
    • каталога сообщений journald (/var/lib/systemd/catalog/database);
    • кэша динамического компоновщика (/etc/ld.so.cache, т. е. ldconfig).
  • systemd-tmpfiles теперь поддерживает действия L+, b+, c+ и p+. Это варианты соответствующих действий без знака «+», принудительно удаляющие файл назначения.
  • В systemd-tmpfiles действия L, L+, C, C+ теперь допускают отсутствие поля «argument». В этом случае исходный файл берётся из директории /usr/share/factory/<полный путь к файлу назначения>. Разработчики ОС могут размещать в указанной директории стандартные файлы конфигурации, которые должны копироваться в системные директории при запуске системы с пустым корнем.

    В поставку включён конфигурационный файл для systemd-tmpfiles, пересоздающий наиболее важные файлы в /etc.

  • Добавлена команда systemctl preset-all, применяющая стандартные настройки включения/отключения ко всем установленным юнит-файлам.
    («presets» — функционал systemd, предназначенный для автоматического включения или отключения служб в стиле «как должно быть по умолчанию».)
    В случае запуска системы с пустым /etc, эквивалент этой команды выполняется автоматически, чтобы включить и активировать все «стандартные» службы.

    В поставку включён preset-файл, предназначенный для автоматического включения самых важных юнитов.

  • Файл /etc/os-release перемещён в /usr/lib/os-release, поскольку он является статическим и его изменение не предполагается. В директории /etc автоматически создаётся симлинк на новое местонахождение.

Прочие изменения:

  • systemd-networkd теперь включает в себя клиент DHCPv6, поддержку IPv6 Router Solicitation, а также сервер DHCPv4.
    Клиент DHCPv4 теперь поддерживает получение от сервера статических маршрутов.
    Секция DHCPv4 network-файлов была переименована в DHCP; совместимость со старым синтаксисом сохранена.
  • systemd-networkd теперь поддерживает управление виртуальными сетями VXLAN, TUN/TAP и dummy-интерфейсами.
  • systemd-networkd теперь поддерживает автоматическое назначение интерфейсам статических адресов из предварительно указанного диапазона. Этот функционал предназначен для управления большим числом однотипных соединений, таких, как veth-интерфейсы между хостом и контейнерами.
  • systemd-coredump теперь генерирует стектрейс всех потоков упавшей программы и пишет его в лог. Этот функционал реализован на библиотеке libdw из состава elf-utils.
  • systemd-coredump теперь может сохранять core-дампы на диск (/var/lib/systemd/coredump), а не в лог. По умолчанию включен режим сохранения на диск.
    Также был добавлен конфигурационный файл /etc/systemd/coredump.conf, позволяющий настраивать это поведение и некоторые другие параметры.
  • Утилита systemd-coredumpctl была переименована в coredumpctl, что означает её готовность к широкому использованию.
    Также была добавлена команда coredumpctl info, отображающая подробную информацию о зарегистрированных core-дампах.
  • journald теперь по умолчанию работает в режиме SplitMode=uid, т. е. файлы логов разделяются по UID источников сообщений.
  • Добавлена команда systemd is-system-running, позволяющая узнать общий статус запуска системы (starting, stopping, running, maintenance, degraded).
  • machined теперь экспортирует (позволяет узнать через D-Bus) версию ОС в запущенных контейнерах.
  • Команда systemctl -H (подключение к другой машине по сети) теперь позволяет заходить в контейнеры, запущенные на такой машине. Синтаксис для этого выглядит как root@host:container. Следует обратить внимание, что пользователь должен быть root, т. к. обращение к контейнеру — привилегированная операция.
  • В секции [Mount] unit-файлов добавлена директива SloppyOptions=, эквивалентная ключу -s программы mount(8). Эта директива включает режим нестрогой обработки несуществующих опций монтирования.
  • В секции [Install] юнит-файлов добавлена директива DefaultInstance=, указывающая, какую строку использовать как instance по умолчанию, если запрошено включение шаблонного юнита без явного указания instance.
  • В секции [Service] юнит-файлов добавлена директива RestartForceExitStatus=, позволяющая указать набор кодов возврата из главного процесса, при которых служба будет принудительно перезапущена (вне зависимости от значения директивы Restart=).
  • Добавлена обработка параметров ядра systemd.wants=, systemd.mask= и systemd.debug-shell. Их обработка реализована в новом генераторе systemd-debug-generator.
  • Добавлена пассивная цель cryptsetup-pre.target. Она предназначена для служб, которые должны запуститься до начала инициализации LUKS-устройств.
  • Добавлена страница документации file-hierarchy(7), содержащая рекомендации по организации иерархии файловой системы в дистрибутивах, использующих systemd. По сути, это является обновлённой версией FHS или hier(7). (Уже обсудили на ЛОРе.)
    Также была добавлена утилита systemd-path, позволяющая узнать точные (действующие) пути для некоторых пунктов из указанной документации.
  • Из поставки исключён unit-файл, периодически (по таймеру) пересоздающий кэш man-db. Он теперь будет поставляться в составе самого man-db (начиная со следующего релиза).
  • systemd.pc теперь экспортирует больше путей (в т. ч. libdir и некоторые директории файлов конфигурации второстепенных компонентов systemd).
  • В поставку включены макросы RPM для обработки файлов конфигурации systemd-sysusers, systemd-sysctl и systemd-binfmt (т. е. для их считывания и применения «на лету»).

Изменения, касающиеся udev:

  • Файлы устройств /dev/loop-control и /dev/btrfs-control теперь принадлежат служебной группе disk.
  • Функционал предсказуемых имён сетевых интерфейсов в udev теперь использует свойство dev_port (добавленное в Linux 3.15) вместо dev_id, чтобы различать несколько PCI-портов на одной PCI-функции.
  • Добавлена новая служебная группа input, которая теперь назначается всем файлам устройств ввода. Её предназначение во многом аналогично таковому для групп audio и video.

>>> Объявление о релизе

★★★★★

Проверено: fallout4all ()
Последнее исправление: fallout4all (всего исправлений: 4)

Ответ на: комментарий от intelfx

кажется, нет такого критерия в этом проекте как «слишком высокоуровнево»

I-Love-Microsoft ★★★★★
()

Добавлен компонентsystemd-sysusers, способный автоматически добавлять и исправлять записи о служебных пользователях в /etc/passwd и /etc/group,

можно было бы и сразу удалить эти файлики и взять на себя и эту функцию, чего уж мелочиться

Harald ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

все хотят задонатить, но никто не хочет сделать это сам, так systemd не остановишь )

Harald ★★★★★
()

systemd давно не заслуживает больше, чем мини-новость.

tailgunner ★★★★★
()

Семимильными шагами идём к ситуации, когда поломку в systemd проще будет вылечить переустановкой системы. Добро пожаловать в мир Windows!

alex-w ★★★★★
()
Ответ на: комментарий от bluesman

FTP это слишком олдскульно. Жди интеграции sshd с sftp.

Gotf ★★★
()
Ответ на: комментарий от Harald

Удалить нельзя, обратную совместимость нарушишь. Генерить их полностью самостоятельно (как resolv.conf) тоже нельзя, потому что в них много кто должен писать.

Но я только за то, чтобы убрать их и заменить каким-нибудь более очевидным форматом (/etc/users.d/*.conf, и синтаксис в стиле юнит-файлов, например).

intelfx ★★★★★
() автор топика
Ответ на: комментарий от Harald

поле1:поле2:поле3:полеN? Да, очевиднее некуда. Особенно предназначения полей — никакого мана не нужно, всё с первого взгляда понятно. И автоматизированно редактировать тоже так просто.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от Harald

можно было бы и сразу удалить эти файлики и взять на себя и эту функцию, чего уж мелочиться

Нужно еще немного подождать.

Medar ★★★★★
()
Ответ на: комментарий от Harald

Задам обратный вопрос: приведи пример поломки обратной совместимости с существующими стандартами.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от alex-w

Прости, что? Какая такая «поломка в systemd» может потребовать переустановки _всей системы_?

Повреждение конфига исправляется пересозданием конфига (как и везде). Повреждение исполняемых файлов исправляется переустановкой пакета (как и везде).

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 1)

я так понимаю, сейчас если и убегать куда, то только на LFS. все шизанулись с этим systemd, и прискорбно осознавать, что Debian тоже вляпался в эту дрянь...

dbzix
()
Ответ на: комментарий от intelfx

что за хрень вы несёте, молодой человек? говоря обывательским языком, фильтруйте базар, юноша, и говорите по теме.

dbzix
()
Ответ на: комментарий от alex-w

Семимильными шагами идём к ситуации, когда поломку в systemd проще будет вылечить переустановкой системы. Добро пожаловать в мир Windows!

А вдруг всё будет гоаздо лучше? Вдруг, наоборот, любую поломку в системе можно будет вылечить переустановкой systemd?

proud_anon ★★★★★
()
Ответ на: комментарий от dbzix

О, переход на личности :) Оскорбления запрещены правилами этого форума, так что промолчу. А по теме — никому не интересны ваши страдания и намерения сбежать на самодельный дистрибутив.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

7 полей и их порядок. Да, трудно. И ещё эти двоеточия считать, ведя пальцем по экрану.

Да-да, это «кошмар и ужас», труд неимоверный.

Ты прям как тот мальчик из горьковской трилогии, которому было трудно читать вывески, потому что «буквовки перескакивают», и получается «балакейная лавка» вместо «бакалейная».

Смотри, не перетрудись, считая пальчиком двоеточия :-)

DeVliegendeHollander ★★
()
Ответ на: комментарий от DeVliegendeHollander

Ничего-ничего, не перетрудился пока что. Тем не менее, формат файлов /etc/{passwd,group,shadow} неимоверно упорот.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

При повреждении исполняемых файлов мы наблюдаем радужный(под цвет Лениной ориентации) экран смерти, так как рухнет вся система.

Motif ★★
()

У кого нибудь есть видео доклада леннарта в пекине? Не могу найти.

morse ★★★★★
()
Ответ на: комментарий от Motif

О, ну так при повреждении /sbin/init паника ядра всегда будет. А всё остальное работает вне PID 1, и ничего не рухнет (максимум — система окажется в emergency mode, если, например, fsck сообщит о неисправимых ошибках).

intelfx ★★★★★
() автор топика
Ответ на: комментарий от DeVliegendeHollander

Он прост, но упорот.

sendmail — просто сложен. Я когда-то его поднимал на локалхосте.

intelfx ★★★★★
() автор топика

Посмотрел версию в арче - 214. Походу надо всеръёз взяться за freebsd и послать арч в зад поттеринга.

drfaust ★★★★★
()
Ответ на: комментарий от intelfx

Он прост, но упорот.

sendmail — просто сложен.

Не понимаю таких характеристик. И как их сопоставить тоже не понимаю.

И мне кажется, что «прост, но упорот» — это твоё личное предвзятое мнение.

А systemd по твоей «экстрагибкой во все стороны шкале» характеристик тогда какую оценку получит?

DeVliegendeHollander ★★
()

Очередной выпуск всеми обижаемого детища Лёни...

Deleted
()
Ответ на: комментарий от intelfx

ты, мальчик, говори, да не заговаривайся. иначе до пяти звёзд не дособираешься. компренде? надеюсь, что да. бобра тебе, бро!

dbzix
()
Ответ на: комментарий от anonymous

В своё время я таки разобрался с ним до упора, поставил и пользовался. Потому что дельных альтернатив не было. Потом тоже сбежал на postfix. С sendmail-ом разбираться где-то даже интересно, но только в первый раз и при наличии достаточного количества свободного времени. :-)

DeVliegendeHollander ★★
()
Ответ на: комментарий от dbzix

Дособираюсь, если не потрут за личную переписку.

говори, да не заговаривайся

...а то что? по ойпи вычислишь?..

intelfx ★★★★★
() автор топика
Ответ на: комментарий от DeVliegendeHollander

В данном контексте, упорот — это когда сложность настройки необоснованна.

systemd — я считаю, что средне-сложен.

intelfx ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.