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

У меня eudev

Только до тех пор пока kdbus не влили в ядро - потом юзерспейсный транспорт тупо дропнут и гентушникам придётся либо писать замену либо сидеть на старье до позеленения.

Подробности обсуждались в рассылке ещё в мае, все ссылки есть тут: http://www.phoronix.com/scan.php?page=news_item&px=MTczNjI

Так что запасайся вазелинчиком и регулярно смазывай пукан - судя по всему уже в этом году бомбанёт так, что пожарных вызывать придётся :-D

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

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

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

пока kdbus не влили в ядро - потом юзерспейсный транспорт тупо дропнут

Что такое, сокеты вдруг перестанут работать? API libdbus вдруг сломают?

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

OMFG, логи-то зачем понадобилось редактировать?

Не редактировать, но работать с ними. Я привел пример с другой стороны, первый который пришел в голову

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

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

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

Это не костыль, а старый стандарт. Костыли - это те, которых много.

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

пока kdbus не влили в ядро - потом юзерспейсный транспорт тупо дропнут

Что такое, сокеты вдруг перестанут работать? API libdbus вдруг сломают?

Отлезь, балаболка - все и так знают

Достойный ответ анонимного эксперта.

всё тебе разжуёт и в рот положит... ну или просто в рот положит - уж как попросишь ;-)

Фрейд смотрит на тебя с улыбкой.

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

Профит это, я так понимаю, 100500 запусков утилит на каждый чих? :)

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

Говно изначально есть в ОС и почему разумнее его вырывать с корнем.

Deleted
()

Ой-вэй, сколько добра сегодня на ЛОРе. Каникулы начались, чтоли? )))

Вот кто-то ненавидит systemd, кто-то его боится, кто-то просто им пользуется, а кто-то гадит в каментах ))). Но суть такова, что systemd как и ему подобные альтернативы, это всего лишь инструмент, для решения определённых задач, вот и всё. И он (systemd) будет развиваться до тех пор, пока справляется с этой задачей, либо пока не появится новый, более современный, удобный, надёжный (и т.д.) инструмент. Жизнь не стоит на месте. /sbin/init занял своё место в истории, честь ему и хвала! А теперь, дорогу молодым )))

Ненавистникам на заметку: если бы systemd был на самом деле так плох, как об этом говорят, то уже бы давно умные люди поднатужились, да и выдали свою систему инициализации с блэкджеком и Поттерингом, ну ты понел ;) )))

pmedved
()

Кстати, если серьёзно, можно повторить usecase с выпиливанием IE из windows и впилить иск. Типа «ограничение использования своей собственной няшной init с помощью жёсткой привязки к kdbus» и т.п. На возражение - «у нас systemd отдельно, kdbus отдельно» отвечать - «а сами пробовали SysV и kdbus запускать????»

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

API libdbus вдруг сломают?

А оно уже умеет в kdbus?

Я и спрашиваю - зачем ему уметь в kdbus? Сейчас libdbus - единственный интерфейс доступа к DBus, абстрагирующий приложения от конкретного транспорта. Даже если в ядре появится kdbus, текущая версия libdbus продолжит работать. Конечно, можно сделать новый libdbus и протолкнуть его в дистры, но это всё равно, что сломать API.

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

Если ДО внедрения systemd все работало, а ПОСЛЕ резко поломалось, то кто виноват?

Кстати, Fedora тоже не без греха - однажды так же свежеустановленная вообще отказалась запускаться. Да, ошибка systemd.

А репортить баги поцтерингу это хорошая идея, да. Жаль, что фиксить глюки в ДНК пока никто не умеет.

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

С этой задачей все справляются.

Вот и хорошо, вот и прекрасно. Кто мешает $username собрать свой любимый дистр с нужной ему системой инициализации? Коммунизм Unix way же, каждому-по-потребностям!

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

Да я, честно говоря, вообще не понимаю, зачем ваша турецкая поделка нужна. С systemd или без него.

Alsvartr ★★★★★
()

блин, в цельном треде ни единого правильного поста из двух слов - не нужно. недавно в Дебияне-тестинге предложили насильно поставить это говно в качестве инита (а его притащил policykit) и под шумок выпилить sysv. ага, побежал! дебианщики, ставьте пакет systemd-shim, пока дают

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

Если ДО внедрения systemd все работало, а ПОСЛЕ резко поломалось, то кто виноват?

Помнится, некоторое время назад в Дебиане (а следом в Убунте) заменили bash на dash. Некоторое кол-во самописных скриптов у меня перестало правильно работать. Кто виноват — дебиановцы со своей сменой шелла или я с башизмами в коде скриптов и #!/bin/sh в шабанге?

Кстати, Fedora тоже не без греха - однажды так же свежеустановленная вообще отказалась запускаться. Да, ошибка systemd.

Баг-репорт покажешь?

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

собрать свой любимый дистр с нужной ему системой инициализации

кроме системы инициализации есть еще кое-что в системе, но видимо это сюрприз для тебя

apt-cache rdepends udev | wc -l 169

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

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

Большинство крупных/нужных дистров уже мигрировали или планируют это сделать, и это показатель.

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

кроме системы инициализации есть еще кое-что в системе, но видимо это сюрприз для тебя

Кроме Убунты (Дебиана) есть и другие дистрибутивы, но видимо это сюрприз для тебя

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

Кроме Убунты (Дебиана) есть и другие дистрибутивы, но видимо это сюрприз для тебя

кроме дистрибутивов есть свои эмбеддед проекты но это видимо вообще недосягаемо для тебя

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

Да-да. А getpwent это делает магией. Ты хоть почитай, о чем там говорили.

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

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

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

можно повторить usecase с выпиливанием IE из windows и впилить иск. Типа «ограничение использования своей собственной няшной init с помощью жёсткой привязки к kdbus» и т.п

