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)
Ответ на: комментарий от frost_ii

Зачем поттеринг изобретает велосипед?

Для исправления Фатального Недостатка существующих решений.

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

сам сможешь посчитать, сколько одних только стороннних библиотек в PID 1 засунуто?

Тебя тоже в клоуны записать? Это _открытые файлы_, т. е. библиотеки, подгруженные извне.

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

сам сможешь посчитать, сколько одних только стороннних библиотек в PID 1 засунуто?

Тебя тоже в клоуны записать? Это _открытые файлы_, т. е. библиотеки, подгруженные извне.

и?

TOHbl4
()
Ответ на: комментарий от reprimand

команда ls с 50 параметрами идеал юник-вэя, ага

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

Не совсем. Вероятно, я это делаю ошибочно, но я использую слово «функционал» в значении «какая-то конкретная часть функциональности», а «функциональность» — как «совокупность всего, что умеет программа».

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

Во-первых, ни одна из этих библиотек не «засунута» в PID 1.

Во-вторых, опять же, где все те «модули systemd», которые, по утверждению, выполняются в PID 1?

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

Во-первых, ни одна из этих библиотек не «засунута» в PID 1.

ага, процесс systemd их «чисто на посмотреть» открыл...

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

Не обращай на него внимание. Кактут уже говорили, у него systemd головного мозга. Да, ктому же, осложнённое незнанием того, что ошибка в библиотеке равноценна ошибке в основном процессе, а аварийное/преждевременное завершение PID 1 приводит к kernel panic-у независимо от того, во временя инициализации системы это произошло или через 100500 часов после окончания загрузки. Тяжёлый случай, в общем.

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

ой квазарчик ты забыл дать ссылки на своё по, которое грамотно спроектировано, а то много вас таких по весне оттаивает

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

Два пакета это слишком сложно для пользователя. Оставим пожалуй только пакет systemd.

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

Ещё раз: это библиотеки, с которыми слинкован бинарник PID 1. (Динамически слинковать и засунуть в — две большие разницы.) Где здесь те мифические «модули systemd», наличие которых в адресном пространстве PID 1 ты хочешь доказать?

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

Молодец Поцтеринг! Здорово,что systemd растет и развивается! Но мне не хватает его функционала, куда я могу обратиться, чтобы уже сделали systemd-vlc, systemd-firefox, systemd-libreoffice, а то надоело отдельные пакеты качать!

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

И присядь покрепче, сейчас у тебя бомбанёт - продвижением kdbus в ядро занимается некто Greg Kroah-Hartmann

Сейчас квазарчик тебе ответит, что Кроа-Хартман тоже некомпетентный идиот.

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

Из твоих слов создается впечатление, что systemd в принципе не работает и работать не может

А ты попробуй читать внимательнее.

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

Религиозная ненависть ко всему не-systemd-шному - самая сильная и бессмысленная.

Я починил

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

О даааа детка. И вместо 30 строк на 30 пользователей мы получим 210 в 30 разных файлах. Пожалуйста, убейте себя.

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

ага, всегда, с initramfs, а стоит выкинуть и этот костыль, как systemd становится абсолютно неюзабельным говном, ибо dbus то лежит в /usr в нормальных здравых дистрибутивах. Да даже в говноарче dbus в /usr лежит.

daemonpnz ★★★★★
()
Последнее исправление: daemonpnz (всего исправлений: 2)
Ответ на: комментарий от I-Love-Microsoft

куда донатить на киллера

на такое благое дело многое бы не поскупились

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

Но мне не хватает его функционала

Ему и пиши, ищи его на G+, только он банит всех

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

прискорбно осознавать, что Debian тоже вляпался в эту дрянь...

да, но что-то мне подсказывает что после бурного прилива последует бурный отлив

quest ★★★★
()

Строго конфиденциально

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

Машине Key=Value сложнее, чем с односимвольным разделителем, естественно. Но проще, чем человеку распарсить говнострочку.

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

Ты сейчас сам-то понял, что сказал? Процесс, имеющий PID1 использует все эти библиотеки. И SIGSEGV, посланный как результат ошибки в этой библиотеке, придет именно ему. После чего всё умрет.

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

