LINUX.ORG.RU

systemd 216

 , ,


1

2

systemd — это менеджер системы и сессий для Linux. systemd совместим со скриптами инициализации SysV и LSB. Он предоставляет возможности агрессивного распараллеливания, использует для запуска сервисов сокеты и D-Bus активацию, позволяет запускать демоны по требованию, реализует транзакционную зависимостную логику управления сервисами, отслеживает процессы с использованием Linux cgroups, поддерживает создание снимков и восстановление, а также заведует монтированием и точками автомонтирования.

Это мажорный выпуск. Помимо прочих изменений, systemd-resolved теперь гармонично дополняет распознаватель заглушек кэширования DNS и LLMNR.

  • timedated больше не читает имена юнитов реализации NTP из /usr/lib/systemd/ntp-units.d/*.list. Альтернативная реализация NTP добавляет
    Conflicts=systemd-timesyncd.service
    в их юнит-файлы, заменяя собой функциональность NTP systemd по умолчанию.
  • systemd-sysusers получила новый тип строки «r» для настройки того, из каких диапазонов UID/GID выделять системных пользователей/группы. Строки типа «u» теперь могут добавлять дополнительную колонку для обозначения домашней директории создаваемого пользователя. Кроме этого, systemd-sysusers теперь может опционально считывать пользовательскую информацию из STDIN вместо файла. Это полезно вызове её из предустановочных скриптлетов RPM, которым нужно создать пользователей перед установкой первого файла RPM, так как этим файлам может требоваться владение этими пользователями. Новый макрос RPM %sysusers_create_inline представлен именно для этой задачи. systemd-sysusers теперь обновляет теневые файлы наряду с базами пользователей/групп, что улучшает совместимость с некоторыми инструментами, например, grpck.
  • Ряд шинных API PID 1 теперь опционально запрашивает у PolicyKit, предоставить ли доступ считающимся непривилегированными клиентам при определённых условиях. Имейте в виду, что интерактивная аутентификация в данный момент пока не поддерживается, но в конечном счёте ожидается добавление и её.
  • /etc/machine-info теперь обладает новыми полями для настройки среды развёртывания машины, а также месторасположения машины. hostnamectl обновлён и снабжён новой командой для обновления этих полей.
  • systemd-timesyncd обновлён до автоматического запроса информации о NTP-сервере у systemd-networkd, который можно обнаружить по DHCP.
  • systemd-resolved теперь включает распознаватель заглушек кэширования DNS и полную реализацию разрешения имён LLMNR. Добавлен новый модуль NSS «nss-resolve», позволяющий использовать собственный «nss-dns» glibc для обнаружения имён хостов через systemd-resolved. Имена хостов, адреса и произвольные RR'ы можно распознавать через D-Bus API systemd-resolved. В отличие от внутреннего распознавателя glibc, systemd-resolved умеет работать с многодомными системами и удерживает DNS-сервера и кэши отдельно и поинтерфейсно. Запросы посылаются одновременно на все интерфейсы, имеющие настроенные DNS-сервера, для корректной обработки VPN и локальных LAN, которые могут распознавать отдельные наборы доменных имён. systemd-resolved может запрашивать информацию о DNS-серверах у systemd-networkd автоматически, который, в свою очередь, может находить её по DHCP. Нововведённый инструмент «systemd-resolve-host» можно использовать для запроса логического DNS у resolved. systemd-resolved реализует IDNA и автоматически использует IDNA или кодировку UTF-8 в зависимости от того, используется ли в качестве транспорта классический DNS или LLMNR. В следующих выпусках планируется добавить в systemd-resolved реализацию DNSSEC и mDNS/DNS-SD.
  • Добавлен новый модуль NSS nss-mymachines, автоматически распознающий имена всех локально зарегистрированных контейнеров по соответствующим IP-адресам.
  • Добавлен новый клиентский инструмент для systemd-networkd — «networkctl». В настоящий момент он полностью пассивен и запрашивает сетевую конфигурацию у udev, rtnetlink и networkd, предоставляя её пользователю дружественным способом. В будущем планируется расширить его до полноценной утилиты для управления networkd.
  • .socket-юниты получили новую настройку DeferAcceptSec=, управляющую sockopt ядра TCP_DEFER_ACCEPT для TCP. Аналогично, для управления TCP Keep-Alive добавлены KeepAliveTimeSec=, KeepAliveIntervalSec= и KeepAliveProbes=. Также поддерживается отключение алгоритма Nagle для TCP (NoDelay=).
  • logind обучен новому типу сессий «web» для использования в проектах наподобие Cockpit, регистрирующих web-клиентов как PAM-сессии.
  • Юниты-таймеры с как минимум одной настройкой OnCalendar= теперь будут запускаться только после достижения timer-sync.target. Таким образом, они не будут проходить перед подстройкой системных часов локальным NTP-клиентом или чем-то подобным. Отчасти это полезно на встраиваемых системах без RTC, запускающимся со сбитыми системными часами.
  • Ключ systemd-nspawn --network-veth= теперь приводит к стабильным MAC-адресам как на внешней, так и на внутренней стороне соединения.
  • systemd-nspawn получил новый ключ --volatile= для запуска экземпляров контейнеров с незаполненными /etc или /var.
  • Клиентский код kdbus обновлён для использования новой подсистемы Linux 3.17 memfd вместо старой, kdbus-специфичной.
  • DHCP-клиент и -сервер systemd-networkd теперь поддерживают FORCENEW. Также есть новые параметры конфигурации для настройки клиентского идентификатора поставщика и режима вещания для DHCP.
  • systemd больше не будет уведомлять ядро о текущем часовом поясе, так как это в любом случае неверно и колоритно, поскольку ядру неведом DST и подобные понятия. Как следствие, временные метки FAT будут всегда считаться UTC, примерно как это уже делает Android. Помимо этого, когда RTC настроены на локальное время (отличное от UTC), systemd никогда не будет синхронизировать их обратно, так как это может смутить Windows при последующей загрузке.
  • systemd-analyze получил новую команду «verify» для оффлайн-валидации юнит-файлов.
  • systemd-networkd получил поддержку парочки дополнительных настроек для слития настроек сети. Также теперь можно настраивать метрику статично настроенных маршрутов. Для сетевых интерфейсов в случае необходимости можно настроить IP-адрес пира.
  • DHCP-сервер systemd-networkd больше не будет запрашивать вещание по умолчанию, так как это роняло некоторые сети. Для оборудования, где вещание необходимо, возможность можно включить обратно с помощью RequestBroadcast=yes.
  • systemd-networkd теперь задаёт адреса IPv4LL (если включено) даже если DHCP успешно настроен.
  • udev теперь по умолчанию отдаёт предпочтение именам сетевых устройств, предоставляемым ядром, если ядро указывает, что они предсказуемы. Это поведение можно изменить изменением NamePolicy= в соответствующем .link-файле.
  • Добавлена новая библиотека systemd-terminal, реализующая полную обработку и отображение TTY-потоков. Эту библиотеку планируется использовать в будущем для реализации подсистемы виртуальных терминалов целиком в пространстве пользователя, взамен текущей реализации в ядре.
  • Добавлен новый инструмент systemd-journald-upload для передачи данных журнала на удалённую систему с запущенным systemd-journal-remote.
  • journald больше не будет передавать все локальные данные другому запущенному syslog-демону. Это изменение сделано, поскольку rsyslog (являющийся на сегодняшний день наиболее широкоиспользуемой реализацией rsyslog) их больше не использует, и вместо этого вытягивает из журнала в свой собственный. Поскольку передача сообщений несуществующему syslog-серверу слишком затратна, было решено просто выключить её. Если у вас запущен syslog-сервер, отличный от последней версии rsyslog, эту опцию нужно снова включить (ForwardToSyslog= в journald.conf).
  • journald опционально поддерживает LZ4-компрессор для больших полей журнала. Этот компрессор работает намного лучше XZ, который использовался по умолчанию ранее.
  • machinectl теперь показывает IP-адреса локальных контейнеров, если знает их, плюс имя интерфейса контейнера.
  • Добавлен новый инструмент «systemd-escape», позволяющий легко экранировать строки для создания имён юнитов и т. п.
  • Сообщения sd_notify() теперь могут содержать новое поле ERRNO=, которое обрабатывается и сохраняется systemd, чтобы потом его можно было отобразить в выводе «systemctl status» для сервиса.
  • Добавлен новый компонент «systemd-firstboot», интерактивно запрашивающий для systemd наиболее базовую информацию (часовой пояс, имя хоста, пароль root) при первой загрузке. Ещё его можно использовать для предоставления этих вещей оффлайн в образах ФС, установленных в директории.
  • Сниппеты sysctl.d/ по умолчанию теперь выставляют net.ipv4.conf.default.promote_secondaries=1. Это позволяет не сбрасывать вторичные IP-адреса, когда первичные удалены.

>>> Источник

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

У тебя SSD? Если нет, то это наверняка не «раза в 3 ниже, чем на инитскриптах» — а если да, то надо разбираться.

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

Хм, не заметил этого сообщения. (Впрочем, невелика потеря, ещё один толстенький и зелёненький.)

Мне мешает политика redhat'а пропихнуть эту корявую поделку выпилив все альтернативы для превращения GNU/Linux в systemd OS.

Нужен пруф пропихивания — это раз. Нужен пруф корявости — это два. Наконец, три — это смахивает на религиозную ненависть, в то время как считаются только практические проблемы (т. е. systemd глючит или не позволяет сделать то, что можно было с sysvinit/etc).

Я тебе привел пример проблемы с альтернативными init'ами после появления в дистрибутивах по дефолту системд

И каким боком это проблемы systemd? Все вопросы к разработчикам альтернативных init'ов.

Всем быть резко довольными

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

Нет, кто то вычищает ConsoleKit из репозиториев ;)

А никто тебе не обязан тратить сборочные мощности и место на дисках. Сырцы открыты — свобода выбора сохранена. Бери, допиливай, собирай, юзай. Или пользуйся тем дистрибутивом, где мейнтейнеры разделяют твои предпочтения в выборе софта.

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

Запуск DE не учитывается анализатором systemd. Система считается запущенной в тот момент, когда запустился дисплейный менеджер (и все остальные демоны).

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

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

кх..Wин..кх..да.

Тогда 12 секунд — вполне себе нормально. А сколько на OpenRC?

А на openrc как минимум не медленней. А в большинстве случаев ещё и быстрее, если прочитать man и грузить xdm в boot, а не в default.

// Гружусь на ноутбучном винте в 5400 за 7 секунд от нажатия на кнопку питания до рабочего стола.

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

Очевидно, что конфигурации разные.

Asus Z99H (C2D T7400 / GMA 950 / 2 GiB RAM / 160 GiB HDD)

За сколько у тебя грузится?
У меня похожий ноут, только с T5600, который послабее.

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

Не могу потестить. У этого ноута порвался провод ЗУ, надо добраться до паяльника (паяльник дома, я в физтехе) и починить.

Вообще что-то порядка 15 секунд, но какбэ список демонов и используемую ФС в студию.

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

Если не будет альтернативы, и везде захерачат systemd, то года через 2 получим аля оффтоп! Иксы вкомпилят в ядро (последствия сами понимаете).

В случае, если появятся дистры уровня Debian (базовый для многих) где systemd выкинут, и за которым потянутся другие мощные дистры (те, что на нём базируются), софт будет не только под systemd! Это же «золотое правило» Open Source! Альтернатива должна быть! А её убивают.

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

Иксы вкомпилят в ядро

Вяленый же, иксы вообще не из этой ёперы.

Альтернатива должна быть! А её убивают.

Никто не мешает тебе прописать init=/sbin/my_genial_autorun.sh. Проблема в том, что пользовательского софта, который можно вот так юниксвейно запускать, почти не останется. Причина тут не в сисямдэ, она кроется в давнем тяготении крупных DE к монолитности на всех уровнях (особенно это касается кед, но и гном сейчас туда же прёт), ничего удивительного, что эта интеграция и гвоздеприбивание распростряняются всё на более низкие уровни. Точнее, на последнюю оставшуюся прослойку — линукс-то по своей природе также монолитен. Истоки же в популярности — если бы гня так активно не использовалась в ынтерпрайзе, юниксвей не доставлял бы проблем влияющим на её развитие заинтересованным лицам. Но она используется, и юниксвей ставит палки в колёса, так как тормозит развитие современных, но ни с чем не совместимых API. Ничто не мешает написать совместимую альтернативу того же сисямдэ. Но придётся лепить именно аналог сисямдэ, так как классического инита будет недостаточно для покрытия всех зависимостей. Как, например, нельзя сделать аналог индикаторов из Unity на одном лишь трее — надо пилить полную реализацию индикаторов. Печально всё это в общем случае или нет — сказать нельзя, так как этого общего случая и нет: круг задач, для которых используется гня, чересчур широк, и угодить всем и сразу сложно. Потому, в частности, и появляются несовместимые форки типа Android (он гнёй толком и не был, но для примера сойдёт). Так что если так пойдёт и дальше, есть риск разделения гни на две ветки — ветка для ынтерпрайза и хомячков и ветка для бородатых юниксвейщиков. То есть примерно то, что в своё время случилось с HURD после появления Linux...

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

Половина разрабов, включая Леннарта, так или иначе в отпуске. Впрочем, релизы делаются раз в два-три месяца... так что мне в любом случае ещё долго придётся из гита собирать.

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

Это да. Вообще, мы с ним чем-то похожи — говноидеи так и сыплются, но Лёньчик их реализовывать успевает, и это печально.

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

Там какую-то полезную фичу пилят?

Вроде того. Поддержка возобновления из гибернации по персистентным именам дисков (вроде resume=/dev/disk/by-foo/bar или resume=FOO=bar). Собственно, я это и запилил, потому что писать resume=/dev/sda5 ненадёжно.

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

Нет. Точнее, не совсем. Вся проблема в способе указания устройства, с которого просыпаться (параметр ядра resume=).

Вообще, значение этого параметра — путь к файлу устройства. Но ядро само по себе умеет парсить только самый примитивный вариант: resume=/dev/sdXY. Думаю, не требуется пояснять, почему это ненадёжно.

Все остальные способы указания устройства (resume=/dev/disk/by-label/foo, например) должны обрабатываться в initramfs. А именно: юзерспейс должен распарсить этот параметр, получить major:minor требуемого устройства и записать их в /sys/power/resume. При этом всё, что требуется от юзерспейса — это не писать в блочные устройства до попытки восстановления.

Раньше в initramfs инитом традиционно был шелл-скрипт, из которого весь этот парсинг и производился. А теперь имеется systemd, который претендует также и на роль инита в initramfs, но этой фичи там доселе не было. Теперь есть.

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

уж слишком оно велико

oh stop it, you.jpg

anonymous ()

rsyslog (являющийся на сегодняшний день наиболее широкоиспользуемой реализацией rsyslog) их больше не использует, и вместо этого вытягивает из журнала в свой собственный.

Я единственный здесь, кто ни хрена не понял смысла этой фразы?

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

Так никто же не говорит, что в initramfs нужно пихать всё содержимое пакета systemd (все ~80 бинарников,включая logind и ресолвер).

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

Зато это явно говорит, что сисямдэ для такого использования ещё не готово, если там даже такой элементарной вещи нет.

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