Не смеялся так со времен форка eudev =)

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

Кстати, если серьёзно, можно повторить usecase с выпиливанием IE из windows и впилить иск.

Ну так впили, раз дохера умный.

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

Кстати, Fedora тоже не без греха - однажды так же свежеустановленная вообще отказалась запускаться. Да, ошибка systemd.

Помнится, однажды и ЛОР на время из онлайна вывалился из-за каких-то выкрутасов systemd. Причём, ЕМНИП, Макском конкретную причину так толком и не смог найти. :)

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

если бы systemd был на самом деле так плох, как об этом говорят, то уже бы давно умные люди поднатужились, да и выдали свою систему инициализации с блэкджеком и Поттерингом

Следуя твоей логике, жопоскрипт, в котором

» node
> [1,2,3] == [1,2,3]
false

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

А systemd - это давно уже не система инициализации. Это целый Software Stack, mini-bsd как тут любят говорить. И его «never complete» меня очень пугает.

поднатужились, да и выдали свою систему инициализации

OpenRC

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

предлагаю у поцтеринга спросить в переписке ;)

Дык давно уже, более того, он даже ответил, причём умудрился ни разу не сматериться - вот что значит интеллигентный человек. Но ведь если местные неосилятору научатся ходить по ссылкам и понимтаь прочитанное это ж какой вал баттхёрта исчезнет?! А так - стабильно, грохот бомбанувших пуканов салютом приветствует каждую новость о systemd, меньше 8 страниц комментов это значит в школе особо сложную домашку на этой неделе задали...

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

гента сидит на всех стульях сразу. у меня системд в генте нормально работает уже год.

vovan72
()
Ответ на: комментарий от like-all

жопоскрипт, в котором

не жопоскриптом единым внезапно.

В самом деле, если б хотели - давно взяли Dart, PNaCl и прочие ништяки.

в них нет ничего существенно лучше чем в популярных ЯП.

И его «never complete» меня очень пугает.

почему бы не сделать наконец что-нибудь кроме высирания кирпичей? Собери хейтеров и запили свой мегасупер дистрибутив без systemd.

Здесь многие идиоты сделали с кучки байтов священную корову и забыли что это инструмент. Я пользуюсь тем, что мне нравится и присылаю туда патчи, когда они устаревают - использую другие, те что делают свою работу хорошо.

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

Meh... Так и знал, что не стоит лезть в systemd-тред, но ладно.

почему бы не сделать наконец что-нибудь кроме высирания кирпичей

Люди уже пилят eudev. Нсь, я смогу им помочь в портировании и тестировании для Debian. Плюс есть systemd-shim. Плюс команда OpenBSD пилит заглушки для софта, зависящего от, плюс... В общем хейтеров и так полно(и причины для ненависти у них есть), а если получится поддержать их - ещё лучше.

В целом, я не против systemd. Но сабж - не про свободу выбора, а про зарабатывание денег. На работе, в смартфоне соседа, в терминале атомной электростанции, где угодно - пожалуйста, но только не на моих хостах.

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

Можешь прям щас начинать - как только нетлинковский транспорт дропнут с libudev мелким воришкам из eudev срочно понадобится помощь - либо в написании заглушки, либо хотя-бы вазелин подтаскивать :)

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

OpenBSD пилит заглушки для софта

И много они напилят? На фряхе до сих пор халд выпиливают (а ведь когда-то тоже ершились, переходить не хотели). Фряшный devd кое-где вставлен, однако кеды/дельфин, тунар, наутилус итд. так и остались на халд. Да и что делать с udev - тоже не придумали (ну да, оно уже вроде и не надо) freebsd-wiki:

Ports: find a solution for udev udev is used by critical components

On hold

It has been reported that udev will be replaced in the Linux world in the medium term (say, a year). The next solution isn't known yet, maybe something tightly integrated to systemd.

Mожно конечно отмахнутся от проблем «бздунов» - но в долгосрочной перспективе будет вам такое же Щастье - или урезанный функционал софатф, или системд =)

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

На работе, в смартфоне соседа, в терминале атомной электростанции, где угодно - пожалуйста, но только не на моих хостах.

Какая ужасная, пугающая, невыносимая потеря.

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

или урезанный функционал софатф, или системд =)

Я и говорю, что systemd - это ни разу не о свободе. Жду кульминации, в которой RH подсунет хитрожопое EULA, в котором будет пунктик о пришивании губ одного пользователя systemd к заднице другого.

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

Жду кульминации, в которой RH подсунет хитрожопое EULA

Если бы мне давали хотя бы по доллару всякий раз, когда я слышал подобные речи…

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

Я давно понял, что для людей недалеких свобода - это когда побеждает сторона, которая им нравится. Спасибо за напоминание.

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

Аххахах)) Поумничал, оскорбил собеседника, и поблагодарил :D

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

Внезапно, свобода выбора инструмента - это возможность пользоваться теми инструментами, которые нравятся, и не пользоваться теми, которые не нравятся. А RH, большинство дистростроителей, софтописателей и Сам Лёнчик гадят в лоток моих котят делают использование тех инструментов, которые нравятся, чрезвычайно сложным, если не невозможным. Та же ситуация с исключением из системы тех инструментов, которые не нравятся.

Молодец, начинаешь соображать, разрешаю взять с полки пирожок.

like-all ★★
()
Ответ на: комментарий от timuaz

почему бы не сделать наконец что-нибудь кроме высирания кирпичей?

Дык они больше ничего не умеют. Чем богаты как говорится :)

Собери хейтеров и запили свой мегасупер дистрибутив без systemd.

Нельзя из кучки порваных пуканов слепить дистр, так же как из букв О, П, Ж и А не складывается слово «вечность».

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