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)

Хорошая новость, Леннарт молодец!

TheAnonymous ★★★★★
()

У меня новое предложение, перенесём всё в /usr. А потом переименуем /usr в / :}

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

/etc/{passwd,group,shadow}

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

???

«сложность настройки»

???

Ладно, я всё понял. Больше вопросов нет. Желаю «предельной простоты настройки», вплоть до одной большой кнопки с общеизвестной на ней надписью :-)

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

Тем не менее, формат файлов /etc/{passwd,group,shadow} неимоверно упорот.

Если ты его не понимаешь, то это не проблема формата ;)

alex-w ★★★★★
()

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

erzent ☆☆
()

Почему столько ненависти в треде? Я думал, все давно уже смирились и повесили фоточки Леннарта рядом со своими поняшами. Тю.

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

Единственное чего не хватает линуксу, это аналога АД, с таким же простым управлением,и функциями всё остальное и так нормально.

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

Я его прекрасно понимаю. Тем не менее, можно было бы сделать более user-friendly.

Нахрена козе боян? Он уже user-friendly, к тому же прост и логичен. Или вам нужно ни с чем не совместимый формат в виде xml'ки, который нужно редактировать специальным редактором? Вот зачем лезть туда, в чем не смыслишь?

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

Вот именно, что существующий формат ни с чем не совместим, визуально плохо воспринимается и требует сложной логики для автоматического редактирования. Можно проще: по файлу на пользователя и синтаксис в стиле Key=Value.

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

Вот именно, что существующий формат ни с чем не совместим, визуально плохо воспринимается и требует сложной логики для автоматического редактирования. Можно проще: по файлу на пользователя и синтаксис в стиле Key=Value.

Этот формат используется во всех UNIX-подобных операционных системах. Он очень прост, и - повторюсь - если у тебя не хватает мозгов понять его, то это не проблема формата.

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

В генте можно поставить systemd. Не так удобно и прозрачно, как в дебиане, но можно. И в LFS описано, как systemd использовать. Фактически, дистрибутивов, где systemd нет и не будет осталось полторы штуки, а их пользователей и того меньше.

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

Этот формат используется во всех UNIX-подобных операционных системах.

И? Отсылка к авторитету.

Он очень прост

Может быть. Но можно понятнее.

если у тебя не хватает мозгов понять его

У меня хватает. У меня как-то даже хватило мозгов написать автоматический редактор, поэтому я и говорю, что Key=Value было бы ещё проще и парсить, и читать.

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

Останусь с текущими версиями /etc/passwd и /etc/group. А что значит «скопытится»?

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

Истерички продолжают истерить.

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

вам нужно ни с чем не совместимый формат в виде xml'ки, который нужно редактировать специальным редактором?

Это было бы лучше, чем ублюдочный ini. Но, естественно, лучше было бы приличный DSL.

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

Марка спроси. Как альтернатива, будет уже в 14.10, они уже на дебиановский вариант systemd перешли вместо своего.

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

И? Отсылка к авторитету.

Просто поверь, что Кен Томпсон получше тебя в этом разбирается.

Может быть. Но можно понятнее.

Он уже понятен. Но нет, очевидно же, что тебе будет намного проще работать с кучей из нескольких сот файлов (да, бывают системы, где столько много пользователей) - ну просто верх понятности и лаконичности.

У меня хватает. У меня как-то даже хватило мозгов написать автоматический редактор, поэтому я и говорю, что Key=Value было бы ещё проще и парсить, и читать.

Вот по твоим репликам и понятно, что мозгов у тебя таки не хватило. А еще прикинь, если в файлике просто значение лежит, то его еще проще обрабатывать.

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

Это было бы лучше, чем ублюдочный ini. Но, естественно, лучше было бы приличный DSL.

Чего-чего? Топикстартер как раз и предлагает всё и вся заменить на ini - ему он понятнее.

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

Он уже понятен. Но нет, очевидно же, что тебе будет намного проще работать с кучей из нескольких сот файлов (да, бывают системы, где столько много пользователей) - ну просто верх понятности и лаконичности.

Напиши систему инициализации с xml и шлюхами, а мы заценим.

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

что тебе будет намного проще работать с кучей из нескольких сот файлов

Да. ls и sed.

А еще прикинь, если в файлике просто значение лежит, то его еще проще обрабатывать.

А где у нас «просто значение»? Я вижу несколько строчек и на каждой несколько полей, разделённых двоеточиями. Считывать проще, менять сложнее.

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

А я так и подумал, ещё когда дебиан собрались переводить. Всё же они сильно зависят от него.

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

Просто поверь, что Кен Томпсон получше тебя в этом разбирается.

лох по жызни он

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

Логика проста - если я могу открыть конфиг и отредактировать его с ходу, без ленивого листания манов - он прост и понятен. Не слышал ни про кого, кто увидев в первый раз наши любимые файлики с ходу запилил бы рабочую конфигурацию ручками из vi без открытия мана по соседству (или чтения его в прошлом). (речь только о базовой настройке)

Хотя, признаться, group подчиняется этому правилу, на passwd надо повнимательней посмотреть, а вот с shadow савсэм пичаль.

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

А чья, его авторов чтоли?

eсL|/|tы

H E П О Н И М А Е Ш Ь

сообщениеэтоэтотонеегопроблема.

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

Это было бы лучше, чем ублюдочный ini. Но, естественно, лучше было бы приличный DSL.

Чего-чего?

Что непонятно?

Топикстартер как раз и предлагает всё и вся заменить на ini

У ТС systemd головного мозга и поэтому его мнение следует игнорировать.

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

Как можно верить GPL-хейтеру? (O.o)

Deleted
()

Лучшее - враг хорошего. Помянем линуксы...

minakov ★★★★★
()

По всем законам развития жанра леннарт должен через несколько следующих релизов перестать разбираться в своей же разжиревшей поделке. Сюстемдишка станет неуправляемым куском г-на, вышедшим из-под контроля и медленно загнется (systemd).

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

/sbin/init маленький и сам по себе. В отличие от громадного блоба systemd, в котором все компоненты перевязаны, и в случае сбоя в одном, падать будут все вместе. Как в винде, да.

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

Фотографию автора найди и на форум по чёрной магии выложи с текстом «Помогите наказать убийцу моей дочери!».

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

В отличие от громадного блоба systemd, в котором все компоненты перевязаны, и в случае сбоя в одном, падать будут все вместе.

4.2

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

Они обычно сами по себе

Ну да, побьется /sbin/init - система не загрузится, побьется /bin/sh - вообще половина всего поотваливается. Так что одним systemd больше...

cipher ★★★★★
()
Последнее исправление: cipher (всего исправлений: 1)
Ответ на: комментарий от Motif
  1. Я почему-то был уверен, что этого сделать нельзя (journald связан с systemd теснее, чем всё остальное), но сейчас проверил, пересобрав пакет — абсолютно можно.
  2. Даже если было бы нельзя, при чём здесь «установить»? Если упадёт journald, systemd (PID 1) никогда не упадёт. Тем более все остальные компоненты.
intelfx ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.