Допустим, что я - клоун, мне это даже льстит - Юрий Никулин, Карандаш были клоуном, но я, к сожалению, такими талантами не обладаю. Поэтому,я даже не представляю, когда это вдруг слово клоун сделалось обидным.Нет,это не моя профессия, да и по проявленному чувству юмора, я скорее Петросян. Впрочем, очередная поцтеринговская поделка и не заслуживает ничего иного. Даже когда я только только учился в институте программировать -даже мой поганый говнокод был менее вредоносным и более адекватным. И если ты настолько слеп и готов восхвалять поцтеринга только за то, что этот великий гуру что-то там инновационное предоставил (долго думал, нашел подходящее сравнение - Денис Попов и Алексей Бабушкин) - на здоровье, остальные от этого не должны страдать

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

если у тебя есть необходимость, ты всегда можешь отправлять логи в любимый syslog. (ЕМНИП, можно и не дублируя в собсна сам journald. Хотя, да, последний все равно понадобится здесь; не знаю, как реализована работа systemd, собранного без journald.)

// Я понимаю, что я одмин локалхоста и Ъ-ынтырпрайза не видел, но, увы, мне ни разу эта фича (чтение логов из grub, вернее, syslinux) не понадобилась. Сдается мне, в Ъ-ынтырпрайзе то и на grub смотреть не приходится. А вот парсинг журнала «искаропки» в journald достаточно удобная штука, чтобы отказаться от покрытого мхом syslog.

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

Машине Key=Value сложнее, чем с односимвольным разделителем, естественно. Но проще, чем человеку распарсить говнострочку.

Машине распарсить Key=Value проще, чем человеку распарсить говнострочку? Я один не вижу в этом сравнении вообще никакого смысла?

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

Не утруждайся, у Quasar-а хроническое расстройство по пункту 4.2 Он стабильно пишет одни и те же заблуждения из топика в топик, даже если ему указывают, что он неправ.

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

А потом как всегда победит более безпроблемный инструмент.

И это будет явно не сыстемд и пшшаудио

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

Штука в том, что некоторые вещи вроде LUKS'а на весь диск проще делать именно через initramfs.

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

Костыль, это когда у нас есть возможность сделать архитектурно более правильное решение. А с initramfs остальные варианты не сильно лучше. По крайней мере, я это вижу так.

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

«А он есть».

Оптимальнее заставить машину парсить Key=Value, чем людей — запоминать порядок полей и (фигурально выражаясь) считать двоеточия.

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

Увы, но полноценной замены нет

Посмотри в сторону freeipa. Я ни с AD, ни с ней вплотную не работал, но управление линуксами и линукс-учётками она умеет.

В обращении довольно проста и умеет трасты с AD. Правда, когда я её тыкал, было ощущение общей недопилинности. Но сейчас могли всё поправить.

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

Мне влом аргументировать. Вон уже сказали — нет решения, архитектурно более правильного => не костыль.

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

В случае со всякими LUKS и прочим может быть, но когда ядру не хватает всего лишь модулей ФС и контроллера диска, initramfs избыточный костыль.

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

«слинкованы» не означает «засунуты»

Ээээ. ШТААА? Ты вызываешь код, который лежит в *.so. Предварительно этот *.so засунув в память.

И нет, не умрёт — там есть защита от падений.

Какая защита от SIGSEGV? Проигнорировать?

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

Мне влом аргументировать

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

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

От этого initramfs не перстаёт быть костылём.

А ты-то сам можешь сформулировать, почему initramfs - костыль? Как по мне - это замечательное решение, позволяющее полностью отказаться от ФС на физическом носителе. Наоборот, когда для функционирования ОС ей нужно смонтировать блочное устройство с ФС - это кривой костыль.

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

Разумеется, в некоторых случаях это явный перебор.

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

там есть защита от падений

почему нет защиты от отсутствующего libdbus, например какой нить fallback режим, но чтобы хотя б загрузиться на начальном этапе, но нет же без dbus просто кусок никчёмного гуано.

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

Я согласен что в некоторых случаях initramfs необходимое «зло» или лучше сказать осознанная необходимость, но его зачастую как и systemd пихают всюду к месту и не к месту.

ЗЫ. Хороша ложка к обеду.

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

Ээээ. ШТААА? Ты вызываешь код, который лежит в *.so. Предварительно этот *.so засунув в память.

Терминология не та. Обычно «засунуть» — это скопипастить код проекта в своё дерево. Я не сразу (далеко не сразу) понял, о чём этот человек говорит.

Какая защита от SIGSEGV? Проигнорировать?

Поймать и exec() в специальный бинарь, если не ошибаюсь.

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

но его зачастую как и systemd пихают всюду к месту и не к месту.

Это единственное универсальное решение, поэтому его и пихают везде. Для дистрибутивов общего назначения initramfs нет альтернатив.

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

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